pixelarraythirdparty 1.0.6__py3-none-any.whl → 1.0.8__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pixelarraythirdparty/__init__.py +2 -1
- pixelarraythirdparty/client.py +18 -29
- pixelarraythirdparty/cron/cron.py +37 -37
- pixelarraythirdparty/filestorage/__init__.py +6 -0
- pixelarraythirdparty/filestorage/filestorage.py +286 -0
- pixelarraythirdparty/order/order.py +73 -393
- pixelarraythirdparty/product/product.py +46 -47
- pixelarraythirdparty/user/user.py +44 -44
- {pixelarraythirdparty-1.0.6.dist-info → pixelarraythirdparty-1.0.8.dist-info}/METADATA +1 -1
- pixelarraythirdparty-1.0.8.dist-info/RECORD +17 -0
- pixelarraythirdparty-1.0.6.dist-info/RECORD +0 -15
- {pixelarraythirdparty-1.0.6.dist-info → pixelarraythirdparty-1.0.8.dist-info}/WHEEL +0 -0
- {pixelarraythirdparty-1.0.6.dist-info → pixelarraythirdparty-1.0.8.dist-info}/licenses/LICENSE +0 -0
- {pixelarraythirdparty-1.0.6.dist-info → pixelarraythirdparty-1.0.8.dist-info}/top_level.txt +0 -0
|
@@ -1,341 +1,4 @@
|
|
|
1
|
-
from pixelarraythirdparty.client import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
class OrderManager(Client):
|
|
5
|
-
def create_order(
|
|
6
|
-
self,
|
|
7
|
-
product_id: str,
|
|
8
|
-
body: str = None,
|
|
9
|
-
remark: str = None,
|
|
10
|
-
payment_channel: str = "WECHAT",
|
|
11
|
-
):
|
|
12
|
-
"""
|
|
13
|
-
创建订单
|
|
14
|
-
|
|
15
|
-
功能说明:
|
|
16
|
-
根据产品ID创建新的订单,系统会自动生成订单号,获取产品价格信息,并创建对应的支付订单。
|
|
17
|
-
|
|
18
|
-
输入参数:
|
|
19
|
-
product_id (str): 产品ID,必填,用于获取产品信息和价格
|
|
20
|
-
body (str, 可选): 商品描述,如果不提供则使用产品名称
|
|
21
|
-
remark (str, 可选): 订单备注信息
|
|
22
|
-
payment_channel (str, 可选): 支付渠道,默认为"WECHAT"(微信支付)
|
|
23
|
-
|
|
24
|
-
返回字段:
|
|
25
|
-
data (dict): 订单信息
|
|
26
|
-
- id (int): 订单ID
|
|
27
|
-
- out_trade_no (str): 商户订单号,格式为"ORD_时间戳_随机字符串"
|
|
28
|
-
- payment_status (str): 支付状态,初始为"PENDING"(待支付)
|
|
29
|
-
- payment_channel (str): 支付渠道
|
|
30
|
-
- product_id (str): 产品ID
|
|
31
|
-
- amount (str): 订单金额(元),格式为"99.00"
|
|
32
|
-
- total_fee (int): 订单金额(分),用于支付接口
|
|
33
|
-
- body (str): 商品描述
|
|
34
|
-
- remark (str): 订单备注
|
|
35
|
-
- created_at (str): 订单创建时间
|
|
36
|
-
- updated_at (str): 订单更新时间
|
|
37
|
-
success (bool): 操作是否成功
|
|
38
|
-
|
|
39
|
-
异常情况:
|
|
40
|
-
- 产品ID为空:返回错误信息"产品ID不能为空"
|
|
41
|
-
- 产品不存在:返回错误信息"产品不存在"
|
|
42
|
-
- 产品价格无效:返回错误信息"产品价格无效"
|
|
43
|
-
- 创建订单失败:返回错误信息"创建订单失败"
|
|
44
|
-
"""
|
|
45
|
-
data = {
|
|
46
|
-
"product_id": product_id,
|
|
47
|
-
"body": body,
|
|
48
|
-
"remark": remark,
|
|
49
|
-
"payment_channel": payment_channel,
|
|
50
|
-
}
|
|
51
|
-
data, success = self._request("POST", "/api/orders/create", json=data)
|
|
52
|
-
if not success:
|
|
53
|
-
return {}, False
|
|
54
|
-
return data, True
|
|
55
|
-
|
|
56
|
-
def list_order(
|
|
57
|
-
self,
|
|
58
|
-
page: int = 1,
|
|
59
|
-
page_size: int = 10,
|
|
60
|
-
payment_status: str = None,
|
|
61
|
-
out_trade_no: str = None,
|
|
62
|
-
):
|
|
63
|
-
"""
|
|
64
|
-
获取订单列表
|
|
65
|
-
|
|
66
|
-
功能说明:
|
|
67
|
-
分页查询订单列表,支持按支付状态和订单号进行筛选。
|
|
68
|
-
|
|
69
|
-
输入参数:
|
|
70
|
-
page (int, 可选): 页码,默认为1,最小值为1
|
|
71
|
-
page_size (int, 可选): 每页数量,默认为10,范围为1-1000
|
|
72
|
-
payment_status (str, 可选): 支付状态筛选,可选值:
|
|
73
|
-
- "PENDING": 待支付
|
|
74
|
-
- "PAID": 已支付
|
|
75
|
-
- "REFUNDED": 已退款
|
|
76
|
-
- "CANCELLED": 已取消
|
|
77
|
-
out_trade_no (str, 可选): 订单号搜索,支持模糊匹配
|
|
78
|
-
|
|
79
|
-
返回字段:
|
|
80
|
-
data (dict): 订单列表信息
|
|
81
|
-
- orders (list): 订单列表
|
|
82
|
-
- id (int): 订单ID
|
|
83
|
-
- out_trade_no (str): 商户订单号
|
|
84
|
-
- payment_status (str): 支付状态
|
|
85
|
-
- payment_channel (str): 支付渠道
|
|
86
|
-
- amount (str): 订单金额(元)
|
|
87
|
-
- total_fee (int): 订单金额(分)
|
|
88
|
-
- created_at (str): 订单创建时间
|
|
89
|
-
- updated_at (str): 订单更新时间
|
|
90
|
-
- total (int): 总订单数量
|
|
91
|
-
- page (int): 当前页码
|
|
92
|
-
- page_size (int): 每页数量
|
|
93
|
-
success (bool): 操作是否成功
|
|
94
|
-
|
|
95
|
-
异常情况:
|
|
96
|
-
- 获取订单列表失败:返回错误信息"获取订单列表失败"
|
|
97
|
-
"""
|
|
98
|
-
params = {
|
|
99
|
-
"page": page,
|
|
100
|
-
"page_size": page_size,
|
|
101
|
-
"payment_status": payment_status,
|
|
102
|
-
"out_trade_no": out_trade_no,
|
|
103
|
-
}
|
|
104
|
-
data, success = self._request("GET", "/api/orders/list", params=params)
|
|
105
|
-
if not success:
|
|
106
|
-
return {}, False
|
|
107
|
-
return data, True
|
|
108
|
-
|
|
109
|
-
def get_order_detail(self, out_trade_no: str):
|
|
110
|
-
"""
|
|
111
|
-
获取订单详情
|
|
112
|
-
|
|
113
|
-
功能说明:
|
|
114
|
-
根据订单号获取订单的详细信息,包括支付状态、交易信息等。
|
|
115
|
-
|
|
116
|
-
输入参数:
|
|
117
|
-
out_trade_no (str): 商户订单号,必填
|
|
118
|
-
|
|
119
|
-
返回字段:
|
|
120
|
-
data (dict): 订单详细信息
|
|
121
|
-
- id (int): 订单ID
|
|
122
|
-
- out_trade_no (str): 商户订单号
|
|
123
|
-
- payment_status (str): 支付状态
|
|
124
|
-
- product_id (str): 产品ID
|
|
125
|
-
- amount (str): 订单金额(元)
|
|
126
|
-
- total_fee (int): 订单金额(分)
|
|
127
|
-
- body (str): 商品描述
|
|
128
|
-
- transaction_id (str): 微信交易号(支付成功后才有)
|
|
129
|
-
- openid (str): 用户openid(支付成功后才有)
|
|
130
|
-
- trade_type (str): 交易类型(支付成功后才有)
|
|
131
|
-
- bank_type (str): 银行类型(支付成功后才有)
|
|
132
|
-
- fee_type (str): 货币类型,默认为"CNY"
|
|
133
|
-
- is_subscribe (str): 是否关注公众号(支付成功后才有)
|
|
134
|
-
- time_end (str): 支付完成时间(支付成功后才有)
|
|
135
|
-
- created_at (str): 订单创建时间
|
|
136
|
-
- updated_at (str): 订单更新时间
|
|
137
|
-
- paid_at (str): 支付时间(支付成功后才有)
|
|
138
|
-
- remark (str): 订单备注
|
|
139
|
-
success (bool): 操作是否成功
|
|
140
|
-
|
|
141
|
-
异常情况:
|
|
142
|
-
- 订单不存在:返回错误信息"订单不存在"
|
|
143
|
-
- 获取订单详情失败:返回错误信息"获取订单详情失败"
|
|
144
|
-
"""
|
|
145
|
-
data, success = self._request("GET", f"/api/orders/{out_trade_no}")
|
|
146
|
-
if not success:
|
|
147
|
-
return {}, False
|
|
148
|
-
return data, True
|
|
149
|
-
|
|
150
|
-
def update_order_status(
|
|
151
|
-
self,
|
|
152
|
-
out_trade_no: str,
|
|
153
|
-
payment_status: str,
|
|
154
|
-
):
|
|
155
|
-
"""
|
|
156
|
-
更新订单状态
|
|
157
|
-
|
|
158
|
-
功能说明:
|
|
159
|
-
更新指定订单的支付状态,仅支持状态修改,其他字段不可修改。
|
|
160
|
-
|
|
161
|
-
输入参数:
|
|
162
|
-
out_trade_no (str): 商户订单号,必填
|
|
163
|
-
payment_status (str): 支付状态,必填,可选值:
|
|
164
|
-
- "PENDING": 待支付
|
|
165
|
-
- "PAID": 已支付
|
|
166
|
-
- "REFUNDED": 已退款
|
|
167
|
-
- "CANCELLED": 已取消
|
|
168
|
-
|
|
169
|
-
返回字段:
|
|
170
|
-
data (dict): 更新后的订单信息
|
|
171
|
-
- id (int): 订单ID
|
|
172
|
-
- out_trade_no (str): 商户订单号
|
|
173
|
-
- payment_status (str): 更新后的支付状态
|
|
174
|
-
- transaction_id (str): 微信交易号(如果已支付)
|
|
175
|
-
- openid (str): 用户openid(如果已支付)
|
|
176
|
-
- trade_type (str): 交易类型(如果已支付)
|
|
177
|
-
- bank_type (str): 银行类型(如果已支付)
|
|
178
|
-
- fee_type (str): 货币类型
|
|
179
|
-
- is_subscribe (str): 是否关注公众号(如果已支付)
|
|
180
|
-
- time_end (str): 支付完成时间(如果已支付)
|
|
181
|
-
- paid_at (str): 支付时间(如果已支付)
|
|
182
|
-
- updated_at (str): 订单更新时间
|
|
183
|
-
- remark (str): 订单备注
|
|
184
|
-
success (bool): 操作是否成功
|
|
185
|
-
|
|
186
|
-
异常情况:
|
|
187
|
-
- 支付状态为空:返回错误信息"支付状态不能为空"
|
|
188
|
-
- 订单不存在:返回错误信息"订单不存在"
|
|
189
|
-
- 更新订单状态失败:返回错误信息"更新订单状态失败"
|
|
190
|
-
"""
|
|
191
|
-
data = {
|
|
192
|
-
"payment_status": payment_status,
|
|
193
|
-
}
|
|
194
|
-
data, success = self._request(
|
|
195
|
-
"PUT", f"/api/orders/{out_trade_no}/status", json=data
|
|
196
|
-
)
|
|
197
|
-
if not success:
|
|
198
|
-
return {}, False
|
|
199
|
-
return data, True
|
|
200
|
-
|
|
201
|
-
def delete_order(self, out_trade_no: str):
|
|
202
|
-
"""
|
|
203
|
-
删除订单
|
|
204
|
-
|
|
205
|
-
功能说明:
|
|
206
|
-
根据订单号删除指定的订单记录。
|
|
207
|
-
|
|
208
|
-
输入参数:
|
|
209
|
-
out_trade_no (str): 商户订单号,必填
|
|
210
|
-
|
|
211
|
-
返回字段:
|
|
212
|
-
data (None): 删除成功时返回None
|
|
213
|
-
success (bool): 操作是否成功
|
|
214
|
-
|
|
215
|
-
异常情况:
|
|
216
|
-
- 订单不存在:返回错误信息"订单不存在"
|
|
217
|
-
- 删除订单失败:返回错误信息"删除订单失败"
|
|
218
|
-
"""
|
|
219
|
-
data, success = self._request("DELETE", f"/api/orders/{out_trade_no}")
|
|
220
|
-
if not success:
|
|
221
|
-
return {}, False
|
|
222
|
-
return data, True
|
|
223
|
-
|
|
224
|
-
def get_order_stats(self):
|
|
225
|
-
"""
|
|
226
|
-
获取订单统计信息
|
|
227
|
-
|
|
228
|
-
功能说明:
|
|
229
|
-
获取订单的统计汇总信息,包括总订单数、各状态订单数量、总金额等。
|
|
230
|
-
|
|
231
|
-
输入参数:
|
|
232
|
-
无
|
|
233
|
-
|
|
234
|
-
返回字段:
|
|
235
|
-
data (dict): 订单统计信息
|
|
236
|
-
- total_orders (int): 总订单数量
|
|
237
|
-
- pending_orders (int): 待支付订单数量
|
|
238
|
-
- paid_orders (int): 已支付订单数量
|
|
239
|
-
- refunded_orders (int): 已退款订单数量
|
|
240
|
-
- total_amount (float): 总订单金额(元)
|
|
241
|
-
- total_fee (int): 总订单金额(分)
|
|
242
|
-
success (bool): 操作是否成功
|
|
243
|
-
|
|
244
|
-
异常情况:
|
|
245
|
-
- 获取订单统计信息失败:返回错误信息"获取订单统计信息失败"
|
|
246
|
-
"""
|
|
247
|
-
data, success = self._request("GET", "/api/orders/stats/summary")
|
|
248
|
-
if not success:
|
|
249
|
-
return {}, False
|
|
250
|
-
return data, True
|
|
251
|
-
|
|
252
|
-
def generate_qr_code(
|
|
253
|
-
self,
|
|
254
|
-
out_trade_no: str,
|
|
255
|
-
payment_channel: str = "WECHAT",
|
|
256
|
-
):
|
|
257
|
-
"""
|
|
258
|
-
生成支付二维码
|
|
259
|
-
|
|
260
|
-
功能说明:
|
|
261
|
-
为指定订单生成支付二维码,支持微信支付和支付宝。二维码会自动上传到OSS并返回访问URL。
|
|
262
|
-
|
|
263
|
-
输入参数:
|
|
264
|
-
out_trade_no (str): 商户订单号,必填
|
|
265
|
-
payment_channel (str, 可选): 支付渠道,默认为"WECHAT",可选值:
|
|
266
|
-
- "WECHAT": 微信支付
|
|
267
|
-
- "ALIPAY": 支付宝(暂未实现)
|
|
268
|
-
|
|
269
|
-
返回字段:
|
|
270
|
-
data (dict): 二维码信息
|
|
271
|
-
- qr_code_url (str): 二维码图片URL,可直接用于显示
|
|
272
|
-
- out_trade_no (str): 商户订单号
|
|
273
|
-
success (bool): 操作是否成功
|
|
274
|
-
|
|
275
|
-
异常情况:
|
|
276
|
-
- 订单号为空:返回错误信息"订单号不能为空"
|
|
277
|
-
- 订单不存在:返回错误信息"订单不存在"
|
|
278
|
-
- 不支持的支付渠道:抛出ValueError异常
|
|
279
|
-
- 生成支付二维码失败:返回错误信息"生成支付二维码失败"
|
|
280
|
-
"""
|
|
281
|
-
if payment_channel == "WECHAT":
|
|
282
|
-
url = "/api/orders/wx_pay/generate_qr_code"
|
|
283
|
-
elif payment_channel == "ALIPAY":
|
|
284
|
-
url = "/api/orders/ali_pay/generate_qr_code"
|
|
285
|
-
else:
|
|
286
|
-
raise ValueError("Invalid payment channel")
|
|
287
|
-
data, success = self._request(
|
|
288
|
-
"POST",
|
|
289
|
-
url,
|
|
290
|
-
json={
|
|
291
|
-
"out_trade_no": out_trade_no,
|
|
292
|
-
},
|
|
293
|
-
)
|
|
294
|
-
if not success:
|
|
295
|
-
return {}, False
|
|
296
|
-
return data, True
|
|
297
|
-
|
|
298
|
-
def refund_order(self, out_trade_no: str, payment_channel: str = "WECHAT"):
|
|
299
|
-
"""
|
|
300
|
-
申请订单退款
|
|
301
|
-
|
|
302
|
-
功能说明:
|
|
303
|
-
为指定订单申请退款,支持微信支付和支付宝。退款申请提交后,系统会处理退款并更新订单状态。
|
|
304
|
-
|
|
305
|
-
输入参数:
|
|
306
|
-
out_trade_no (str): 商户订单号,必填
|
|
307
|
-
payment_channel (str, 可选): 支付渠道,默认为"WECHAT",可选值:
|
|
308
|
-
- "WECHAT": 微信支付
|
|
309
|
-
- "ALIPAY": 支付宝(暂未实现)
|
|
310
|
-
|
|
311
|
-
返回字段:
|
|
312
|
-
data (dict): 退款信息
|
|
313
|
-
- out_refund_no (str): 退款单号,格式为"REFUND_订单号_时间戳"
|
|
314
|
-
- out_trade_no (str): 商户订单号
|
|
315
|
-
- total_fee (int): 退款金额(分)
|
|
316
|
-
success (bool): 操作是否成功
|
|
317
|
-
|
|
318
|
-
异常情况:
|
|
319
|
-
- 订单号为空:返回错误信息"订单号不能为空"
|
|
320
|
-
- 订单不存在:返回错误信息"订单不存在"
|
|
321
|
-
- 订单状态不允许退款:返回错误信息"订单状态不允许退款"
|
|
322
|
-
- 不支持的支付渠道:抛出ValueError异常
|
|
323
|
-
- 退款申请失败:返回错误信息"退款申请失败"
|
|
324
|
-
"""
|
|
325
|
-
if payment_channel == "WECHAT":
|
|
326
|
-
url = "/api/orders/wx_pay/refund"
|
|
327
|
-
elif payment_channel == "ALIPAY":
|
|
328
|
-
url = "/api/orders/ali_pay/refund"
|
|
329
|
-
else:
|
|
330
|
-
raise ValueError("Invalid payment channel")
|
|
331
|
-
data, success = self._request(
|
|
332
|
-
"POST",
|
|
333
|
-
url,
|
|
334
|
-
json={"out_trade_no": out_trade_no},
|
|
335
|
-
)
|
|
336
|
-
if not success:
|
|
337
|
-
return {}, False
|
|
338
|
-
return data, True
|
|
1
|
+
from pixelarraythirdparty.client import AsyncClient
|
|
339
2
|
|
|
340
3
|
|
|
341
4
|
class OrderManagerAsync(AsyncClient):
|
|
@@ -348,16 +11,16 @@ class OrderManagerAsync(AsyncClient):
|
|
|
348
11
|
):
|
|
349
12
|
"""
|
|
350
13
|
创建订单(异步版本)
|
|
351
|
-
|
|
14
|
+
|
|
352
15
|
功能说明:
|
|
353
16
|
根据产品ID创建新的订单,系统会自动生成订单号,获取产品价格信息,并创建对应的支付订单。
|
|
354
|
-
|
|
17
|
+
|
|
355
18
|
输入参数:
|
|
356
19
|
product_id (str): 产品ID,必填,用于获取产品信息和价格
|
|
357
20
|
body (str, 可选): 商品描述,如果不提供则使用产品名称
|
|
358
21
|
remark (str, 可选): 订单备注信息
|
|
359
22
|
payment_channel (str, 可选): 支付渠道,默认为"WECHAT"(微信支付)
|
|
360
|
-
|
|
23
|
+
|
|
361
24
|
返回字段:
|
|
362
25
|
data (dict): 订单信息
|
|
363
26
|
- id (int): 订单ID
|
|
@@ -372,7 +35,7 @@ class OrderManagerAsync(AsyncClient):
|
|
|
372
35
|
- created_at (str): 订单创建时间
|
|
373
36
|
- updated_at (str): 订单更新时间
|
|
374
37
|
success (bool): 操作是否成功
|
|
375
|
-
|
|
38
|
+
|
|
376
39
|
异常情况:
|
|
377
40
|
- 产品ID为空:返回错误信息"产品ID不能为空"
|
|
378
41
|
- 产品不存在:返回错误信息"产品不存在"
|
|
@@ -399,10 +62,10 @@ class OrderManagerAsync(AsyncClient):
|
|
|
399
62
|
):
|
|
400
63
|
"""
|
|
401
64
|
获取订单列表(异步版本)
|
|
402
|
-
|
|
65
|
+
|
|
403
66
|
功能说明:
|
|
404
67
|
分页查询订单列表,支持按支付状态和订单号进行筛选。
|
|
405
|
-
|
|
68
|
+
|
|
406
69
|
输入参数:
|
|
407
70
|
page (int, 可选): 页码,默认为1,最小值为1
|
|
408
71
|
page_size (int, 可选): 每页数量,默认为10,范围为1-1000
|
|
@@ -412,7 +75,7 @@ class OrderManagerAsync(AsyncClient):
|
|
|
412
75
|
- "REFUNDED": 已退款
|
|
413
76
|
- "CANCELLED": 已取消
|
|
414
77
|
out_trade_no (str, 可选): 订单号搜索,支持模糊匹配
|
|
415
|
-
|
|
78
|
+
|
|
416
79
|
返回字段:
|
|
417
80
|
data (dict): 订单列表信息
|
|
418
81
|
- orders (list): 订单列表
|
|
@@ -428,16 +91,19 @@ class OrderManagerAsync(AsyncClient):
|
|
|
428
91
|
- page (int): 当前页码
|
|
429
92
|
- page_size (int): 每页数量
|
|
430
93
|
success (bool): 操作是否成功
|
|
431
|
-
|
|
94
|
+
|
|
432
95
|
异常情况:
|
|
433
96
|
- 获取订单列表失败:返回错误信息"获取订单列表失败"
|
|
434
97
|
"""
|
|
435
98
|
params = {
|
|
436
99
|
"page": page,
|
|
437
100
|
"page_size": page_size,
|
|
438
|
-
"payment_status": payment_status,
|
|
439
|
-
"out_trade_no": out_trade_no,
|
|
440
101
|
}
|
|
102
|
+
# 只添加非None的参数
|
|
103
|
+
if payment_status is not None:
|
|
104
|
+
params["payment_status"] = payment_status
|
|
105
|
+
if out_trade_no is not None:
|
|
106
|
+
params["out_trade_no"] = out_trade_no
|
|
441
107
|
data, success = await self._request("GET", "/api/orders/list", params=params)
|
|
442
108
|
if not success:
|
|
443
109
|
return {}, False
|
|
@@ -446,13 +112,13 @@ class OrderManagerAsync(AsyncClient):
|
|
|
446
112
|
async def get_order_detail(self, out_trade_no: str):
|
|
447
113
|
"""
|
|
448
114
|
获取订单详情(异步版本)
|
|
449
|
-
|
|
115
|
+
|
|
450
116
|
功能说明:
|
|
451
117
|
根据订单号获取订单的详细信息,包括支付状态、交易信息等。
|
|
452
|
-
|
|
118
|
+
|
|
453
119
|
输入参数:
|
|
454
120
|
out_trade_no (str): 商户订单号,必填
|
|
455
|
-
|
|
121
|
+
|
|
456
122
|
返回字段:
|
|
457
123
|
data (dict): 订单详细信息
|
|
458
124
|
- id (int): 订单ID
|
|
@@ -474,7 +140,7 @@ class OrderManagerAsync(AsyncClient):
|
|
|
474
140
|
- paid_at (str): 支付时间(支付成功后才有)
|
|
475
141
|
- remark (str): 订单备注
|
|
476
142
|
success (bool): 操作是否成功
|
|
477
|
-
|
|
143
|
+
|
|
478
144
|
异常情况:
|
|
479
145
|
- 订单不存在:返回错误信息"订单不存在"
|
|
480
146
|
- 获取订单详情失败:返回错误信息"获取订单详情失败"
|
|
@@ -487,10 +153,10 @@ class OrderManagerAsync(AsyncClient):
|
|
|
487
153
|
async def update_order_status(self, out_trade_no: str, payment_status: str):
|
|
488
154
|
"""
|
|
489
155
|
更新订单状态(异步版本)
|
|
490
|
-
|
|
156
|
+
|
|
491
157
|
功能说明:
|
|
492
158
|
更新指定订单的支付状态,仅支持状态修改,其他字段不可修改。
|
|
493
|
-
|
|
159
|
+
|
|
494
160
|
输入参数:
|
|
495
161
|
out_trade_no (str): 商户订单号,必填
|
|
496
162
|
payment_status (str): 支付状态,必填,可选值:
|
|
@@ -498,7 +164,7 @@ class OrderManagerAsync(AsyncClient):
|
|
|
498
164
|
- "PAID": 已支付
|
|
499
165
|
- "REFUNDED": 已退款
|
|
500
166
|
- "CANCELLED": 已取消
|
|
501
|
-
|
|
167
|
+
|
|
502
168
|
返回字段:
|
|
503
169
|
data (dict): 更新后的订单信息
|
|
504
170
|
- id (int): 订单ID
|
|
@@ -515,7 +181,7 @@ class OrderManagerAsync(AsyncClient):
|
|
|
515
181
|
- updated_at (str): 订单更新时间
|
|
516
182
|
- remark (str): 订单备注
|
|
517
183
|
success (bool): 操作是否成功
|
|
518
|
-
|
|
184
|
+
|
|
519
185
|
异常情况:
|
|
520
186
|
- 支付状态为空:返回错误信息"支付状态不能为空"
|
|
521
187
|
- 订单不存在:返回错误信息"订单不存在"
|
|
@@ -532,17 +198,17 @@ class OrderManagerAsync(AsyncClient):
|
|
|
532
198
|
async def delete_order(self, out_trade_no: str):
|
|
533
199
|
"""
|
|
534
200
|
删除订单(异步版本)
|
|
535
|
-
|
|
201
|
+
|
|
536
202
|
功能说明:
|
|
537
203
|
根据订单号删除指定的订单记录。
|
|
538
|
-
|
|
204
|
+
|
|
539
205
|
输入参数:
|
|
540
206
|
out_trade_no (str): 商户订单号,必填
|
|
541
|
-
|
|
207
|
+
|
|
542
208
|
返回字段:
|
|
543
209
|
data (None): 删除成功时返回None
|
|
544
210
|
success (bool): 操作是否成功
|
|
545
|
-
|
|
211
|
+
|
|
546
212
|
异常情况:
|
|
547
213
|
- 订单不存在:返回错误信息"订单不存在"
|
|
548
214
|
- 删除订单失败:返回错误信息"删除订单失败"
|
|
@@ -555,13 +221,13 @@ class OrderManagerAsync(AsyncClient):
|
|
|
555
221
|
async def get_order_stats(self):
|
|
556
222
|
"""
|
|
557
223
|
获取订单统计信息(异步版本)
|
|
558
|
-
|
|
224
|
+
|
|
559
225
|
功能说明:
|
|
560
226
|
获取订单的统计汇总信息,包括总订单数、各状态订单数量、总金额等。
|
|
561
|
-
|
|
227
|
+
|
|
562
228
|
输入参数:
|
|
563
229
|
无
|
|
564
|
-
|
|
230
|
+
|
|
565
231
|
返回字段:
|
|
566
232
|
data (dict): 订单统计信息
|
|
567
233
|
- total_orders (int): 总订单数量
|
|
@@ -571,7 +237,7 @@ class OrderManagerAsync(AsyncClient):
|
|
|
571
237
|
- total_amount (float): 总订单金额(元)
|
|
572
238
|
- total_fee (int): 总订单金额(分)
|
|
573
239
|
success (bool): 操作是否成功
|
|
574
|
-
|
|
240
|
+
|
|
575
241
|
异常情况:
|
|
576
242
|
- 获取订单统计信息失败:返回错误信息"获取订单统计信息失败"
|
|
577
243
|
"""
|
|
@@ -580,66 +246,72 @@ class OrderManagerAsync(AsyncClient):
|
|
|
580
246
|
return {}, False
|
|
581
247
|
return data, True
|
|
582
248
|
|
|
583
|
-
async def generate_qr_code(
|
|
584
|
-
self, out_trade_no: str, payment_channel: str = "WECHAT"
|
|
585
|
-
):
|
|
249
|
+
async def generate_qr_code(self, out_trade_no: str):
|
|
586
250
|
"""
|
|
587
251
|
生成支付二维码(异步版本)
|
|
588
|
-
|
|
252
|
+
|
|
589
253
|
功能说明:
|
|
590
254
|
为指定订单生成支付二维码,支持微信支付和支付宝。二维码会自动上传到OSS并返回访问URL。
|
|
591
|
-
|
|
255
|
+
如果不指定payment_channel,会自动从订单详情中获取支付渠道。
|
|
256
|
+
|
|
592
257
|
输入参数:
|
|
593
258
|
out_trade_no (str): 商户订单号,必填
|
|
594
|
-
|
|
595
|
-
- "WECHAT": 微信支付
|
|
596
|
-
- "ALIPAY": 支付宝(暂未实现)
|
|
597
|
-
|
|
259
|
+
|
|
598
260
|
返回字段:
|
|
599
261
|
data (dict): 二维码信息
|
|
600
262
|
- qr_code_url (str): 二维码图片URL,可直接用于显示
|
|
601
263
|
- out_trade_no (str): 商户订单号
|
|
602
264
|
success (bool): 操作是否成功
|
|
603
|
-
|
|
265
|
+
|
|
604
266
|
异常情况:
|
|
605
267
|
- 订单号为空:返回错误信息"订单号不能为空"
|
|
606
268
|
- 订单不存在:返回错误信息"订单不存在"
|
|
607
269
|
- 不支持的支付渠道:抛出ValueError异常
|
|
608
270
|
- 生成支付二维码失败:返回错误信息"生成支付二维码失败"
|
|
609
271
|
"""
|
|
610
|
-
|
|
272
|
+
order_detail, success = await self.get_order_detail(out_trade_no)
|
|
273
|
+
print(order_detail)
|
|
274
|
+
if not success:
|
|
275
|
+
return {}, False
|
|
276
|
+
|
|
277
|
+
if order_detail.get("payment_channel") == "WECHAT":
|
|
611
278
|
url = "/api/orders/wx_pay/generate_qr_code"
|
|
612
|
-
|
|
279
|
+
request_data = {
|
|
280
|
+
"out_trade_no": out_trade_no,
|
|
281
|
+
}
|
|
282
|
+
elif order_detail.get("payment_channel") == "ALIPAY":
|
|
613
283
|
url = "/api/orders/ali_pay/generate_qr_code"
|
|
284
|
+
# 支付宝需要total_fee和subject,从已获取的订单详情中提取
|
|
285
|
+
request_data = {
|
|
286
|
+
"out_trade_no": out_trade_no,
|
|
287
|
+
"total_fee": order_detail.get("total_fee"),
|
|
288
|
+
"subject": order_detail.get("body", ""),
|
|
289
|
+
}
|
|
614
290
|
else:
|
|
615
291
|
raise ValueError("Invalid payment channel")
|
|
616
|
-
data, success = await self._request(
|
|
617
|
-
"POST", url, json={"out_trade_no": out_trade_no}
|
|
618
|
-
)
|
|
292
|
+
data, success = await self._request("POST", url, json=request_data)
|
|
619
293
|
if not success:
|
|
620
294
|
return {}, False
|
|
621
295
|
return data, True
|
|
622
296
|
|
|
623
|
-
async def refund_order(self, out_trade_no: str
|
|
297
|
+
async def refund_order(self, out_trade_no: str):
|
|
624
298
|
"""
|
|
625
299
|
申请订单退款(异步版本)
|
|
626
|
-
|
|
300
|
+
|
|
627
301
|
功能说明:
|
|
628
302
|
为指定订单申请退款,支持微信支付和支付宝。退款申请提交后,系统会处理退款并更新订单状态。
|
|
629
|
-
|
|
303
|
+
|
|
630
304
|
输入参数:
|
|
631
305
|
out_trade_no (str): 商户订单号,必填
|
|
632
|
-
|
|
633
|
-
- "WECHAT": 微信支付
|
|
634
|
-
- "ALIPAY": 支付宝(暂未实现)
|
|
635
|
-
|
|
306
|
+
|
|
636
307
|
返回字段:
|
|
637
308
|
data (dict): 退款信息
|
|
638
309
|
- out_refund_no (str): 退款单号,格式为"REFUND_订单号_时间戳"
|
|
639
310
|
- out_trade_no (str): 商户订单号
|
|
640
|
-
- total_fee (int):
|
|
311
|
+
- total_fee (int): 退款金额(分,微信支付)
|
|
312
|
+
- refund_amount (float): 退款金额(元,支付宝)
|
|
641
313
|
success (bool): 操作是否成功
|
|
642
|
-
|
|
314
|
+
|
|
643
315
|
异常情况:
|
|
644
316
|
- 订单号为空:返回错误信息"订单号不能为空"
|
|
645
317
|
- 订单不存在:返回错误信息"订单不存在"
|
|
@@ -647,15 +319,23 @@ class OrderManagerAsync(AsyncClient):
|
|
|
647
319
|
- 不支持的支付渠道:抛出ValueError异常
|
|
648
320
|
- 退款申请失败:返回错误信息"退款申请失败"
|
|
649
321
|
"""
|
|
650
|
-
|
|
322
|
+
order_detail, success = await self.get_order_detail(out_trade_no)
|
|
323
|
+
if not success:
|
|
324
|
+
return {}, False
|
|
325
|
+
|
|
326
|
+
if order_detail.get("payment_channel") == "WECHAT":
|
|
651
327
|
url = "/api/orders/wx_pay/refund"
|
|
652
|
-
|
|
328
|
+
request_data = {"out_trade_no": out_trade_no}
|
|
329
|
+
elif order_detail.get("payment_channel") == "ALIPAY":
|
|
653
330
|
url = "/api/orders/ali_pay/refund"
|
|
331
|
+
request_data = {
|
|
332
|
+
"out_trade_no": out_trade_no,
|
|
333
|
+
"refund_amount": order_detail.get("total_fee") / 100.0,
|
|
334
|
+
"refund_reason": "用户退款",
|
|
335
|
+
}
|
|
654
336
|
else:
|
|
655
337
|
raise ValueError("Invalid payment channel")
|
|
656
|
-
data, success = await self._request(
|
|
657
|
-
"POST", url, json={"out_trade_no": out_trade_no}
|
|
658
|
-
)
|
|
338
|
+
data, success = await self._request("POST", url, json=request_data)
|
|
659
339
|
if not success:
|
|
660
340
|
return {}, False
|
|
661
341
|
return data, True
|