门店端调用相机功能提示修改

This commit is contained in:
2026-08-03 12:37:01 +08:00
parent 0621ac18fb
commit 23587418c1
3 changed files with 91 additions and 19 deletions
+12 -4
View File
@@ -27,7 +27,7 @@ function formatScanError(e: unknown): string {
return '微信 JSSDK 签名校验失败:请确认公众号已配置 JS 接口安全域名,并刷新页面后重试';
}
if (/offline verifying|权限验证中|接口未就绪/i.test(msg)) {
return `${msg}(可在 URL 后加 ?wxdebug=1 开启 JSSDK 调试查看详情)`;
return '微信权限校验尚未完成,请等待 1~2 秒后再次点击扫码(首次绑定微信时较常见)';
}
return msg;
}
@@ -73,7 +73,7 @@ export default function HomePage() {
};
}, [loadDashboard]);
async function runScan() {
async function runScan(opts?: { postAuthWarmup?: boolean }) {
if (!isWechatEnv()) {
setScanMsg('请在微信内打开门店端进行扫码核销');
return;
@@ -81,8 +81,14 @@ export default function HomePage() {
setScanning(true);
setScanMsg('');
try {
// 授权回跳后强制重签,避免沿用带 code 的旧签名态
if (opts?.postAuthWarmup) {
weixinSdk.reset();
}
await weixinSdk.init();
const raw = await weixinSdk.scanQrCode();
const raw = await weixinSdk.scanQrCode(
opts?.postAuthWarmup ? { postAuthWarmup: true } : undefined,
);
if (!raw) {
void loadDashboard();
return;
@@ -111,12 +117,14 @@ export default function HomePage() {
}
setAuthModalOpen(false);
setAuthError('');
// 先清 OAuth 参数再扫,保证 JSSDK 签名 URL 与当前页一致
stripOAuthParamsFromLocation();
setSearchParams({}, { replace: true });
const shouldScan = sessionStorage.getItem(PENDING_SCAN_KEY) === '1';
sessionStorage.removeItem(PENDING_SCAN_KEY);
if (shouldScan) {
window.setTimeout(() => void runScan(), 0);
// OAuth 回跳后微信权限离线校验未完成;稍候再扫,失败可再点一次
window.setTimeout(() => void runScan({ postAuthWarmup: true }), 400);
}
})
.catch((e) => {