微信开发-微信支付-回调(notify_url)失败-解决思路

8 篇文章 0 订阅
2 篇文章 0 订阅
首先,要提醒一下。微信支付跟支付回调是分开的。支付回调通常是微信收款成功后,回调你的php接口(带上$attach_data),在php接口中你根据$attach_data将购买的信息存到数据库。但微信并不保证支付回调一定成功。回调不成功时,微信会继续在30分钟内8次回调你的接口,如果一直返回false,微信应该不会无限次的去回调。这样,用户购买了,但购买记录没有存库,会很麻烦。

写微信支付时,我将生成订单参数写成了php接口,前端调php接口拿到订单参数,再在微信浏览器中调起微信支付,付款成功,但支付回调一直不成功。

我找出回调失败原因的思路是,在notify_url中,拿到微信返回来的数据,存到数据库里
//thinkphp中
$xml = $GLOBALS['HTTP_RAW_POST_DATA'];
D('ApplyShare')->update(1, ['apply_reason' => $xml]);
数据库中存到的数据如下:
<xml><appid><![CDATA[wxe6c6ab2ef372xxxx]]></appid>
<attach><![CDATA[2&85&139&0]]></attach>
<bank_type><![CDATA[CFT]]></bank_type>
<cash_fee><![CDATA[1]]></cash_fee>
<fee_type><![CDATA[CNY]]></fee_type>
<is_subscribe><![CDATA[Y]]></is_subscribe>
<mch_id><![CDATA[129933xxxx]]></mch_id>
<nonce_str><![CDATA[6xj94ajjika3io01f50z2cf9658fhhtj]]></nonce_str>
<openid><![CDATA[ojN41uHLEXYuHkrJg2_PaDvxxxxx]]></openid>
<out_trade_no><![CDATA[129933950120170618102333]]></out_trade_no>
<result_code><![CDATA[SUCCESS]]></result_code>
<return_code><![CDATA[SUCCESS]]></return_code>
<sign><![CDATA[5060B8EE326BD346B7808D9996594A79]]></sign>
<time_end><![CDATA[20170618102338]]></time_end>
<total_fee>1</total_fee>
<trade_type><![CDATA[JSAPI]]></trade_type>
<transaction_id><![CDATA[4001862001201706186249259476]]></transaction_id>
</xml>
然后就可以在本地用post方式将该xml数据调notify_url,找出错误信息
最后发现我的错误原因是将订单参数封装成接口时,文件(WxPay.Api.php和WxPay.Notify.php)的引入路径出错了,在notify.php文件中将上两个文件路径修改为绝对路径之后,回调成功了
  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值