feat: 接入微信 Native 扫码支付(复用原回调与履约)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQueandCursor committed 2026-08-08 19:55:20 +08:00
1 parent 2643321801
commit 486c050c00
11 files changed
+329 -23

No files matched your search

+43 -2
View File
@@ -153,7 +153,7 @@ class FaKuanPayView(APIView):
club_id=penalty_cz_club_id(fadan),
)
# 生成支付参数(支持支付宝/微信)
# 生成支付参数(支付宝 / 微信Native / 微信JSAPI)
# 支付必须用「当前小程序/打手写入俱乐部」的 AppID+openid;
# 与罚单 ClubID(申请人俱乐部)混用会导致部分人 openid/appid 不一致而下单失败。
if pay_method == 'alipay':
@@ -173,6 +173,26 @@ class FaKuanPayView(APIView):
'message': f'支付参数生成失败: {str(e)}',
'msg': f'支付参数生成失败: {str(e)}',
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
elif pay_method == 'wechat_native':
try:
from jituan.services.wechat_native_pay import generate_wechat_native_pay_params
pay_params = generate_wechat_native_pay_params(
dingdanid=dingdanid,
jine=jine,
body=settings.FAKUAN_PAY_DESCRIPTION,
notify_url=settings.FAKUAN_PAY_NOTIFY_URL,
club_id=pay_club,
client_ip=self.get_client_ip(),
scene='fakuan',
)
except Exception as e:
chongzhi_jilu.delete()
logger.error(f"生成微信Native支付参数失败: {str(e)}")
return Response({
'code': 500,
'message': f'支付参数生成失败: {str(e)}',
'msg': f'支付参数生成失败: {str(e)}',
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
else:
pay_openid, pay_club = get_payment_openid(request, club_id=pay_club)
if not pay_openid:
@@ -684,7 +704,7 @@ class KaohePayView(APIView):
attach_str = json.dumps({'oid': dingdanid}, ensure_ascii=False)
logger.info(f"attach内容: {attach_str},长度: {len(attach_str.encode('utf-8'))}字节")
# 11. 生成支付参数(支持支付宝/微信)
# 11. 生成支付参数(支付宝 / 微信Native / 微信JSAPI)
if pay_method == 'alipay':
try:
from jituan.services.alipay_pay import generate_alipay_czjilu_pay_params
@@ -703,6 +723,27 @@ class KaohePayView(APIView):
logger.error(f"删除临时表记录失败: {str(del_e)}")
logger.error(f"生成支付宝支付参数失败: {str(e)}", exc_info=True)
return Response({'code': 500, 'message': f'支付参数生成失败: {str(e)}'})
elif pay_method == 'wechat_native':
try:
from jituan.services.wechat_native_pay import generate_wechat_native_pay_params
pay_params = generate_wechat_native_pay_params(
dingdanid=dingdanid,
jine=float(fee),
body=settings.KAOHE_PAY_DESCRIPTION,
notify_url=settings.KAOHE_PAY_NOTIFY_URL,
club_id=pay_club,
client_ip=self.get_client_ip(),
scene='kaohe',
)
logger.info(f"微信Native支付参数生成成功: {dingdanid}")
except Exception as e:
order.delete()
try:
KaohePayTemp.query.filter(dingdan_id=dingdanid).delete()
except Exception as del_e:
logger.error(f"删除临时表记录失败: {str(del_e)}")
logger.error(f"生成微信Native支付参数失败: {str(e)}", exc_info=True)
return Response({'code': 500, 'message': f'支付参数生成失败: {str(e)}'})
else:
try:
pay_params = self.generate_wechat_pay_params(