微信跨公众号支付 [ 技术分享 ]
支付业务
首先需要了解微信支付的流程(点击查看)
配置
公众号平台配置:登录授权域名、业务授权域名、白名单 商户支付平台:支付授权目录(域名)、支付回调域名
需求
- 两个公众号A、B(以下简称A、B),网站主业务基于A,包括授权登录、默认支付配置
- 基于请求来源判断是否启用B公众号的支付配置
正文
发起微信支付依赖配置信息和OpenId,基础配置信息可以通过判断选择相应的配置文件,获取OpenId的过程比较繁琐,调起B的支付,A已授权的OpenId对B是无效的,因为每个公众号对同一用户都有唯一的OpenId(点我查看),简单来讲,如果调起B的支付,必须获取当前用户在B公众号内对应OpenId,获取OpenId首先要获取Code,通过Code再请求微信服务器换区OpenId,看代码:
$scope = 'snsapi_base';
$auth = new WechatAuth($appid, $appsecret);
$state = $_SERVER['HTTP_HOST'].",sub_openid";
$redirect_uri = "http://".$_SERVER['HTTP_HOST']."/mobile.php/?s=/Game/open_game&".http_build_query($_GET);
$rurl = $auth->getRequestCodeURL($redirect_uri,$state,$scope);
redirect($rurl);
微信服务器获取这个请求后,会根据回调地址,附上Code后进行重定向,A公众号对应服务器的的回调地址,接收Code后,使用Code换取OpenId:
$auth = new WechatAuth($appid, $appsecret);
$token = $auth->getAccessToken("code",$_GET['code']);
至此获取OpenId,在支付时,使用B公众号配置和对应的OpenId。
Victory 上海
最后登录:2024-03-08
在线时长:19小时32分
- 粉丝7
- 金钱2645
- 威望0
- 积分2835