Files
tuhui/backend/app/ysm_sdk/query.py
2026-03-08 19:28:32 +08:00

74 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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())