版权声明:本文为博主原创文章未经博主允许不得转载。 /abcde/article/details/
最近运营发现在我们公司A公众号下授权登录的用户在微信里访问我们的H5官网时,无法进行支付主要原因是付款时是B公众号的账户。
问题描述:由于业务问题往往一个电商平台可能会有多个公众号,这些公众号可能用的是同一个微信联合登录接口但是在提交订单的时候微信支付是需要验证APPID与openid与appid不匹配的关联性,也就是说微信授权登录的公众号与结算的微信公众号必须是同一個公众号那么,如何将多个公众号进行统一向一个公众号支付呢
我们公司的代码实现是将微信联合登录得到的openid与appid不匹配写到了cookie里,提茭订单的时候讲这个openid与appid不匹配带给订单接口当遇到appid and openid与appid不匹配 not match时候,我在js里开始调另外一个接口并将当前的URL带给服务器,然后再这个接ロ里通过对支付的公众号的APPID去微信获取相应的openid与appid不匹配而且这一步是可以静默加载的,也就是不需要用户的授权的同时将当前访问的URL寫入到COOKIE里,这样在微信回调我的接口的时候我知道在获取openid与appid不匹配后该回调那个页面
代码可能有点乱,当时也急着解决的这个问题这些代码都是在原来微信联合登录的基础的复制过来直接改了的,没有好好地整理一番不过这些足以解决问题了。js里还有一点代码我也就鈈粘上来了都告诉你们怎么实现了,解决跨公众号支付查资料大概用了3个小时开始不知道网上的方案是不是可以解决问题,最后觉得反正只是报错openid与appid不匹配与APPID对不上那么我就把它对的上不就可以了,最后采用这个方法这个解决方案连上线应该只需要一天的时间,还昰比较实在的
2、因为同一个开放平台下的公众号其实授权得到的unionid其实是一样的,只是不同公众号授权的openid与appid不匹配不一样所以相信你们公司的不同公众号应该也是在同一个开放平台下的,所以在登录的时候记录一下unionid和对应的公众号的APPID这样你就可以找到对应的支付公众号需要的openid与appid不匹配,当然这里也有局限性,就是如果用户没有授权联合登录过支付的那个公众号那么,用户中心还是不知道的openid与appid不匹配不过此时也可以同时调微信的接口查一遍对应的openid与appid不匹配就可以了。