微信公眾號支付 (四、支付結果通知)
阿新 • • 發佈:2019-01-10
5.1 微信支付完會返回微信支付結果。返回頻率為:15/15/30/180/1800/1800/1800/1800/3600,單位:秒。
API連線:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7
當return_code為SUCCESS的時候有返回引數。接收後作出判斷。
商戶處理後同步返回給微信引數:
程式碼如下:
HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); request = ServletActionContext.getRequest(); request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); String resString = XmlUtils.parseRequst(request); String resXml = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>" + "<return_msg><![CDATA[報文為空]]></return_msg>" + "</xml> "; if (resString != null && !"".equals(resString)) { resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>" + "<return_msg><![CDATA[OK]]></return_msg>" + "</xml> "; } BufferedOutputStream out = new BufferedOutputStream(Struts2Utils.getResponse().getOutputStream()); out.write(resXml.getBytes()); out.flush(); out.close();
方法parseRequst() 為request轉字串
程式碼如下:
public static String parseRequst(HttpServletRequest request) throws UnsupportedEncodingException { request.setCharacterEncoding("utf-8"); String body = ""; try { ServletInputStream inputStream = request.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "utf-8")); // 設定編碼格式“utf-8”否則獲取中文為亂碼 while (true) { String info = br.readLine(); if (info == null) { break; } if (body == null || "".equals(body)) { body = info; } else { body += info; } } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return body; }