Skip to main content

cloudreve_sdk_api/models/
vas.rs

1use serde::{Deserialize, Serialize};
2
3/// Payment status
4#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(rename_all = "snake_case")]
6pub enum PaymentStatus {
7    Created,
8    Paid,
9    Fulfilled,
10    FulfillFailed,
11    Canceled,
12}
13
14/// Product type
15#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
16pub enum ProductType {
17    DoNotUse = 0,
18    ShareLink = 1,
19    Group = 2,
20    Storage = 3,
21    Points = 4,
22}
23
24/// Payment provider type
25#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(rename_all = "lowercase")]
27pub enum PaymentProviderType {
28    Stripe,
29    Weixin,
30    Alipay,
31    Points,
32    Custom,
33}
34
35/// Payment information
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct Payment {
38    pub id: String,
39    pub trade_no: String,
40    pub name: String,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub status: Option<PaymentStatus>,
43    pub qyt: i32,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub price_unit: Option<i64>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub price_id: Option<String>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub price_one_unit: Option<i64>,
50    pub created_at: String,
51    pub updated_at: String,
52    pub product_type: i32,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub ticket: Option<String>,
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub price_mark: Option<String>,
57}
58
59/// Payment setting
60#[derive(Debug, Clone, Serialize, Deserialize)]
61pub struct PaymentSetting {
62    pub currency_code: String,
63    pub currency_mark: String,
64    pub currency_unit: i32,
65    pub providers: Vec<PaymentProvider>,
66}
67
68/// Payment provider
69#[derive(Debug, Clone, Serialize, Deserialize)]
70pub struct PaymentProvider {
71    pub id: String,
72    pub name: String,
73    #[serde(rename = "type")]
74    pub provider_type: String,
75    #[serde(skip_serializing_if = "Option::is_none")]
76    pub secret_key: Option<String>,
77    #[serde(skip_serializing_if = "Option::is_none")]
78    pub app_id: Option<String>,
79    #[serde(skip_serializing_if = "Option::is_none")]
80    pub public_key: Option<String>,
81    #[serde(skip_serializing_if = "Option::is_none")]
82    pub merchant_id: Option<String>,
83    #[serde(skip_serializing_if = "Option::is_none")]
84    pub certificate_serial: Option<String>,
85    #[serde(skip_serializing_if = "Option::is_none")]
86    pub api_private_key: Option<String>,
87    #[serde(skip_serializing_if = "Option::is_none")]
88    pub endpoint: Option<String>,
89}
90
91/// Product parameter
92#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct ProductParameter {
94    #[serde(rename = "type")]
95    pub product_type: ProductType,
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub share_link_id: Option<String>,
98    #[serde(skip_serializing_if = "Option::is_none")]
99    pub sku_id: Option<String>,
100}
101
102/// Create payment args
103#[derive(Debug, Clone, Serialize, Deserialize)]
104pub struct CreatePaymentArgs {
105    pub product: ProductParameter,
106    pub quantity: i32,
107    #[serde(skip_serializing_if = "Option::is_none")]
108    pub provider_id: Option<String>,
109    #[serde(skip_serializing_if = "Option::is_none")]
110    pub email: Option<String>,
111    #[serde(skip_serializing_if = "Option::is_none")]
112    pub language: Option<String>,
113}
114
115/// Payment request
116#[derive(Debug, Clone, Serialize, Deserialize)]
117pub struct PaymentRequest {
118    pub payment_needed: bool,
119    #[serde(skip_serializing_if = "Option::is_none")]
120    pub url: Option<String>,
121    #[serde(skip_serializing_if = "Option::is_none")]
122    pub qr_code_preferred: Option<bool>,
123}
124
125/// Create payment response
126#[derive(Debug, Clone, Serialize, Deserialize)]
127pub struct CreatePaymentResponse {
128    pub payment: Payment,
129    pub request: PaymentRequest,
130}
131
132/// Storage product
133#[derive(Debug, Clone, Serialize, Deserialize)]
134pub struct StorageProduct {
135    pub id: String,
136    pub name: String,
137    pub size: i64,
138    pub time: i64,
139    pub price: i64,
140    #[serde(skip_serializing_if = "Option::is_none")]
141    pub chip: Option<String>,
142    #[serde(skip_serializing_if = "Option::is_none")]
143    pub points: Option<i32>,
144}
145
146/// Group SKU
147#[derive(Debug, Clone, Serialize, Deserialize)]
148pub struct GroupSku {
149    pub id: String,
150    pub name: String,
151    pub price: i64,
152    pub points: i32,
153    pub time: i64,
154    pub chip: String,
155    pub des: Vec<String>,
156}
157
158/// Gift code
159#[derive(Debug, Clone, Serialize, Deserialize)]
160pub struct GiftCode {
161    pub id: i32,
162    pub created_at: String,
163    pub updated_at: String,
164    pub code: String,
165    pub used: bool,
166    pub qyt: i32,
167    pub used_by: i32,
168    pub product_props: ProductParameter,
169    #[serde(skip_serializing_if = "Option::is_none")]
170    pub user_hash_id: Option<String>,
171}
172
173/// Generate redeems service
174#[derive(Debug, Clone, Serialize, Deserialize)]
175pub struct GenerateRedeemsService {
176    pub num: i32,
177    pub product: ProductParameter,
178    pub qyt: i32,
179}
180
181/// Delete gift code service
182#[derive(Debug, Clone, Serialize, Deserialize)]
183pub struct DeleteGiftCodeService {
184    pub id: i32,
185}
186