微信跨公众号支付(appid 与 openid 不匹配)-koa

实现不同主体公众号的跨公众号支付其实原理很简单,就下面几点:

1、用一个公众号的appid来进行收款
2、这个公众号的appid需要和商户号绑定
3、用这个appid来获取用户的openid

进过上面三步是不是就对应起来了~

怎么才能在别的主体的公众号用我的appid来获得用户的openid呢?

其实很简单,你可以在需要支付的页面进行一次获取code的重定向操作,获取code的url内的appid,写你自己的appid就好了,后端拿code获取openid时也用我们自己的appid和appsecret。

其实只要理解了微信官方的网页授权机制就很容易理解,当我们获取code之前是不是构造了类似下面的url

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8888888888888888&redirect_uri=http://mascot.duapp.com/oauth2.php&response_type=code&scope=snsapi_base&state=1#wechat_redirect

可以发现里面有个appid,这就是微信官方验证的依据,当我们获取openid的时候回传三个参数,appid,appsecret和code,这时微信官方就会拿code去找之前url内的appid,来对比和code一起传过去的appid,如果一致就返回openid,如果不一致,则提示错误。

而跨公众号支付也是一样,他们不匹配,我让他匹配不就完了嘛
要是这个公众号下的openid不行,我用自己的appid重新获取一个匹配的不就完了嘛

注意事项:
1、需要在收款公众号appid下配置可访问的回调域名(web安全域名/js安全域名/业务域名)
2、在商户号的开发配置中设置支付页面的url,否则不能完成支付

你可能感兴趣的:(koa,服务器)