当前位置:   article > 正文

重复收到微信支付异步通知_项目里的微信支付这块,在支付完微信通知这里,收到两次微信相同的支付通知,怎么防

项目里的微信支付这块,在支付完微信通知这里,收到两次微信相同的支付通知,怎么防

微信支付的机制需要我们接收微信的异步通知,通过内网穿透工具注册域名后可以在本地接收到微信发来的异步通知。

wxPayConfig.setNotifyUrl("https://xzk.mynatapp.cc/pay/notify/");//接收异步通知

在控制层接收微信发来的异步通知

  1. @PostMapping("/notify")
  2. @ResponseBody
  3. //因为是一组数据所以需要用body接收
  4. public String asyncNotify(@RequestBody String notifyData){
  5. return payService.asyncNotify(notifyData);
  6. }

service层打印日志

  1. @Override
  2. public void asyncNotify(String notifyData) {
  3. log.info("payResponse={}" ,payResponse);
  4. }

1.重复接收通知

2.解决办法

微信开发具体描述如下,需要在接收到异步通知后返回一串xml格式的信息

 需要先将service层接收异步通知的接口改为String返回值的

  1. public String asyncNotify(String notifyData) {
  2. PayResponse payResponse = bestPayService.asyncNotify(notifyData);
  3. log.info("payResponse={}" ,payResponse);
  4. //剔除重复通知
  5. return "<xml>\n" +
  6. " <return_code><![CDATA[SUCCESS]]></return_code>\n" +
  7. " <return_msg><![CDATA[OK]]></return_msg>\n" +
  8. "</xml>";
  9. }

然后再controller层调用这个接口时就会返回给微信一串xml的参数。

用postman模拟微信返回异步通知(这个xml信息可以在接收异步通知的时候打个断点,就可以拿到了)

  1. <xml><appid><![CDATA[wxd898fcb01713c658]]></appid>
  2. <bank_type><![CDATA[OTHERS]]></bank_type>
  3. <cash_fee><![CDATA[1]]></cash_fee>
  4. <fee_type><![CDATA[CNY]]></fee_type>
  5. <is_subscribe><![CDATA[N]]></is_subscribe>
  6. <mch_id><![CDATA[1483469312]]></mch_id>
  7. <nonce_str><![CDATA[H1n47AffiY0Wg3WY]]></nonce_str>
  8. <openid><![CDATA[oTgZpwaXTs2GzvkwMNDzbWIcrqjA]]></openid>
  9. <out_trade_no><![CDATA[235476556759324]]></out_trade_no>
  10. <result_code><![CDATA[SUCCESS]]></result_code>
  11. <return_code><![CDATA[SUCCESS]]></return_code>
  12. <sign><![CDATA[D749E8D9001EB9C95D3824A0EFEE1C1F]]></sign>
  13. <time_end><![CDATA[20220519211721]]></time_end>
  14. <total_fee>1</total_fee>
  15. <trade_type><![CDATA[NATIVE]]></trade_type>
  16. <transaction_id><![CDATA[4200001494202205192595826014]]></transaction_id>
  17. </xml>

 post后台返回数据如下

 在微信支付中测试后也是只会返回一次异步通知。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/184025?site
推荐阅读
相关标签
  

闽ICP备14008679号