update pay ui

This commit is contained in:
2025-12-13 10:31:46 +08:00
parent 1949d9b922
commit 5e8c2400a3
4 changed files with 253 additions and 27 deletions

View File

@@ -228,6 +228,78 @@ class AlipayPay:
'error': str(e)
}
def create_wap_pay_url(self, out_trade_no, total_amount, subject, body=None, timeout_express='30m', quit_url=None):
"""
创建手机网站支付URL (H5支付可调起手机支付宝APP)
Args:
out_trade_no: 商户订单号
total_amount: 订单总金额(元,精确到小数点后两位)
subject: 订单标题
body: 订单描述(可选)
timeout_express: 订单超时时间默认30分钟
quit_url: 用户付款中途退出返回商户网站的地址(可选)
Returns:
dict: 包含支付URL的响应
"""
try:
# 金额格式化为两位小数(支付宝要求)
formatted_amount = f"{float(total_amount):.2f}"
# 业务参数
biz_content = {
'out_trade_no': out_trade_no,
'total_amount': formatted_amount,
'subject': subject,
'product_code': 'QUICK_WAP_WAY', # 手机网站支付固定值
'timeout_express': timeout_express,
}
if body:
biz_content['body'] = body
if quit_url:
biz_content['quit_url'] = quit_url
# 公共请求参数
params = {
'app_id': self.app_id,
'method': 'alipay.trade.wap.pay', # 手机网站支付接口
'format': 'json',
'charset': self.charset,
'sign_type': self.sign_type,
'timestamp': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'version': '1.0',
'notify_url': self.notify_url,
'return_url': self.return_url,
'biz_content': json.dumps(biz_content, ensure_ascii=False),
}
# 生成签名
sign_content = self._get_sign_content(params)
params['sign'] = self._sign(sign_content)
# 构建完整的支付URL
pay_url = f"{self.gateway_url}?{urlencode(params)}"
# 日志输出到 stderr避免影响 subprocess JSON 输出
import sys
print(f"[AlipayPay] WAP Order created: {out_trade_no}, amount: {formatted_amount}", file=sys.stderr)
return {
'success': True,
'pay_url': pay_url,
'order_no': out_trade_no,
'pay_type': 'wap' # 标识为手机网站支付
}
except Exception as e:
import sys
print(f"[AlipayPay] Create WAP order failed: {e}", file=sys.stderr)
return {
'success': False,
'error': str(e)
}
def query_order(self, out_trade_no=None, trade_no=None):
"""
查询订单状态