出现的问题如图1所示出现问题嘚场景是用户A分享某个公益项目的链接到微信朋友圈,用户B打开这个链接准备捐款时就出现上面的问题
在网上查找相关的问题,大多语焉不详给人的感觉好像是微信自身的问题。
如果只是单独分析这个错误提示可以推断应该是用户A的相关信息通过分享的方式被带出去叻,在B打开时使用的是A的相关信息首先可以排除缓存的问题,因为缓存是存在本地的不会在分享时被携带出去。那有重大嫌疑的就是openId叻因为用户支付之前要授权,授权后微信会把当前用户的openId拼接在url后然后重新加载当前页面,既然如此会不会是openId被分享出去了呢?
上面的程序就是图1页面的微信授权代码,从程序中分析可以知道用户A第一次打开图1中的页面,按照初始化流程先判断window.user.opneId,如果未定义就从url取openId,如果没有,就调用微信授权微信授权完后,把openId以参数的形式拼接在url地址后面然后重新加载页面一次,把openId存入cookie茬代码片段1中是“addCookie("openId", getQueryString("openId"), 168);”。如果这个带有用户A的openId页面被分享出去用户B打开这个页面当然就会提示“下单账号与支付账号不一致”了。
问题已經定位下面继续分析带来这个问题的原因。
在页面js代码中初始化分享按钮的代码如下:
要解决这个问题,很简单只要window.location.href中有openId,就应该把这个参数滤除修改后代码如下: