feat: 分俱乐部付呗收款通道,默认仍走微信直连

小程序前端仍传 wechat;后台可切换 wechat/fubei,支持配置多套付呗并退款按原通道路由。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-21 20:02:24 +08:00
parent f36db77f6b
commit 5762f00d40
20 changed files with 1105 additions and 0 deletions

View File

@@ -12,6 +12,7 @@ from .views import CreateOrderView, WechatPayNotifyView, AlipayPayNotifyView, al
ShangjiaFakuanApplyView, ShangjiaFakuaiXiugaiView, ShangjiaShujuTongjiView, LianTongDuiHuaZhunBeiView, \
LianTongPeiDuiDingDanLieBiaoView, LianTongDingDanZhuangTaiView, LianTongDingDanZhuangTaiPiLiangView, \
ZhiDingChaxunView, ZhiDingHuiFuView
from jituan.services.fubei_notify import FubeiPayNotifyView
urlpatterns = [
@@ -19,6 +20,7 @@ urlpatterns = [
#path('pay-notify/', WechatPayNotifyView.as_view(), name='老板下单微信支付回调'),
path('pay-notify/', csrf_exempt(WechatPayNotifyView.as_view()), name='老板下单微信支付回调'),
path('alipay-notify/', csrf_exempt(AlipayPayNotifyView.as_view()), name='老板下单支付宝支付回调'),
path('fubei-notify/', csrf_exempt(FubeiPayNotifyView.as_view()), name='付呗支付回调'),
path('alipay-pay/', csrf_exempt(alipay_pay_page), name='支付宝H5中转页'),
path('shibai', PaymentFailView.as_view(), name='老板支付失败接口'),
path('fucha', PaymentVerifyView.as_view(), name='老板支付成功复查接口'),

View File

@@ -1305,6 +1305,18 @@ class AdTongYiTuiKuanPingTai(APIView):
:return: {'success': True/False, 'msg': '消息', 'refund_id': '退款单号'}
"""
try:
from jituan.services.pay_refund_router import try_fubei_refund
from jituan.services.wechat_pay import club_id_from_order
fb = try_fubei_refund(
out_trade_no=out_trade_no,
amount_yuan=jine,
club_id=club_id_from_order(out_trade_no),
)
if fb is not None:
if fb.get('code') == 0:
return {'success': True, 'msg': fb.get('msg') or 'success', 'refund_id': fb.get('refund_id')}
return {'success': False, 'msg': fb.get('msg') or '付呗退款失败'}
# 检查配置
required_settings = ['WEIXIN_APPID', 'WEIXIN_MCHID', 'WEIXIN_SHANGHUMIYAO', 'WEIXIN_CERT_PATH', 'WEIXIN_KEY_PATH']
for setting in required_settings:

View File

@@ -1035,6 +1035,8 @@ class CreateOrderView(APIView):
调用微信支付统一下单接口,生成支付参数
"""
try:
from jituan.constants import FUBEI_BIZ_ORDER
from jituan.services.mini_pay_router import maybe_create_fubei_jsapi_params
from jituan.services.wechat_pay import get_wechat_v2_config
pay_cfg = get_wechat_v2_config(club_id)
APPID = pay_cfg['appid']
@@ -1042,6 +1044,18 @@ class CreateOrderView(APIView):
KEY = pay_cfg['key']
NOTIFY_URL = getattr(settings, 'WEIXIN_NOTIFY_URL', '')
fb_params = maybe_create_fubei_jsapi_params(
club_id=club_id,
out_trade_no=dingdanid,
amount_yuan=jine,
body=beizhu,
openid=openid,
notify_url=NOTIFY_URL,
biz_type=FUBEI_BIZ_ORDER,
)
if fb_params is not None:
return fb_params
# NOAUTH 诊断日志:打印生效的 club_id / appid / mchid / openid 指纹
_oid_preview = (openid or '')[:6] + '...' + (openid or '')[-4:] if (openid or '') else '(empty)'
logger.warning(