1. 程式人生 > >微信公眾號支付 (四、支付結果通知)

微信公眾號支付 (四、支付結果通知)

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;
	}