use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PingRequest {
pub value: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PingResponse {
pub value: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PurchaseRequest {
pub product_id: String,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscriptionPurchaseRequest {
pub product_id: String,
pub base_plan_id: Option<String>,
pub offer_token: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ConsumeRequest {
pub purchase_token: String,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscriptionListRequest {
pub product_ids: Vec<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PurchaseResponse {
pub success: bool,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscriptionPurchaseResponse {
pub success: bool,
pub purchase_token: Option<String>,
pub order_id: Option<String>,
pub is_auto_renewing: Option<bool>,
pub pending: Option<bool>,
pub base_plan_id: Option<String>,
pub offer_token: Option<String>,
pub product_id: Option<String>,
pub price: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Product {
pub description: String,
pub name: String,
pub product_id: String,
pub product_type: String,
pub title: String,
pub price: String,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscriptionProduct {
pub description: String,
pub name: String,
pub product_id: String,
pub product_type: String,
pub title: String,
pub price: String,
pub base_plans: Option<Vec<BasePlan>>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct BasePlan {
pub base_plan_id: String,
pub name: String,
pub price: String,
pub billing_period: String,
pub is_default: Option<bool>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct Purchase {
pub developer_payload: String,
pub order_id: Option<String>,
pub original_json: String,
pub package_name: String,
pub products: Vec<String>,
pub purchase_state: i32,
pub purchase_time: i128,
pub purchase_token: String,
pub quantity: i32,
pub signature: String,
pub is_acknowledged: bool,
pub is_auto_renewing: bool,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct ProductsResponse {
pub products: Vec<Product>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PurchasesResponse {
pub purchases: Vec<Purchase>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SubscriptionListResponse {
pub subscriptions: Vec<SubscriptionProduct>,
}