java 微信支付成功后一直重复执行回调函数
java 微信支付成功后一直重复执行回调函数 代码如下 回调函数已经进来了我也是按照微信文档发了报文出去 结果一直重复回调 是我写的代码有问题吗
@RequestMapping("/backResponse.do")
public void backResponse(HttpServletRequest request, HttpServletResponse response) throws Exception {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
LogUtil.writeLog("BackRcvResponse接收后台通知开始");
// 获取微信通知服务器发送的后台通知参数
//读取参数
InputStream inputStream ;
StringBuffer sb = new StringBuffer();
inputStream = request.getInputStream();
String s ;
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
while ((s = in.readLine()) != null){
sb.append(s);
}
in.close();
inputStream.close();
Map<String, String> valideData = WXPayUtil.xmlToMap(sb.toString());
Map<String,String> map=new HashMap<>();
//重要!验证签名前不要修改reqParam中的键值对的内容,否则会验签不过
if (!WXPayUtil.isSignatureValid(sb.toString(), config.getKey())) {
LogUtil.writeLog("验证签名结果[失败].");
//验签失败,需解决验签问题
} else {
LogUtil.writeLog("验证签名结果[成功].");
//【注:为了安全验签成功才应该写商户的成功处理逻辑】交易成功,更新商户订单状态
MoneyRespValue value=new MoneyRespValue();
value.firm_id = Long.parseLong(valideData.get("mch_id").toString());
value.sign_code = "000000";
value.b_money = new BigDecimal(Double.valueOf(valideData.get("total_fee").toString())/100);
value.m_money = new BigDecimal(Double.valueOf(valideData.get("total_fee").toString())/100);
value.m_flow_code = valideData.get("out_trade_no").toString();
value.b_flow_code = valideData.get("transaction_id").toString();
value.status = 0;
value.type = 1;
value.bank_id = "999";
value.marketId = Integer.parseInt(valideData.get("mch_id").toString());
value.bank_time = new Date(TimeFunc.strToDate(valideData.get("time_end").toString()).getTime());
value.result = 0l;
value.remark = "微信后台返回成功";
String sign = valideData.get("sign").toString();
map=service.outMoneyCheck(value);
Map<String,String> resMap = new HashMap<>();
String resXml = null;
if(map.get("respCode").toString().equals("0")){
resXml = "<xml>" + "<return_code><![CDATA[SUCCESS]]></return_code>"
+ "<return_msg><![CDATA[OK]]></return_msg>"
+ "</xml> ";
}else {
resXml = "<xml>" + "<return_code><![CDATA[FAIL]]></return_code>"
+ "<return_msg><![CDATA[报文为空]]></return_msg>" + "</xml> ";
}
BufferedOutputStream out = new BufferedOutputStream(
response.getOutputStream());
out.write(resXml.getBytes());
out.flush();
out.close();