|
|
@@ -192,7 +192,6 @@
|
|
|
}
|
|
|
|
|
|
.fab-dock__slot {
|
|
|
- position: relative;
|
|
|
width: 100%;
|
|
|
max-width: 280px;
|
|
|
height: 48px;
|
|
|
@@ -230,10 +229,6 @@
|
|
|
|
|
|
#launch-btn {
|
|
|
display: none;
|
|
|
- position: absolute;
|
|
|
- left: 0;
|
|
|
- top: 0;
|
|
|
- z-index: 2;
|
|
|
width: 100%;
|
|
|
height: 48px;
|
|
|
min-height: 48px;
|
|
|
@@ -242,12 +237,11 @@
|
|
|
opacity: 1;
|
|
|
}
|
|
|
|
|
|
- /* openApp 始终可见;仅当开放标签已渲染时才叠加上层(避免隐藏后标签未渲染导致按钮消失) */
|
|
|
body.is-wechat.wx-jssdk-ready #launch-btn {
|
|
|
display: block;
|
|
|
}
|
|
|
|
|
|
- body.is-wechat.wx-open-tag-broken #launch-btn {
|
|
|
+ body.is-wechat.wx-jssdk-ready #openApp {
|
|
|
display: none !important;
|
|
|
}
|
|
|
|
|
|
@@ -389,13 +383,6 @@
|
|
|
var wxConfigSignRetriedBaseUrl = false;
|
|
|
var wxInitLastError = "";
|
|
|
var wxJssdkInitPromise = null;
|
|
|
- var wxOpenTagBroken = false;
|
|
|
-
|
|
|
- function markWxOpenTagBroken() {
|
|
|
- wxOpenTagBroken = true;
|
|
|
- document.body.classList.add("wx-open-tag-broken");
|
|
|
- document.body.classList.remove("wx-jssdk-ready");
|
|
|
- }
|
|
|
|
|
|
function escHtml(s) {
|
|
|
return String(s || "")
|
|
|
@@ -837,11 +824,9 @@
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /** 默认 pathname 验签:AI 分享链常带超长 payload,与后端无参签名一致,避免开放标签 fail_check */
|
|
|
+ /** 与 secondShareGoods 一致:默认用当前页完整 URL 验签(须与微信地址栏一致,含 query) */
|
|
|
function getWxConfigSignUrl() {
|
|
|
- if (String(q("wxSignFullUrl") || "") === "1") return getWxSignPageUrlForApi();
|
|
|
if (String(q("wxSignBaseOnly") || "") === "1") return getWxHtmlUrlBase();
|
|
|
- if (isWeChatInAppBrowser()) return getWxHtmlUrlBase();
|
|
|
return getWxSignPageUrlForApi();
|
|
|
}
|
|
|
|
|
|
@@ -947,6 +932,8 @@
|
|
|
|
|
|
var requestUrl = getWxGetConfigApiUrl();
|
|
|
var requestBody = buildWxGetConfigRequestBody(htmlUrl);
|
|
|
+ console.log("[wx] htmlUrl=", htmlUrl);
|
|
|
+ console.log("[wx] POST getWxConfig →", requestUrl, requestBody);
|
|
|
|
|
|
return fetch(requestUrl, {
|
|
|
method: "POST",
|
|
|
@@ -985,8 +972,14 @@
|
|
|
}
|
|
|
var sign = normalizeWxJssdkSignPayload(res, htmlUrl);
|
|
|
if (!sign) {
|
|
|
+ console.warn("[wx] getWxConfig 响应字段不全", res, "htmlUrl=", htmlUrl);
|
|
|
throw new Error("getWxConfig 缺少 appId/timestamp/nonceStr/signature(见控制台)");
|
|
|
}
|
|
|
+ if (sign.appId !== WECHAT_MP_APP_ID) {
|
|
|
+ console.warn(
|
|
|
+ "[wx] 后端 appId=" + sign.appId + ",期望服务号 " + WECHAT_MP_APP_ID
|
|
|
+ );
|
|
|
+ }
|
|
|
if (typeof wx === "undefined") {
|
|
|
if (isWxPcBrowser()) {
|
|
|
console.log("[wx] PC getWxConfig 成功(无 jweixin)", sign);
|
|
|
@@ -1013,14 +1006,8 @@
|
|
|
wx.config(wxConfigParams);
|
|
|
wx.ready(function () {
|
|
|
weChatJssdkConfigured = true;
|
|
|
+ document.body.classList.add("wx-jssdk-ready");
|
|
|
refreshWxLaunchTagAttrs();
|
|
|
- if (wxOpenTagBroken) {
|
|
|
- document.body.classList.add("wx-open-tag-broken");
|
|
|
- document.body.classList.remove("wx-jssdk-ready");
|
|
|
- } else {
|
|
|
- document.body.classList.remove("wx-open-tag-broken");
|
|
|
- document.body.classList.add("wx-jssdk-ready");
|
|
|
- }
|
|
|
console.log("[wx.config] ready, htmlUrl=", htmlUrl);
|
|
|
resolve(true);
|
|
|
});
|
|
|
@@ -1083,7 +1070,6 @@
|
|
|
);
|
|
|
|
|
|
if (/launch:fail_check/i.test(errMsg)) {
|
|
|
- markWxOpenTagBroken();
|
|
|
showAppOpenFailTip(
|
|
|
"请用微信分享卡片进入,或确认已安装最新版「U店在哪」"
|
|
|
);
|
|
|
@@ -1321,7 +1307,6 @@
|
|
|
}
|
|
|
|
|
|
document.addEventListener("WeixinOpenTagsError", function (e) {
|
|
|
- markWxOpenTagBroken();
|
|
|
console.warn("[WeixinOpenTagsError]", e && e.detail);
|
|
|
});
|
|
|
|
|
|
@@ -1333,13 +1318,6 @@
|
|
|
showFabToast(
|
|
|
wxInitLastError || "微信 SDK 初始化中,请稍候再点底部按钮"
|
|
|
);
|
|
|
- initWeChatOpenLaunchApp(true);
|
|
|
- return;
|
|
|
- }
|
|
|
- if (wxOpenTagBroken) {
|
|
|
- showAppOpenFailTip(
|
|
|
- "请使用 App「分享到微信」后点分享卡片进入,或确认已安装最新版「U店在哪」"
|
|
|
- );
|
|
|
}
|
|
|
});
|
|
|
}
|