小程序支付没有回调:志汇、禾匠小程序微擎微赞通病

小程序支付没有回调:志汇、禾匠小程序微擎微赞通病

之前写过一篇文章《微信小程序可以完成微信支付但没有回调,也没有完成订单状态》,讲的是在使用禾匠商城购物小程序的过程,小程序配置都没有问题,也能够发起支付,并且支付成功,可就是没有完成订单状态,也就是说,服务端没有收到支付回调。

这种问题,不仅禾匠商城购物小程序有这个问题,志汇餐饮外卖小程序也有同样的问题,并且据我研究,这个是微擎微赞系统的通病!更有可能是微信支付本身的BUG。

也有朋友说是微信支付那边不支持https443端口的回调url导致的,不过咱们没办法去改变微信,只能改变自己的代码,这里再系统化的说一下,遇到这种没有问题该怎么解决。

思路:既然没有支付回调,先找到设置回调地址的代码

根据我们对微信支付开发的代码分析,所有设置支付回调的代码都有同样的参数“notify_url”,所以就很简单了,这里以志汇餐饮小程序为例,找到代码:

private function unifiedorder() {
$url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
$parameters = array(
'appid' => $this->appid, //小程序ID
'mch_id' => $this->mch_id, //商户号
'nonce_str' => $this->createNoncestr(), //随机字符串
// 'body' => 'test', //商品描述
'body' => $this->body,
// 'out_trade_no' => '2015450806125348', //商户订单号
'out_trade_no'=> $this->out_trade_no,
// 'total_fee' => floatval(0.01 * 100), //总金额 单位 分
'total_fee' => $this->total_fee,
// 'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], //终端IP
'spbill_create_ip' => $_SERVER['REMOTE_ADDR'], //终端IP
//'notify_url' => 'http://www.weixin.qq.com/wxpay/pay.php', //通知地址 确保外网能正常访问
'notify_url' => $this->root.'addons/zh_dianc/payment/wechat/notify.php', //通知地址 确保外网能正常访问
'openid' => $this->openid, //用户id
'trade_type' => 'JSAPI'//交易类型
);

很明显是 “ $this->root.”这个地方出了问题,继续翻代码,看看 root 是哪来的

function __construct($appid, $openid, $mch_id, $key,$out_trade_no,$body,$total_fee,$root)

是类的初始化参数,那我们就反查类的创建对象,找到代码块:

        pdo_update('wpdc_ydorder', array('ydcode' => $out_trade_no), array('id' => $_GPC['order_id']));
        $total_fee = $_GPC['money'];
        $root = $_W['siteroot'];
        if (empty($total_fee)) //押金
        {
            $body = "订单付款";
            $total_fee = floatval(99 * 100);
        } else {
            $body = "订单付款";
            $total_fee = floatval($total_fee * 100);
        }
        $weixinpay = new WeixinPay($appid, $openid, $mch_id, $key, $out_trade_no, $body, $total_fee, $root);
        $return = $weixinpay->pay();
        echo json_encode($return);
    }

很明显,就是“$root = $_W['siteroot'];”这句代码的问题了,根据之前的经验,我们稍加修改就可以了,完成以后我们再进行支付测试,就可以发现正常了。

完整代码下载:

温馨提示: 隐藏内容需要 回复评论 后才能查看, 评论后请 刷新 !.

微信公众号:大雕哥
只服务一小部分有独立思考的高端用户!
100000人已关注
分享到:
赞(6) 打赏

评论89

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #88
    前来学习一下!
    aaa2019-01-24 23:04:35回复
  2. #87
    ?? 前来学习一下!
    朝博2019-01-30 0:59:37回复
  3. #86
    h5支付也遇到了这个问题!!!!!
    2019-12-10 16:24:09回复
  4. #85
    怎样才能看到答案啊???
    2019-12-10 16:30:21回复
  5. #84
    学习了,正遇到类似问题,
    5308a2019-12-16 2:18:05回复
  6. #83
    谢谢你。。。。。。。。。。。。。
    谢谢大大大2019-12-16 17:04:21回复
  7. #82
    我的是知乎答题王出现这个情况
    中国二进制2019-12-17 0:22:28回复
  8. #81
    就是这个问题,看看怎么解决
    kkk2020-01-11 9:54:11回复
1 7 8 9

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏