微信支付回调

//线程池

private ExecutorServiceexecutorService = Executors.newFixedThreadPool(20);

/**

* 微信支付回调

*

* @param request

* @param response

*/

@RequestMapping(value ="/wxpay_callback", produces ="text/html;charset=UTF-8")

public String wxReturnPay(HttpServletRequest request, HttpServletResponse response) {

/**

    * 返回成功xml

*/

    String resSuccessXml ="";

/**

    * 返回失败xml

*/

    String resFailXml ="";

String notityXml ="";

String inputLine;

try {

request.setCharacterEncoding("GBK");

BufferedReader bf =new BufferedReader(new InputStreamReader(request.getInputStream(),"GBK"));

while ((inputLine = bf.readLine()) !=null) {

notityXml += inputLine;

}

if (StrUtil.isBlank(notityXml)) {

BufferedOutputStream out =new BufferedOutputStream(response.getOutputStream());

out.write(resFailXml.getBytes());

out.flush();

out.close();

}else {

BufferedOutputStream out =new BufferedOutputStream(response.getOutputStream());

out.write(resSuccessXml.getBytes());

out.flush();

out.close();

}

}catch (IOException e) {

log.error(e.getMessage(), e);

}

JSONObject json = JSONUtil.xmlToJson(notityXml);

JSONObject json1 = (JSONObject) json.get("xml");

System.out.println("--------------------------------------------");

System.out.println(json1);

System.out.println("--------------------------------------------");

String merBillNo = (String) json1.get("out_trade_no");

//判断订单是否存在

    QueryWrapper queryReg =new QueryWrapper();

queryReg.lambda().eq(RegEntity::getMerBillNo, merBillNo);

RegEntity reg =regService.getOne(queryReg);

if (ObjectUtil.isNull(reg)) {

//订单处理

return resFailXml;

}


executorService.execute(new Runnable() {

@Override

        public void run() {

log.info("支付回调开始,订单号:" +merBillNo);

try {

//回调业务

}catch (Exception e) {

log.error("微信回调业务处理报错,params:{}" ,json1, e);

}

}

});

log.error("微信回调业务成功:" + json1);

return resSuccessXml;

}

你可能感兴趣的:(微信支付回调)