Created
July 16, 2019 04:30
-
-
Save diaolizhi/4e24a5e8a67adfbc58365a4e99f2c788 to your computer and use it in GitHub Desktop.
微信支付回调接口,接收通知并回复
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@RequestMapping("callback") | |
public void callback(HttpServletRequest request, HttpServletResponse response) throws Exception { | |
InputStream inputStream = request.getInputStream(); | |
//BufferedReader是包装设计模式,性能更搞 | |
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream,"UTF-8")); | |
StringBuffer sb = new StringBuffer(); | |
String line ; | |
while ((line = in.readLine()) != null){ | |
sb.append(line); | |
} | |
in.close(); | |
inputStream.close(); | |
Map<String,String> callbackMap = WXPayUtil.xmlToMap(sb.toString()); | |
System.out.println(callbackMap.toString()); | |
SortedMap<String,String> sortedMap = WXPayUtil.getSortedMap(callbackMap); | |
//判断签名是否正确 | |
if(WXPayUtil.isCorrectSign(sortedMap,wxPayConfig.getKey())){ | |
if("SUCCESS".equals(sortedMap.get("result_code"))){ | |
String outTradeNo = sortedMap.get("out_trade_no"); | |
// 根据流水号查找订单 | |
VideoOrder dbVideoOrder = videoOrderService.findByOutTradeNo(outTradeNo); | |
if(dbVideoOrder != null && dbVideoOrder.getState()==0){ //判断逻辑看业务场景 | |
VideoOrder videoOrder = new VideoOrder(); | |
videoOrder.setOpenid(sortedMap.get("openid")); | |
videoOrder.setOutTradeNo(outTradeNo); | |
videoOrder.setNotifyTime(new Date()); | |
videoOrder.setState(1); | |
// 更新订单信息:支付状态、openid、通知日期 | |
int rows = videoOrderService.updateVideoOderByOutTradeNo(videoOrder); | |
if(rows == 1){ //通知微信订单处理成功 | |
response.setContentType("text/xml"); | |
response.getWriter().println("success"); | |
return; | |
} | |
} | |
} | |
} | |
//都处理失败 | |
response.setContentType("text/xml"); | |
response.getWriter().println("fail"); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment