微信支付-接收返回通知结果

前面我们说了统一下单(公众号同样适用只是参数有细微的差别,一定要注意)

接着说一下微信支付成功之后支付结果通用通知

该链接是通过【统一下单API】中提交的参数notify_url设置,如果链接无法访问,商户将无法接收到微信通知。

通知url必须为直接可访问的url,不能携带参数。示例:notify_url:“https://xxx.com”sn

 

 

[java] view plain copy

 

  1. InputStream inStream = request.getInputStream();  
  2. ByteArrayOutputStream outSteam = new ByteArrayOutputStream();  
  3. byte[] buffer = new byte[1024];  
  4. int len = 0;  
  5. while ((len = inStream.read(buffer)) != -1) {  
  6.     outSteam.write(buffer, 0, len);  
  7. }  
  8. System.out.println("~~~~~~~~~~~~~~~~付款成功~~~~~~~~~");  
  9. outSteam.close();  
  10. inStream.close();  
  11. String result = new String(outSteam.toByteArray(), "utf-8");// 获取微信调用我们notify_url的返回信息  
  12. Map<Object, Object> map = PayCommonUtil.doXMLParse(result);  
  13.   
  14.   
  15. if (map.get("result_code").toString().equalsIgnoreCase("SUCCESS")) {  
  16. t;pre name="code" class="java">                                //验证签名,在网上看到很多人都不去验证签名,这种做法,一般情况下不会有问题,但是。。。。。,多的我就不说了  
  17.                            <img src="https://img-blog.csdnimg.cn/2022010705145735250.png" alt="" />  
  18.                            if (verifyWeixinNotify(map)) {  
  19.                                //订单处理  
  20.                                
  21.                             response.getWriter().write(PayCommonUtil.setXML("SUCCESS", "OK")); // 告诉微信服务器,我收到信息了,不要在调用回调action了  
  22.                        }  
  23.               }  
  24.   
  25. bsp;  




[java] view plain copy

 

  1. public boolean verifyWeixinNotify(Map<Object, Object> map) {  
  2.         SortedMap<String, Object> parameterMap = new TreeMap<String, Object>();  
  3.         String sign = (String) map.get("sign");  
  4.         for (Object keyValue : map.keySet()) {  
  5.             if(!keyValue.toString().equals("sign")){  
  6.                 parameterMap.put(keyValue.toString(), map.get(keyValue));  
  7.             }  
  8.               
  9.         }  
  10.         String createSign = PayCommonUtil.createSign("UTF-8", parameterMap);  
  11.         if(createSign.equals(sign)){  
  12.             return true;  
  13.         }else{  
  14.             return false;  
  15.         }  
  16.           
  17.     }  

 

 

 

到此通知也说完了,接下的一篇博文来我们说说退款接口,今天就不写了,下班了,明天再接着说

转载于:https://my.oschina.net/u/2380961/blog/743141

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值