实现不同主体公众号的跨公众号支付原理如下:
1、使用公众号的 appid 收款
2、公众号的 appid 需要和商户号绑定
3、用第2步得到的 appid 获取用户的 openid
要在 a主体 的公众号用 b主体 的 appid
来获得用户的 openid
,只需要将获取 openid
时的 appid
设为 b主体的 appid
即可。
其本质是将 appid
与 openid
一一对应。
示例如下:
在 a主体 公众号中需要支付的页面进行一次获取 code 的重定向,获取 code 的 url 中 appid
为 b 主体的 appid
,后端拿 code 获取 openid
时也用 b主体 公众号的 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
url 中的 appid
就是微信官方验证依据,当我们获取 openid
的时候回传三个参数,appid
,appsecret
和 code
,这时微信官方就会拿 code 去找之前 url 内的 appid
,来对比和 code 一起传过去的 appid
,如果一致就成功,如果不一致,则提示错误。
而跨公众号支付也是一样,让openid和appid一一匹配
注意事项:
1、需要在收款公众号appid下配置可访问的回调域名(web安全域名/js安全域名/业务域名)
2、在商户号的开发配置中设置支付页面的url,否则不能完成支付