fix: 全支付接口入口拦截小汐支付宝,微信支付路径不动

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-26 16:29:50 +08:00
parent 49e07c2673
commit 79c86ec373
8 changed files with 92 additions and 20 deletions

View File

@@ -130,6 +130,16 @@ class ShangjiaChongzhi(APIView):
'message': f'充值金额必须在{settings.SHANGJIA_CZ_MIN_AMOUNT}-{settings.SHANGJIA_CZ_MAX_AMOUNT}元之间'
}, status=status.HTTP_400_BAD_REQUEST)
pay_method = (request.data.get('pay_method') or request.data.get('payMethod') or 'wechat').lower()
from jituan.services.alipay_pay import alipay_pay_method_block_reason
pay_club = resolve_club_id_for_write(request, request.user)
_alipay_block = alipay_pay_method_block_reason(pay_method, pay_club)
if _alipay_block:
return Response({
'code': 400,
'message': _alipay_block,
}, status=status.HTTP_400_BAD_REQUEST)
# 3. 生成订单ID使用配置的前缀
timestamp_ms = int(time.time() * 1000)
timestamp_ns = int(time.time_ns() // 1000) % 1000000
@@ -146,7 +156,7 @@ class ShangjiaChongzhi(APIView):
jine=jine,
leixing=4, # 充值类型4=商家充值
shuoming=settings.SHANGJIA_CZ_PAY_DESCRIPTION,
club_id=resolve_club_id_for_write(request, request.user),
club_id=pay_club,
)
logger.info(f"创建商家充值订单: 商家{shangjia.nicheng}, 订单{dingdanid}, 金额{jine}")
except Exception as e:
@@ -157,7 +167,6 @@ class ShangjiaChongzhi(APIView):
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# 5. 生成支付参数(支持支付宝/微信)
pay_method = (request.data.get('pay_method') or request.data.get('payMethod') or 'wechat').lower()
if pay_method == 'alipay':
try:
from jituan.services.alipay_pay import generate_alipay_czjilu_pay_params
@@ -165,7 +174,7 @@ class ShangjiaChongzhi(APIView):
dingdanid=dingdanid,
jine=jine,
subject=settings.SHANGJIA_CZ_PAY_DESCRIPTION,
club_id=resolve_club_id_for_write(request, request.user),
club_id=pay_club,
)
except Exception as e:
chongzhi_jilu.delete()
@@ -176,7 +185,6 @@ class ShangjiaChongzhi(APIView):
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
else:
try:
pay_club = resolve_club_id_for_write(request, request.user)
pay_openid, _ = get_payment_openid(request, club_id=pay_club)
if not pay_openid:
chongzhi_jilu.delete()

View File

@@ -125,6 +125,15 @@ class HuiyuanGoumai(APIView):
club_id = resolve_effective_club_id(request, request.user)
from jituan.services.member_recharge import validate_member_purchase
pay_method = (request.data.get('pay_method') or request.data.get('payMethod') or 'wechat').lower()
from jituan.services.alipay_pay import alipay_pay_method_block_reason
_alipay_block = alipay_pay_method_block_reason(pay_method, club_id)
if _alipay_block:
return Response({
'code': 400,
'message': _alipay_block,
}, status=status.HTTP_400_BAD_REQUEST)
ok, err_msg, club_price, purchase_days = validate_member_purchase(
request.user.UserUID, huiyuanid, club_id, is_trial,
)
@@ -165,7 +174,6 @@ class HuiyuanGoumai(APIView):
f"金额{jine}元, 天数{purchase_days}")
# 7. 生成支付参数(支持支付宝/微信)
pay_method = (request.data.get('pay_method') or request.data.get('payMethod') or 'wechat').lower()
if pay_method == 'alipay':
try:
from jituan.services.alipay_pay import generate_alipay_czjilu_pay_params

View File

@@ -111,6 +111,17 @@ class JifenBuchong(APIView):
'message': '积分已满,无需补充'
}, status=status.HTTP_400_BAD_REQUEST)
pay_method = (request.data.get('pay_method') or request.data.get('payMethod') or 'wechat').lower()
from jituan.services.club_write import resolve_club_id_for_write
from jituan.services.alipay_pay import alipay_pay_method_block_reason
pay_club = resolve_club_id_for_write(request, request.user)
_alipay_block = alipay_pay_method_block_reason(pay_method, pay_club)
if _alipay_block:
return Response({
'code': 400,
'message': _alipay_block,
}, status=status.HTTP_400_BAD_REQUEST)
# 4. 生成订单ID前缀CzJF表示积分充值
timestamp_ms = int(time.time() * 1000)
timestamp_ns = int(time.time_ns() // 1000) % 1000000
@@ -127,13 +138,12 @@ class JifenBuchong(APIView):
jine=jine,
leixing=3, # 充值类型3=积分
shuoming=settings.JIFEN_PAY_DESCRIPTION,
club_id=resolve_club_id_for_write(request, request.user),
club_id=pay_club,
)
logger.info(f"创建积分充值订单: 用户{request.user.UserUID}, 订单{dingdanid}, 金额{jine}")
# 6. 生成支付参数(支持支付宝/微信)
pay_method = (request.data.get('pay_method') or request.data.get('payMethod') or 'wechat').lower()
if pay_method == 'alipay':
try:
from jituan.services.alipay_pay import generate_alipay_czjilu_pay_params
@@ -141,7 +151,7 @@ class JifenBuchong(APIView):
dingdanid=dingdanid,
jine=jine,
subject=settings.JIFEN_PAY_DESCRIPTION,
club_id=resolve_club_id_for_write(request, request.user),
club_id=pay_club,
)
except Exception as e:
chongzhi_jilu.delete()
@@ -152,7 +162,6 @@ class JifenBuchong(APIView):
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
else:
try:
pay_club = resolve_club_id_for_write(request, request.user)
pay_openid, _ = get_payment_openid(request, club_id=pay_club)
if not pay_openid:
chongzhi_jilu.delete()

View File

@@ -126,6 +126,17 @@ class YajinGoumai(APIView):
'message': '充值金额必须在1-10000元之间'
}, status=status.HTTP_400_BAD_REQUEST)
pay_method = (request.data.get('pay_method') or request.data.get('payMethod') or 'wechat').lower()
from jituan.services.club_write import resolve_club_id_for_write
from jituan.services.alipay_pay import alipay_pay_method_block_reason
pay_club = resolve_club_id_for_write(request, request.user)
_alipay_block = alipay_pay_method_block_reason(pay_method, pay_club)
if _alipay_block:
return Response({
'code': 400,
'message': _alipay_block,
}, status=status.HTTP_400_BAD_REQUEST)
# 3. 生成订单ID使用你提供的算法前缀改为CzYJ
timestamp_ms = int(time.time() * 1000)
timestamp_ns = int(time.time_ns() // 1000) % 1000000
@@ -141,13 +152,12 @@ class YajinGoumai(APIView):
jine=jine,
leixing=2, # 充值类型2=押金
shuoming=settings.YAJIN_PAY_DESCRIPTION,
club_id=resolve_club_id_for_write(request, request.user),
club_id=pay_club,
)
logger.info(f"创建押金充值订单: 用户{request.user.UserUID}, 订单{dingdanid}, 金额{jine}")
# 5. 生成支付参数(支持支付宝/微信)
pay_method = (request.data.get('pay_method') or request.data.get('payMethod') or 'wechat').lower()
if pay_method == 'alipay':
try:
from jituan.services.alipay_pay import generate_alipay_czjilu_pay_params
@@ -155,7 +165,7 @@ class YajinGoumai(APIView):
dingdanid=dingdanid,
jine=jine,
subject=settings.YAJIN_PAY_DESCRIPTION,
club_id=resolve_club_id_for_write(request, request.user),
club_id=pay_club,
)
except Exception as e:
chongzhi_jilu.delete()
@@ -166,7 +176,6 @@ class YajinGoumai(APIView):
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
else:
try:
pay_club = resolve_club_id_for_write(request, request.user)
pay_openid, _ = get_payment_openid(request, club_id=pay_club)
if not pay_openid:
chongzhi_jilu.delete()

View File

@@ -222,6 +222,10 @@ class ZhuanpanGoumai(APIView):
return Response({'code': 400, 'message': '请填写游戏昵称'}, status=400)
club_id = resolve_club_id_for_write(request, request.user)
from jituan.services.alipay_pay import alipay_pay_method_block_reason
_alipay_block = alipay_pay_method_block_reason(pay_method, club_id)
if _alipay_block:
return Response({'code': 400, 'message': _alipay_block}, status=400)
huodong = None
if huodong_id:
huodong = ZhuanpanHuodong.query.filter(