diff --git a/yonghu/tixian_shenhe_services.py b/yonghu/tixian_shenhe_services.py index 52b45cf..9901fd3 100644 --- a/yonghu/tixian_shenhe_services.py +++ b/yonghu/tixian_shenhe_services.py @@ -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', ) diff --git a/yonghu/tixian_shenhe_views.py b/yonghu/tixian_shenhe_views.py index 2f03806..dad5464 100644 --- a/yonghu/tixian_shenhe_views.py +++ b/yonghu/tixian_shenhe_views.py @@ -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': user_msg}) + return Response({ + 'code': 99, + 'msg': f'已尝试商户 {tried} 均失败:{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': last_user_msg}) + return Response({ + 'code': 99, + 'msg': ( + f'已尝试商户 {tried} 均失败:{last_user_msg}' + if tried else last_user_msg + ), + }) finally: release_lock(lock_key)