chore: initialize tuhui repository
This commit is contained in:
74
backend/app/ysm_sdk/query.py
Normal file
74
backend/app/ysm_sdk/query.py
Normal file
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
"""
|
||||
查询订单模块
|
||||
"""
|
||||
|
||||
import json
|
||||
import asyncio
|
||||
from .api import YsmPayApi
|
||||
|
||||
async def query_order(appid, mch_orderid=None, ysm_orderid=None):
|
||||
"""
|
||||
查询订单状态(异步)
|
||||
|
||||
Args:
|
||||
appid: 支付通道ID
|
||||
mch_orderid: 商户订单号(与ysm_orderid二选一)
|
||||
ysm_orderid: 易收米订单号(与mch_orderid二选一)
|
||||
|
||||
Returns:
|
||||
dict: 订单信息字典,包含状态等信息
|
||||
SUCCESS:支付成功
|
||||
REFUND:转入退款
|
||||
NOTPAY:未支付
|
||||
CLOSED:已关闭
|
||||
"""
|
||||
# 检查参数
|
||||
if not mch_orderid and not ysm_orderid:
|
||||
raise ValueError("商户订单号和易收米订单号必须提供一个")
|
||||
|
||||
# 构造请求数据
|
||||
data = {'appid': appid}
|
||||
|
||||
if mch_orderid:
|
||||
data['mch_orderid'] = mch_orderid
|
||||
elif ysm_orderid:
|
||||
data['ysm_orderid'] = ysm_orderid
|
||||
|
||||
# 请求URL
|
||||
url = 'https://www.yishoumi.cn/u/query' # 订单查询网关
|
||||
|
||||
try:
|
||||
# 发起请求
|
||||
response = await YsmPayApi.http_post(url, json.dumps(data))
|
||||
|
||||
# 解析响应
|
||||
result = json.loads(response) if response else None
|
||||
|
||||
if not result:
|
||||
raise Exception('服务器错误:' + str(response), 500)
|
||||
|
||||
return result
|
||||
except Exception as e:
|
||||
print(f"错误码:{getattr(e, 'code', 0)}, 错误信息:{str(e)}")
|
||||
return None
|
||||
|
||||
async def main():
|
||||
# 示例使用
|
||||
appid = '20********' # 支付通道ID
|
||||
|
||||
# 查询订单
|
||||
order_info = await query_order(
|
||||
appid=appid,
|
||||
mch_orderid='20230510505610', # 商户订单号
|
||||
)
|
||||
|
||||
if order_info:
|
||||
print(f"订单信息: {json.dumps(order_info, ensure_ascii=False, indent=2)}")
|
||||
else:
|
||||
print("查询订单失败")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user