大雕哥
你身边最懂互联网的朋友

微信小程序可以完成微信支付但没有回调,也没有完成订单状态 微信支付异步通知https

最近在使用禾匠商城小程序模块的时候,遇上了一个很头疼的问题,可以发起微信支付,也能够支付成功,但支付之后,订单状态还是显示未支付。

根据经验,这很大概率是微信支付回调没有设置好,先检查微信支付的3个产品有没有开通:《微信小程序调用支付JSAPI缺少参数: total_fee的解决办法

然后再看看微擎微赞系统有没有开启https功能:《微擎https与微信支付的坑

反复检查了一下,上面设置都没有什么问题,只能从代码方面找原因了,微信支付回调的统一接口:

禾匠商城小程序的目录太多,并且目录命名也比较任性,找到对应的文件很难,根据以前开发的经验,微信支付回调接口都有统一的必填参数:“notify_url”

直接全盘检索“notify_url”,找到对应的代码块:

$res = $this->wechat->pay->unifiedOrder([
'body' => $goods_names,
'out_trade_no' => $this->order->order_no,
'total_fee' => $this->order->pay_price * 100,
'notify_url' => \Yii::$app->request->hostInfo . \Yii::$app->request->baseUrl . '/pay-notify.php',
'trade_type' => 'JSAPI',
'openid' => $this->user->wechat_open_id,
]);

再进一步查看hostInfo函数的代码

public function getHostInfo()
{
if ($this->_hostInfo === null) {
$secure = $this->getIsSecureConnection();
$http = $secure ? 'https' : 'http';
if (isset($_SERVER['HTTP_HOST'])) {
$this->_hostInfo = $http . '://' . $_SERVER['HTTP_HOST'];
} elseif (isset($_SERVER['SERVER_NAME'])) {
$this->_hostInfo = $http . '://' . $_SERVER['SERVER_NAME'];
$port = $secure ? $this->getSecurePort() : $this->getPort();
if (($port !== 80 && !$secure) || ($port !== 443 && $secure)) {
$this->_hostInfo .= ':' . $port;
}
}
}

return $this->_hostInfo;
}

找到原因了:

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

修改完成后刷新微擎、禾匠商城小程序的缓存,重启一下IIS,再试一下微信支付,果然可以了。

赞(0) 解决问题,就是我最大的快乐
转载请保留出处:大雕哥 » 微信小程序可以完成微信支付但没有回调,也没有完成订单状态
分享到: 更多 (0)

评论 156

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #141

    同样问题,同样问题

    lans7天前回复
  2. #142

    什么原因 同样问题

    kucha4天前回复
  3. #143

    什么原因 同样问题

  4. #144

    什么原因 同样问题

    永远的后来3天前回复
  5. #145

    什么原因 同样问题

    牛奶3天前回复
  6. #146

    到底是什么原因啊

    12小时前回复
  7. #147

    同样问题,同样问题

    aaa10小时前回复

大雕哥,做你身边最懂互联网的朋友

邮箱订阅联系我们

如果觉得文章有用可以打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏