区分平台上限与微信商户额度,失败时明确返回已尝试的商户号。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -505,7 +505,7 @@ def _check_personal_quota_readonly(user_main, leixing, jine, shenhe_danhao=''):
|
||||
if projected_personal > personal_quota:
|
||||
return (
|
||||
False,
|
||||
f'【平台个人限额】今日提现已达上限,今日已提{personal_today}元,本次申请{jine}元,限额{personal_quota}元',
|
||||
f'【平台个人限额·与微信商户无关·换号无效】今日提现已达上限,今日已提{personal_today}元,本次申请{jine}元,限额{personal_quota}元',
|
||||
'personal',
|
||||
)
|
||||
return True, '', ''
|
||||
@@ -530,7 +530,7 @@ def _check_platform_quota_readonly(leixing, shijidaozhang, shenhe_danhao=''):
|
||||
)
|
||||
return (
|
||||
False,
|
||||
f'【平台总限额】今日该角色提现已达上限,今日已提{daily_used}元,本次到账{additional}元,限额{platform_limit}元',
|
||||
f'【平台总限额·与微信商户无关·换号无效】今日该角色提现已达上限,今日已提{daily_used}元,本次到账{additional}元,限额{platform_limit}元',
|
||||
'platform',
|
||||
)
|
||||
|
||||
@@ -589,7 +589,7 @@ def reserve_collect_quota_limits(user_main, leixing, jine, shijidaozhang, shenhe
|
||||
if personal_today + jine > personal_quota:
|
||||
return (
|
||||
False,
|
||||
f'【平台个人限额】今日提现已达上限,今日已提{personal_today}元,本次申请{jine}元,限额{personal_quota}元',
|
||||
f'【平台个人限额·与微信商户无关·换号无效】今日提现已达上限,今日已提{personal_today}元,本次申请{jine}元,限额{personal_quota}元',
|
||||
'personal',
|
||||
)
|
||||
|
||||
@@ -604,7 +604,7 @@ def reserve_collect_quota_limits(user_main, leixing, jine, shijidaozhang, shenhe
|
||||
if platform_stat.total_amount + shijidaozhang > platform_limit:
|
||||
return (
|
||||
False,
|
||||
f'【平台总限额】今日该角色提现已达上限,今日已提{platform_stat.total_amount}元,'
|
||||
f'【平台总限额·与微信商户无关·换号无效】今日该角色提现已达上限,今日已提{platform_stat.total_amount}元,'
|
||||
f'本次到账{shijidaozhang}元,限额{platform_limit}元',
|
||||
'platform',
|
||||
)
|
||||
|
||||
@@ -293,9 +293,9 @@ def process_audit_collect(request):
|
||||
logger.error('微信打款配置不完整 enabled_count=%s', len(mch_cfgs))
|
||||
return Response({'code': 11, 'msg': '系统配置异常,请联系客服'})
|
||||
if len(mch_cfgs) < 2:
|
||||
logger.warning(
|
||||
logger.error(
|
||||
'启用且配置完整的转账商户仅 %s 个,无法轮换 mch_ids=%s '
|
||||
'(后台多个启用但私钥路径无效会被跳过)',
|
||||
'(后台多个启用但私钥路径无效会被跳过;微信商户日额度失败时将无法换号)',
|
||||
len(mch_cfgs), [c.get('MCHID') for c in mch_cfgs],
|
||||
)
|
||||
|
||||
@@ -415,10 +415,12 @@ def process_audit_collect(request):
|
||||
last_user_msg = '微信收款发起失败,请稍后重试'
|
||||
last_was_balance = False
|
||||
tixian_id = None
|
||||
tried_mchs = []
|
||||
|
||||
for mch_idx, wx_cfg in enumerate(mch_cfgs):
|
||||
tixian_id = generate_tixian_id()
|
||||
mch_id = wx_cfg['MCHID']
|
||||
tried_mchs.append(mch_id)
|
||||
with transaction.atomic():
|
||||
TixianAutoRecord.objects.create(
|
||||
tixian_id=tixian_id,
|
||||
@@ -532,6 +534,7 @@ def process_audit_collect(request):
|
||||
or clear_fail
|
||||
or ('额度' in err_msg)
|
||||
or ('限额' in err_msg)
|
||||
or ('上限' in err_msg)
|
||||
or resp.status_code in (400, 401, 403)
|
||||
)
|
||||
|
||||
@@ -587,29 +590,51 @@ def process_audit_collect(request):
|
||||
TixianAutoRecord.objects.get(tixian_id=tixian_id),
|
||||
)
|
||||
quota_reserved = False
|
||||
tried = '、'.join(tried_mchs) or mch_id
|
||||
if len(mch_cfgs) < 2:
|
||||
return Response({
|
||||
'code': 99,
|
||||
'msg': (
|
||||
f'仅1个可用打款商户({tried}),无法轮换。'
|
||||
f'失败原因:{user_msg}。请在后台再完善并启用第二个商户(私钥须存在)。'
|
||||
),
|
||||
})
|
||||
if ip_denied:
|
||||
return Response({
|
||||
'code': 99,
|
||||
'msg': '所有商户均无法发起打款(请检查各商户IP白名单/日额度),请联系管理员',
|
||||
'msg': f'已尝试商户 {tried} 均失败(含IP白名单),请检查各商户配置',
|
||||
})
|
||||
if last_was_balance:
|
||||
return Response({
|
||||
'code': 99,
|
||||
'msg': '运营账户资金不足,需等管理员充值后才能提现',
|
||||
'msg': f'已尝试商户 {tried},运营账户资金不足,需等管理员充值后才能提现',
|
||||
})
|
||||
return Response({
|
||||
'code': 99,
|
||||
'msg': f'已尝试商户 {tried} 均失败:{user_msg}',
|
||||
})
|
||||
return Response({'code': 99, 'msg': user_msg})
|
||||
|
||||
if quota_reserved and tixian_id:
|
||||
release_collect_quota_for_record(
|
||||
TixianAutoRecord.objects.get(tixian_id=tixian_id),
|
||||
)
|
||||
quota_reserved = False
|
||||
tried = '、'.join(tried_mchs) if tried_mchs else ''
|
||||
if last_was_balance:
|
||||
return Response({
|
||||
'code': 99,
|
||||
'msg': '运营账户资金不足,需等管理员充值后才能提现',
|
||||
'msg': (
|
||||
f'已尝试商户 {tried},运营账户资金不足,需等管理员充值后才能提现'
|
||||
if tried else '运营账户资金不足,需等管理员充值后才能提现'
|
||||
),
|
||||
})
|
||||
return Response({
|
||||
'code': 99,
|
||||
'msg': (
|
||||
f'已尝试商户 {tried} 均失败:{last_user_msg}'
|
||||
if tried else last_user_msg
|
||||
),
|
||||
})
|
||||
return Response({'code': 99, 'msg': last_user_msg})
|
||||
|
||||
finally:
|
||||
release_lock(lock_key)
|
||||
|
||||
Reference in New Issue
Block a user