tauri_plugin_iap/
models.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Deserialize, Serialize)]
4#[serde(rename_all = "camelCase")]
5pub struct InitializeRequest {}
6
7#[derive(Debug, Clone, Default, Deserialize, Serialize)]
8#[serde(rename_all = "camelCase")]
9pub struct InitializeResponse {
10 pub success: bool,
11}
12
13#[derive(Debug, Deserialize, Serialize)]
14#[serde(rename_all = "camelCase")]
15pub struct GetProductsRequest {
16 pub product_ids: Vec<String>,
17 #[serde(default = "default_product_type")]
18 pub product_type: String,
19}
20
21fn default_product_type() -> String {
22 "subs".to_string()
23}
24
25#[derive(Debug, Clone, Deserialize, Serialize)]
26#[serde(rename_all = "camelCase")]
27pub struct PricingPhase {
28 pub formatted_price: String,
29 pub price_currency_code: String,
30 pub price_amount_micros: i64,
31 pub billing_period: String,
32 pub billing_cycle_count: i32,
33 pub recurrence_mode: i32,
34}
35
36#[derive(Debug, Clone, Deserialize, Serialize)]
37#[serde(rename_all = "camelCase")]
38pub struct SubscriptionOffer {
39 pub offer_token: String,
40 pub base_plan_id: String,
41 pub offer_id: Option<String>,
42 pub pricing_phases: Vec<PricingPhase>,
43}
44
45#[derive(Debug, Clone, Deserialize, Serialize)]
46#[serde(rename_all = "camelCase")]
47pub struct Product {
48 pub product_id: String,
49 pub title: String,
50 pub description: String,
51 pub product_type: String,
52 #[serde(skip_serializing_if = "Option::is_none")]
53 pub formatted_price: Option<String>,
54 #[serde(skip_serializing_if = "Option::is_none")]
55 pub price_currency_code: Option<String>,
56 #[serde(skip_serializing_if = "Option::is_none")]
57 pub price_amount_micros: Option<i64>,
58 #[serde(skip_serializing_if = "Option::is_none")]
59 pub subscription_offer_details: Option<Vec<SubscriptionOffer>>,
60}
61
62#[derive(Debug, Clone, Deserialize, Serialize)]
63#[serde(rename_all = "camelCase")]
64pub struct GetProductsResponse {
65 pub products: Vec<Product>,
66}
67
68#[derive(Debug, Deserialize, Serialize)]
69#[serde(rename_all = "camelCase")]
70pub struct PurchaseRequest {
71 pub product_id: String,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub offer_token: Option<String>,
74}
75
76#[derive(Debug, Clone, Deserialize, Serialize)]
77#[serde(rename_all = "camelCase")]
78pub struct Purchase {
79 pub order_id: Option<String>,
80 pub package_name: String,
81 pub product_id: String,
82 pub purchase_time: i64,
83 pub purchase_token: String,
84 pub purchase_state: i32,
85 pub is_auto_renewing: bool,
86 pub is_acknowledged: bool,
87 pub original_json: String,
88 pub signature: String,
89}
90
91#[derive(Debug, Clone, Deserialize, Serialize)]
92#[serde(rename_all = "camelCase")]
93pub struct RestorePurchasesResponse {
94 pub purchases: Vec<Purchase>,
95}
96
97#[derive(Debug, Clone, Deserialize, Serialize)]
98#[serde(rename_all = "camelCase")]
99pub struct PurchaseHistoryRecord {
100 pub product_id: String,
101 pub purchase_time: i64,
102 pub purchase_token: String,
103 pub quantity: i32,
104 pub original_json: String,
105 pub signature: String,
106}
107
108#[derive(Debug, Clone, Deserialize, Serialize)]
109#[serde(rename_all = "camelCase")]
110pub struct GetPurchaseHistoryResponse {
111 pub history: Vec<PurchaseHistoryRecord>,
112}
113
114#[derive(Debug, Deserialize, Serialize)]
115#[serde(rename_all = "camelCase")]
116pub struct AcknowledgePurchaseRequest {
117 pub purchase_token: String,
118}
119
120#[derive(Debug, Clone, Deserialize, Serialize)]
121#[serde(rename_all = "camelCase")]
122pub struct AcknowledgePurchaseResponse {
123 pub success: bool,
124}