1use serde::{Deserialize, Serialize};
3
4use crate::wxmini_api_post;
5
6#[derive(Debug, Serialize, Deserialize)]
7pub struct OrderKey {
8 pub order_number_type: u8,
10 pub transaction_id: Option<String>,
12 pub mchid: Option<String>,
14 pub out_trade_no: Option<String>,
16}
17
18#[derive(Debug, Serialize, Deserialize)]
19pub struct Contact {
20 pub consignor_contact: Option<String>,
22 pub receiver_contact: Option<String>,
24}
25
26#[derive(Debug, Serialize, Deserialize)]
27pub struct ShippingListItem {
28 pub tracking_no: Option<String>,
30 pub express_company: Option<String>,
32 pub item_desc: String,
34 pub contact: Option<Contact>,
36}
37
38#[derive(Debug, Serialize, Deserialize)]
39pub struct Payer {
40 pub openid: String,
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct UploadShippingInfoRequestBody {
46 pub order_key: OrderKey,
48 pub logistics_type: u8,
50 pub delivery_mode: u8,
52 pub is_all_delivered: Option<bool>,
54 pub shipping_list: Vec<ShippingListItem>,
56 pub upload_time: String,
58 pub payer: Payer,
60}
61#[derive(Debug, Serialize, Deserialize)]
62pub struct UploadShippingInfoResponseData {}
63
64wxmini_api_post!(
65 request_upload_shipping_info,
67 "api.weixin.qq.com/wxa/sec/order/upload_shipping_info",
68 (access_token: Option<&str>),
69 &UploadShippingInfoRequestBody,
70 UploadShippingInfoResponseData
71);
72
73#[derive(Debug, Serialize, Deserialize)]
74pub struct SubOrder {
75 pub order_key: OrderKey,
77 pub logistics_type: u8,
79 pub delivery_mode: u8,
81 pub is_all_delivered: Option<bool>,
83 pub shipping_list: Option<Vec<ShippingListItem>>,
85}
86
87#[derive(Debug, Serialize, Deserialize)]
88pub struct UploadCombinedShippingInfoRequestBody {
89 pub order_key: OrderKey,
91 pub sub_orders: Option<Vec<SubOrder>>,
93 pub upload_time: String,
95 pub payer: Payer,
97}
98#[derive(Debug, Serialize, Deserialize)]
99pub struct UploadCombinedShippingInfoResponseData {}
100
101wxmini_api_post!(
102 request_upload_combined_shipping_info,
104 "api.weixin.qq.com/wxa/sec/order/upload_combined_shipping_info",
105 (access_token: Option<&str>),
106 &UploadCombinedShippingInfoRequestBody,
107 UploadCombinedShippingInfoResponseData
108);
109
110#[derive(Debug, Serialize, Deserialize)]
111pub struct GetOrderRequestBody {
112 pub transaction_id: Option<String>,
114 pub merchant_id: Option<String>,
116 pub sub_merchant_id: Option<String>,
118 pub merchant_trade_no: Option<String>,
120}
121
122#[derive(Debug, Serialize, Deserialize)]
123pub struct ShippingListResponseItem {
124 pub tracking_no: Option<String>,
126 pub express_company: Option<String>,
128 pub goods_desc: Option<String>,
130 pub upload_time: Option<i64>,
132 pub contact: Option<Contact>,
134}
135
136#[derive(Debug, Serialize, Deserialize)]
137pub struct Shipping {
138 pub delivery_mode: u8,
140 pub logistics_type: u8,
142 pub finish_shipping: bool,
144 pub goods_desc: String,
146 pub finish_shipping_count: u8,
148 pub shipping_list: Vec<ShippingListResponseItem>,
150}
151
152#[derive(Debug, Serialize, Deserialize)]
153pub struct Order {
154 pub transaction_id: String,
156 pub merchant_id: String,
158 pub sub_merchant_id: String,
160 pub merchant_trade_no: String,
162 pub description: String,
164 pub paid_amount: i64,
166 pub openid: String,
168 pub trade_create_time: i64,
170 pub pay_time: i64,
172 pub order_state: u8,
174 pub in_complaint: bool,
176 pub shipping: Option<Shipping>,
178}
179
180#[derive(Debug, Serialize, Deserialize)]
181pub struct GetOrderResponseData {
182 pub order: Order,
184}
185
186wxmini_api_post!(
187 request_get_order_shipping_status,
189 "api.weixin.qq.com/wxa/sec/order/get_order",
190 (access_token: Option<&str>),
191 &GetOrderRequestBody,
192 GetOrderResponseData
193);
194
195#[derive(Debug, Serialize, Deserialize)]
196pub struct PayTimeRange {
197 pub begin_time: Option<i64>,
199 pub end_time: Option<i64>,
201}
202
203#[derive(Debug, Serialize, Deserialize)]
204pub struct GetOrderListRequestBody {
205 pub pay_time_range: Option<PayTimeRange>,
207 pub order_state: Option<u8>,
209 pub openid: Option<String>,
211 pub last_index: Option<String>,
213 pub page_size: Option<u32>,
215}
216
217#[derive(Debug, Serialize, Deserialize)]
218pub struct GetOrderListResponseData {
219 pub last_index: String,
221 pub has_more: bool,
223 pub order_list: Vec<Order>,
225}
226
227wxmini_api_post!(
228 request_get_order_list,
230 "api.weixin.qq.com/wxa/sec/order/get_order_list",
231 (access_token: Option<&str>),
232 &GetOrderListRequestBody,
233 GetOrderListResponseData
234);
235
236#[derive(Debug, Serialize, Deserialize)]
237pub struct NotifyConfirmReceiveRequestBody {
238 pub transaction_id: Option<String>,
240 pub merchant_id: Option<String>,
242 pub sub_merchant_id: Option<String>,
244 pub merchant_trade_no: Option<String>,
246 pub received_time: i64,
248}
249
250#[derive(Debug, Serialize, Deserialize)]
251pub struct NotifyConfirmReceiveResponseData {}
252
253wxmini_api_post!(
254 request_notify_confirm_receive,
256 "api.weixin.qq.com/wxa/sec/order/notify_confirm_receive",
257 (access_token: Option<&str>),
258 &NotifyConfirmReceiveRequestBody,
259 NotifyConfirmReceiveResponseData
260);
261
262#[derive(Debug, Serialize, Deserialize)]
263pub struct SetMsgJumpPathRequestBody {
264 pub path: String,
266}
267
268#[derive(Debug, Serialize, Deserialize)]
269pub struct SetMsgJumpPathResponseData {}
270
271wxmini_api_post!(
272 request_set_msg_jump_path,
274 "api.weixin.qq.com/wxa/sec/order/set_msg_jump_path",
275 (access_token: Option<&str>),
276 &SetMsgJumpPathRequestBody,
277 SetMsgJumpPathResponseData
278);
279
280#[derive(Debug, Serialize, Deserialize)]
281pub struct IsTradeManagedRequestBody {
282 pub appid: String,
284}
285
286#[derive(Debug, Serialize, Deserialize)]
287pub struct IsTradeManagedResponseData {
288 pub is_trade_managed: Option<bool>,
290}
291
292wxmini_api_post!(
293 request_is_trade_managed,
295 "api.weixin.qq.com/wxa/sec/order/is_trade_managed",
296 (access_token: Option<&str>),
297 &IsTradeManagedRequestBody,
298 IsTradeManagedResponseData
299);
300
301#[derive(Debug, Serialize, Deserialize)]
302pub struct IsTradeManagementConfirmationCompletedRequestBody {
303 pub appid: String,
305}
306
307#[derive(Debug, Serialize, Deserialize)]
308pub struct IsTradeManagementConfirmationCompletedResponseData {
309 pub errcode: i32,
310 pub errmsg: String,
311 pub completed: Option<bool>,
313}
314
315wxmini_api_post!(
316 request_is_trade_management_confirmation_completed,
318 "api.weixin.qq.com/wxa/sec/order/is_trade_management_confirmation_completed",
319 (access_token: Option<&str>),
320 &IsTradeManagementConfirmationCompletedRequestBody,
321 IsTradeManagementConfirmationCompletedResponseData
322);
323
324#[derive(Debug, Serialize, Deserialize)]
325pub struct OpSpecialOrderRequestBody {
326 pub order_id: String,
328 pub r#type: u8,
330 pub delay_to: Option<i64>,
332}
333
334#[derive(Debug, Serialize, Deserialize)]
335pub struct OpSpecialOrderResponseData {}
336
337wxmini_api_post!(
338 request_op_special_order,
340 "api.weixin.qq.com/wxa/sec/order/opspecialorder",
341 (access_token: Option<&str>),
342 &OpSpecialOrderRequestBody,
343 OpSpecialOrderResponseData
344);