feat: H5支付诊断打印收款商户号 mch_id
This commit is contained in:
1 parent
2f6ce60013
commit
45a9508ed4
2 files changed
+37
-10
No files matched your search
@@ -1318,13 +1318,20 @@ class CreateOrderView(APIView):
|
||||
pay_sign = hashlib.md5(pay_sign_string.encode('utf-8')).hexdigest().upper()
|
||||
|
||||
# 返回支付参数(H5 JSAPI 必须带 appId;小程序可忽略)
|
||||
# _diag 仅给 H5 诊断页展示商户号,调起支付时前端不会传给微信
|
||||
result = {
|
||||
'appId': APPID,
|
||||
'timeStamp': timestamp,
|
||||
'nonceStr': nonce_str,
|
||||
'package': package,
|
||||
'signType': 'MD5',
|
||||
'paySign': pay_sign
|
||||
'paySign': pay_sign,
|
||||
'_diag': {
|
||||
'mch_id': str(MCHID or ''),
|
||||
'club_id': str(club_id or ''),
|
||||
'appid': str(APPID or ''),
|
||||
'app_source': str(source or ''),
|
||||
},
|
||||
}
|
||||
|
||||
return result
|
||||
|
||||
@@ -24,11 +24,17 @@
|
||||
}
|
||||
.ok { color: #07c160; }
|
||||
.err { color: #ff5a5a; }
|
||||
.banner {
|
||||
margin: 0 0 16px; padding: 14px 12px; border-radius: 10px;
|
||||
background: #3a0000; border: 2px solid #ff2d2d; color: #ffe0e0;
|
||||
font-size: 15px; font-weight: 700; line-height: 1.5; word-break: break-all;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrap">
|
||||
<div class="title">微信支付(诊断模式)</div>
|
||||
<div class="banner" id="banner">收款商户号加载中…</div>
|
||||
<div class="sub" id="tip">初始化…</div>
|
||||
<button class="btn" type="button" id="payBtn">立即支付 / 重试</button>
|
||||
<button class="btn gray" type="button" id="copyBtn">复制下方全部诊断到剪贴板</button>
|
||||
@@ -41,10 +47,23 @@
|
||||
var btn = document.getElementById('payBtn');
|
||||
var copyBtn = document.getElementById('copyBtn');
|
||||
var logEl = document.getElementById('log');
|
||||
var banner = document.getElementById('banner');
|
||||
var lines = [];
|
||||
var payload = null;
|
||||
var pay = null;
|
||||
var returnUrl = '';
|
||||
var diag = {};
|
||||
|
||||
function setBanner() {
|
||||
var mch = (diag && diag.mch_id) || '(未知,请看下方日志 payload.debug)';
|
||||
var app = (pay && (pay.appId || pay.appid)) || (diag && diag.backendAppId) || '(未知)';
|
||||
var club = (diag && diag.club_id) || '(未知)';
|
||||
banner.innerHTML =
|
||||
'【必须看】收款商户号 mch_id = <span style="color:#0f0">' + mch + '</span><br/>' +
|
||||
'appId = ' + app + '<br/>' +
|
||||
'club_id = ' + club + '<br/>' +
|
||||
'请到<strong>这个商户号</strong>的后台配 JSAPI 目录:https://www.abas.asia/hqhd/dingdan/';
|
||||
}
|
||||
|
||||
function now() {
|
||||
try { return new Date().toISOString(); } catch (e) { return String(Date.now()); }
|
||||
@@ -118,6 +137,10 @@
|
||||
|
||||
pay = payload && payload.pay ? payload.pay : null;
|
||||
returnUrl = (payload && payload.returnUrl) || '';
|
||||
diag = (payload && payload.debug) || {};
|
||||
setBanner();
|
||||
push('!!!! 收款商户号 mch_id', diag.mch_id || '(空——后端未返回 _diag,请先部署后端)');
|
||||
push('payload.debug 完整', diag);
|
||||
|
||||
dumpEnv('页面加载');
|
||||
push('payload.orderId', payload && payload.orderId);
|
||||
@@ -223,22 +246,19 @@
|
||||
push('当前校验 URL', checkUrl);
|
||||
push('调起用的 appId', appId);
|
||||
if (quick) {
|
||||
setTip('<span class="err">微信秒关并返回 cancel(常被误当成取消)</span><br/>不是「支付成功取消」。URL/appId 见下方,点重试或复制日志', true);
|
||||
setTip('<span class="err">微信秒关并返回 cancel</span><br/>顶部红框的 mch_id 才是要配目录的商户号', true);
|
||||
try {
|
||||
alert(
|
||||
'支付未完成(微信返回 cancel,且秒关)\n\n' +
|
||||
'这经常不是你手动取消,而是微信直接关掉收银台。\n' +
|
||||
'若屏幕曾闪过「URL未注册」,就是目录/商户仍不对。\n\n' +
|
||||
'appId=' + appId + '\n' +
|
||||
'URL=' + checkUrl + '\n' +
|
||||
'耗时=' + costMs + 'ms\n\n' +
|
||||
'完整日志在绿字区,点「复制」发给技术'
|
||||
'支付未完成(cancel 秒关)\n\n' +
|
||||
'【收款商户号 mch_id】\n' + ((diag && diag.mch_id) || '(未知,先部署后端)') + '\n\n' +
|
||||
'必须在这个商户后台配:\nhttps://www.abas.asia/hqhd/dingdan/\n\n' +
|
||||
'appId=' + appId + '\nURL=' + checkUrl + '\nms=' + costMs
|
||||
);
|
||||
} catch (e) {}
|
||||
} else {
|
||||
setTip('已取消支付。可点「立即支付」重试');
|
||||
try {
|
||||
alert('已取消支付\n\n若其实没点取消、只看到「未注册」,请把绿字日志复制发给技术\n\nappId=' + appId + '\nURL=' + checkUrl);
|
||||
alert('已取消\nmch_id=' + ((diag && diag.mch_id) || '(未知)') + '\nappId=' + appId + '\nURL=' + checkUrl);
|
||||
} catch (e) {}
|
||||
}
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user