feat: 接入微信 Native 扫码支付(复用原回调与履约)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
2643321801
commit
486c050c00
11 files changed
+329
-23
No files matched your search
+43
-2
@@ -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(
|
||||
|
||||
Reference in new issue
Block a user