微擎JSAPI支付由服务商发起支付走过的坑总结
1、jsapi支付调用的framework/builtin/core/site.php中的 public function doMobilePay() {方法。2、sprintf('%06d', 14) = 000014;
3、然后调用当前文件的private function doMobilePayWechat($paylog = array()) {方法。
4、然后调用framework/model/payment.mod.php中的function wechat_proxy_build($params, $wechat) {方法。
5、然后调用4文件中的function wechat_build($params, $wechat, $is_site_store = false) {方法,version=2是版本2,JSAPI支付走2。
经过研判,问题出在:问题所在的目标文件:根目录/framework/builtin/core/site.php在193行开始的服务商支付或借用支付中应该提供sub_appid,但当前系统代码中没有判断是服务商支付并提供sub_appid,我的解决方案是加入了服务商支付判断,然后提供sub_appid,代码如下:
//服务商支付
if (intval($wechat_payment['switch']) == 3) {
$wechat_payment['sub_appid'] = $wechat_payment['appid'];
}
服务商公众号应该添加配置网页授权域名
页:
[1]