lockbook_server_lib/billing/
app_store_model.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Deserialize, Debug)]
4pub struct VerifyReceiptResponse {
5 pub latest_receipt_info: Option<Vec<ReceiptInfo>>,
6 pub status: u64,
7}
8
9#[derive(Serialize, Deserialize, Debug)]
10pub struct ReceiptInfo {
11 pub app_account_token: String,
12 pub expires_date_ms: String,
13 pub original_transaction_id: String,
14}
15
16#[derive(Serialize, Deserialize, Debug)]
17#[serde(rename_all = "kebab-case")]
18pub struct VerifyReceiptRequest {
19 #[serde(rename = "receipt-data")]
20 pub encoded_receipt: String,
21 pub password: String,
22 pub exclude_old_transactions: bool,
23}
24
25#[derive(Serialize, Deserialize, Debug)]
26#[serde(rename_all = "camelCase")]
27pub struct EncodedNotificationResponseBody {
28 pub signed_payload: String,
29}
30
31#[derive(Serialize, Deserialize, Debug, Clone)]
32#[serde(rename_all = "camelCase")]
33pub struct NotificationResponseBody {
34 pub notification_type: NotificationChange,
35 pub subtype: Option<Subtype>,
36 pub data: NotificationData,
37}
38
39#[derive(Serialize, Deserialize, Debug, Clone)]
40#[serde(rename_all = "camelCase")]
41pub struct NotificationData {
42 pub bundle_id: String,
43 pub environment: Environment,
44 #[serde(rename = "signedRenewalInfo")]
45 pub encoded_renewal_info: Option<String>,
46 #[serde(rename = "signedTransactionInfo")]
47 pub encoded_transaction_info: Option<String>,
48}
49
50#[derive(Serialize, Deserialize, Debug)]
51#[serde(rename_all = "camelCase")]
52pub struct TransactionInfo {
53 pub bundle_id: String,
54 pub product_id: String,
55 pub app_account_token: String,
56 pub expires_date: u64,
57}
58
59#[derive(Serialize, Deserialize, Debug, Clone)]
60pub enum Environment {
61 Sandbox,
62 Production,
63}
64
65#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
66#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
67pub enum Subtype {
68 InitialBuy,
69 Resubscribe,
70 Downgrade,
71 Upgrade,
72 AutoRenewEnabled,
73 AutoRenewDisabled,
74 Voluntary,
75 BillingRetry,
76 PriceIncrease,
77 GracePeriod,
78 BillingRecovery,
79 Pending,
80 Accepted,
81}
82
83#[derive(Serialize, Deserialize, Debug, Clone)]
84#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
85pub enum NotificationChange {
86 ConsumptionRequest,
87 DidChangeRenewalPref,
88 DidChangeRenewalStatus,
89 DidFailToRenew,
90 DidRenew,
91 Expired,
92 GracePeriodExpired,
93 OfferRedeemed,
94 PriceIncrease,
95 Refund,
96 RefundDeclined,
97 RenewalExtended,
98 Revoke,
99 Subscribed,
100 Test,
101}
102
103#[derive(Serialize, Deserialize, Debug, Clone)]
104#[serde(rename_all = "camelCase")]
105pub struct SubsStatusesResponse {
106 pub data: Vec<SubGroupIdentifierItem>,
107}
108
109#[derive(Serialize, Deserialize, Debug, Clone)]
110#[serde(rename_all = "camelCase")]
111pub struct SubGroupIdentifierItem {
112 #[serde(rename = "subscriptionGroupIdentifier")]
113 pub sub_group: String,
114 pub last_transactions: Vec<LastTransactionItem>,
115}
116
117#[derive(Serialize, Deserialize, Debug, Clone)]
118#[serde(rename_all = "camelCase")]
119pub struct LastTransactionItem {
120 pub original_transaction_id: String,
121 pub status: u16,
122 pub signed_transaction_info: String,
123}
124
125#[derive(Serialize, Deserialize, Debug, Clone)]
126#[serde(rename_all = "camelCase")]
127pub struct ErrorBody {
128 pub error_code: u64,
129 pub error_message: String,
130}