Skip to main content

lockbook_server_lib/billing/
app_store_model.rs

1use 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}