Home  >  Article  >  Backend Development  >  微信支付,1次支付后,回调通知好像请求有很多次,这样会不会重复入库。。。

微信支付,1次支付后,回调通知好像请求有很多次,这样会不会重复入库。。。

WBOY
WBOYOriginal
2016-06-06 20:06:082476browse

这个是1次微信支付的回调通知,可以看出来有7个,而且时间间隔还蛮大的。这样会不会重复校验支付信息并入库,同理也会增大服务器压力吧
微信支付,1次支付后,回调通知好像请求有很多次,这样会不会重复入库。。。

我有反馈给微信哦,我用的是官方提供的PHP SDK,代码如下:

<code>// 前面的内容和微信SDK一模一样,省略了
Log::DEBUG("begin notify");
$notify = new PayNotifyCallBack();
$notify->Handle(false);

// 返回给微信确认
echo $notify->ToXml();</code>

但是好像不管用,于是我就将Handle中的false修改为true,结果好像还是不管用

<code>// 前面的内容和微信SDK一模一样,省略了
Log::DEBUG("begin notify");
$notify = new PayNotifyCallBack();
$notify->Handle(true);

// 返回给微信确认
echo $notify->ToXml();</code>

请问要怎么做咧?是不是我有遗漏什么,求解

回复内容:

这个是1次微信支付的回调通知,可以看出来有7个,而且时间间隔还蛮大的。这样会不会重复校验支付信息并入库,同理也会增大服务器压力吧
微信支付,1次支付后,回调通知好像请求有很多次,这样会不会重复入库。。。

我有反馈给微信哦,我用的是官方提供的PHP SDK,代码如下:

<code>// 前面的内容和微信SDK一模一样,省略了
Log::DEBUG("begin notify");
$notify = new PayNotifyCallBack();
$notify->Handle(false);

// 返回给微信确认
echo $notify->ToXml();</code>

但是好像不管用,于是我就将Handle中的false修改为true,结果好像还是不管用

<code>// 前面的内容和微信SDK一模一样,省略了
Log::DEBUG("begin notify");
$notify = new PayNotifyCallBack();
$notify->Handle(true);

// 返回给微信确认
echo $notify->ToXml();</code>

请问要怎么做咧?是不是我有遗漏什么,求解

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7

请参考这个文档。

在你处理业务之后,你需要向微信服务器反馈,这样就可以停止它继续请求。

还有,你的代码中,当然要判断是否对同一订单进行重复处理。

它提供的sdk我没怎么研究过,其实处理完业务直接 echo 'SUCCESS'就可以了,后期,处理业务的逻辑应该做成异步的。

回调里处理订单前先根据订单号判断该订单是否已处理,已处理的话直接echo 'SUCCESS'

请向微信的服务端响应成功的值,以终止通知,同时,在处理逻辑中进行判断是否处理过了,双重保险。

微信回调如果你给他返回成功信息,他是不会重复调的

我也遇到过这种问题

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn