微信回调接口java返回true_java 微信支付异步回调接口
1.微信支付異步回調接口
@SuppressWarnings("static-access")
@RequestMapping("callback")
@ResponseBody
public Object callback(HttpServletRequest request,HttpServletResponse response) throws Exception{
ResultBean result = new ResultBean();
String inputLine="";
String notityXml = "";
try {
while ((inputLine = request.getReader().readLine()) != null) {
notityXml += inputLine;
}
request.getReader().close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("異步回調XML信息:"+notityXml);
if(!notityXml.isEmpty()){
//解析并讀取統一下單中的參數信息
MapprepayMap = XmlUtil.getPrepayMapInfo(notityXml);
if(!prepayMap.isEmpty()){
String orderId = prepayMap.get("out_trade_no")+"";
String resCode=prepayMap.get("result_code")+"";
String returnCode=prepayMap.get("return_code")+"";
System.out.println("解析并讀取統一下單中的參數信息:"+orderId+"==="+resCode+"==="+returnCode);
}
//回調中業務邏輯完畢
}else{
result.fillCode(ResultBeanCodeEnum.OPERA_FAIL);
}
}else{
result.fillCode(ResultBeanCodeEnum.OPERA_FAIL);
}
return result;
}
2.解析并讀取統一下單中的參數信息工具類
//解析xml
public static ?MapgetPrepayMapInfo(String Str) ?{
//解析并讀取統一下單中的參數信息
//1.去掉前后的xml標簽
String notityXml = Str.replaceAll("?xml>", "");
System.out.println(notityXml);
//2.匹配一段一段這樣的數據
Pattern pattern = Pattern.compile("");
Matcher matcher = pattern.matcher(notityXml);
//3.配置是否包含 CDATA 包裹的數據
Pattern pattern2 = Pattern.compile("!.*]");
MapmapInfo = new HashMap<>();
while(matcher.find()) {
//獲取鍵
String key = matcher.group().replaceAll(".*/", "");
key = key.substring(0, key.length() - 1);
Matcher matcher2 = pattern2.matcher(matcher.group());
String value = matcher.group().replaceAll("?.*?>", "");
//獲取值
if(matcher2.find() && !value.equals("DATA")) {
value = matcher2.group().replaceAll("!.*\\[", "");
value = value.substring(0, value.length() - 2);
}
mapInfo.put(key, value);
}
return mapInfo;
}
總結
以上是生活随笔為你收集整理的微信回调接口java返回true_java 微信支付异步回调接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: u盘无法识别xp系统怎么办 U盘在XP系
- 下一篇: 我的世界java和网易能联机吗_网易我的