问题描述(question)
在微信公众号支付的回调中, 通过以下代码取不到return_code参数
private static void doNotify(HttpServletRequest req, HttpServletResponse resp) throws IOException {
System.out.println("进入回调.................................");
resp.setContentType("text/xml;charset=utf-8");
resp.setCharacterEncoding("utf-8");
String resultCode = req.getParameter("return_code");
System.out.println("进入回调."+resultCode);
//这里得到 resultCode 未 null
//TODO 其它代码...
}
问题原因
微信公众号支付的回调中,返回的参数并不在url中,而是在请求的body中.
解决方案
参考代码:
private static void doNotify(HttpServletRequest req, HttpServletResponse resp) throws IOException {
System.out.println("进入回调.................................");
resp.setContentType("text/xml;charset=utf-8");
resp.setCharacterEncoding("utf-8");
try {
InputStream inputStream = req.getInputStream();
SAXReader reader = new SAXReader();
Document doc = reader.read(in);
System.out.println(doc.asXML());
//TODO 在doc中有相应的参数,例如result_code
} catch (DocumentException e) {
e.printStackTrace();
}
//TODO 其它代码...
}
评一波