feat: 固定字段接收的参数兼容 target=benefits的情况
This commit is contained in:
@@ -62,28 +62,29 @@ export const consumePendingMerchant = () => {
|
||||
return value;
|
||||
};
|
||||
|
||||
/** 承载入口目标值的键名(query 直传、scene 内、q 解码后的 query 共用一套) */
|
||||
const ID_KEYS = ["merchant_id", "merchantId", "id", "target"];
|
||||
|
||||
const pickByKeys = (source) => ID_KEYS.map((key) => pickParam(source, key)).find((v) => v) || "";
|
||||
|
||||
/**
|
||||
* 从启动/唤起参数里取商家 id:兼容四种来源
|
||||
* - `merchant_id` / `merchantId` / `id`:页面 query 直传(小程序码 path、分享链接)
|
||||
* - `scene`:小程序码 getUnlimited,值可能是 `merchant_id=xxx` 也可能是短码
|
||||
* 从启动/唤起参数里取入口值:兼容三种来源
|
||||
* - `merchant_id` / `merchantId` / `id` / `target`:页面 query 直传(小程序码 path、普通链接)
|
||||
* - `scene`:小程序码 getUnlimited,值可能是 `merchant_id=xxx` / `target=xxx` 也可能是短码
|
||||
* - `q`:普通链接二维码,值是 URL 编码过的原始链接,解码后再取 query
|
||||
* 值可能是商家 id,也可能是保留值(如只切权益 Tab,见壳页 runEntry)
|
||||
*/
|
||||
export const pickMerchantId = (options) => {
|
||||
const o = options || {};
|
||||
const direct = o.merchant_id || o.merchantId || o.id || "";
|
||||
const direct = ID_KEYS.map((key) => o[key]).find((v) => v);
|
||||
if (direct) return decodeURIComponent(String(direct)).trim();
|
||||
if (o.scene) {
|
||||
const scene = decodeURIComponent(String(o.scene));
|
||||
return (
|
||||
pickParam(scene, "merchant_id") ||
|
||||
pickParam(scene, "merchantId") ||
|
||||
pickParam(scene, "id") ||
|
||||
scene.trim()
|
||||
);
|
||||
return pickByKeys(scene) || scene.trim();
|
||||
}
|
||||
if (o.q) {
|
||||
const query = decodeURIComponent(String(o.q)).split("?")[1] || "";
|
||||
return pickParam(query, "merchant_id") || pickParam(query, "merchantId") || pickParam(query, "id");
|
||||
return pickByKeys(query);
|
||||
}
|
||||
return "";
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user