一笔微信支付账单怎么查询重复支付

在这里和大家说一下微信APP支付时出现的一个问题!

因为我之前在后台已经将微信APP支付的服务端SDK集成进项目了,然后预支付成功后将签名返回给APP端,他们也调起来了,并成功收到异步回调通知!

但过了几天后就出现这个 "商户订单号重复" 这个问题! 后来经过调试,发现立即支付的单不会有这个问题,只有待付款的订单才会出现这个问题!

待付款的单指的是: 使用微信支付,在微信支付界面,由于余额不足等原因,没有进行支付并关闭了支付页面,此时订单状态为“待付款”

但是又不是全部的待付款订单才会出现这个问题,后来再经过调试才知道,原来是项目里商家可以在后台里直接对待付款订单进行修改价格!所以,基本确定问题了,就是我们在微信的服务器生成预支付后的订单后,微信的服务器是有记录这个预支付单的,单号,单的价格,单的商品描述等信息.... 然后我们去修改这个订单的商品描述或者订单价格后, 然后对待付款订单进行付款而再次调起支付的时候,这时候,待付款的订单号(即商户订单候,号,out_trade_no)再上一次已经在微信服务器生成预支付单了,现在去改变了价格后又再次向微信服务器生成预支付单,这时微信那边是不承认同一个商户订单号不同商品描述或不同订单价格的,所以在返回签名sign后给app端才出现的报错!! 

  在服务端支付SDK内封装商户订单号out_trade_no 字段的时候,我们需要对订单号做一下处理,如图:

这样的做法就是我们在微信服务器创建的预支付订单每次都是不一样的!!! 假如现在我去支付订单,我第一次生成预支付单号是 666_1122     这样就能避免重复提交相同的订单号了,但是,别认为这样就可以了!  记住,还有个异步通知回调请求,

        切割后就能获取我们原本的订单号了,拿到原本订单号才能根据订单号在我们数据库去查对应的订单,然后在做业务处理!!!

  这样基本就成了!  然后我们可以创建一张订单支付记录信息表,在每次回调的时候把未切割的订单号给记录起来,就是微信服务器那边的预支付订单号    这样做是为了以防万一支付出现故障还是某些BUG导致交易损失,出现这类情况,我们就可以拿数据库的订单支付记录信息表的数据拿到支付流水号(预支付订单号)去跟微信后台对账!(这类情况我还没遇过),只是堤防!

  OK!那到此结束吧! 如果有什么问题可以在评论处留言,如果我工作忙没时间回复可以加下此QQ群:  进群说找小黑就行了!

}

关于您反馈的重复支付/多支付的问题,信息已提交成功,我们为您进一步核实,请留意我们的短信回复。

}

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

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

// 前面的内容和微信SDK一模一样,省略了
 
但是好像不管用,于是我就将
Handle中的false修改为true,结果好像还是不管用
// 前面的内容和微信SDK一模一样,省略了
 
请问要怎么做咧?是不是我有遗漏什么,求解

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

我有反馈给微信哦,我用的是官方提供的PHP SDK,代码如下:
// 前面的内容和微信SDK一模一样,省略了
 
但是好像不管用,于是我就将
Handle
中的false修改为true,结果好像还是不管用
// 前面的内容和微信SDK一模一样,省略了
 
请问要怎么做咧?是不是我有遗漏什么,求解








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


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


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


回调里处理订单前先根据订单号判断该订单是否已处理,已处理的话直接
echo 'SUCCESS'
请向微信的服务端响应成功的值,以终止通知,同时,在处理逻辑中进行判断是否处理过了,双重保险。
微信回调如果你给他返回成功信息,他是不会重复调的
}

我要回帖

更多关于 微信扫码支付怎么用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信