商铺端核销,调用相机报无效签名修复

This commit is contained in:
2026-07-07 17:55:12 +08:00
parent 5fef6ae2b1
commit 67eed11276
4 changed files with 54 additions and 5 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
export { isWechatBrowser, isMiniProgram, getRuntimePlatform } from './env';
export { initWechatJssdk, ensureJssdkReady, isJssdkReady } from './jssdk';
export { initWechatJssdk, ensureJssdkReady, isJssdkReady, normalizeJssdkPageUrl, stripOAuthParamsFromLocation } from './jssdk';
export {
getWechatLocation,
getWechatLocationDetailed,
+26 -1
View File
@@ -8,7 +8,32 @@ let configured = false;
let configuredUrl: string | null = null;
function currentPageUrl() {
return typeof window !== 'undefined' ? window.location.href.split('#')[0] : '';
return typeof window !== 'undefined' ? normalizeJssdkPageUrl(window.location.href) : '';
}
/** 参与 JSSDK 签名的页面 URL(去掉 hash、OAuth 回跳参数) */
export function normalizeJssdkPageUrl(rawUrl: string): string {
try {
const url = new URL(rawUrl);
url.hash = '';
url.searchParams.delete('code');
url.searchParams.delete('state');
const query = url.searchParams.toString();
return `${url.origin}${url.pathname}${query ? `?${query}` : ''}`;
} catch {
return rawUrl.split('#')[0];
}
}
export function stripOAuthParamsFromLocation(): void {
if (typeof window === 'undefined') return;
const url = new URL(window.location.href);
if (!url.searchParams.has('code') && !url.searchParams.has('state')) return;
url.searchParams.delete('code');
url.searchParams.delete('state');
const query = url.searchParams.toString();
const next = `${url.pathname}${query ? `?${query}` : ''}${url.hash}`;
window.history.replaceState({}, '', next);
}
function loadScript(): Promise<void> {