前面我们说了统一下单(公众号同样适用只是参数有细微的差别,一定要注意)
接着说一下微信支付成功之后支付结果通用通知
该链接是通过【统一下单API】中提交的参数notify_url设置,如果链接无法访问,商户将无法接收到微信通知。
通知url必须为直接可访问的url,不能携带参数。示例:notify_url:“https://xxx.com”sn
[java] view plain copy
- InputStream inStream = request.getInputStream();
- ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
- byte[] buffer = new byte[1024];
- int len = 0;
- while ((len = inStream.read(buffer)) != -1) {
- outSteam.write(buffer, 0, len);
- }
- System.out.println("~~~~~~~~~~~~~~~~付款成功~~~~~~~~~");
- outSteam.close();
- inStream.close();
- String result = new String(outSteam.toByteArray(), "utf-8");// 获取微信调用我们notify_url的返回信息
- Map<Object, Object> map = PayCommonUtil.doXMLParse(result);
- if (map.get("result_code").toString().equalsIgnoreCase("SUCCESS")) {
- t;pre name="code" class="java"> //验证签名,在网上看到很多人都不去验证签名,这种做法,一般情况下不会有问题,但是。。。。。,多的我就不说了
- <img src="https://img-blog.csdnimg.cn/2022010705145735250.png" alt="" />
- if (verifyWeixinNotify(map)) {
- //订单处理
- response.getWriter().write(PayCommonUtil.setXML("SUCCESS", "OK")); // 告诉微信服务器,我收到信息了,不要在调用回调action了
- }
- }
- bsp;
[java] view plain copy
- public boolean verifyWeixinNotify(Map<Object, Object> map) {
- SortedMap<String, Object> parameterMap = new TreeMap<String, Object>();
- String sign = (String) map.get("sign");
- for (Object keyValue : map.keySet()) {
- if(!keyValue.toString().equals("sign")){
- parameterMap.put(keyValue.toString(), map.get(keyValue));
- }
- }
- String createSign = PayCommonUtil.createSign("UTF-8", parameterMap);
- if(createSign.equals(sign)){
- return true;
- }else{
- return false;
- }
- }
到此通知也说完了,接下的一篇博文来我们说说退款接口,今天就不写了,下班了,明天再接着说