From 4d30178f191e29f606c20a92bad14753a1247457 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Tue, 28 Aug 2018 09:49:08 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=AE=A2=E5=8D=95=E6=94=AF=E4=BB=98][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E6=94=AF=E4=BB=98=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxPayController.java | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java index b3ed1663a..67fb91914 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java @@ -10,12 +10,16 @@ import com.simple.service.WxRefundOrderService; import com.simple.utils.XmlUtil; import org.apache.commons.io.IOUtils; import org.apache.log4j.Logger; +import org.jdom.JDOMException; +import org.springframework.http.MediaType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; import java.nio.charset.Charset; -import java.util.LinkedHashMap; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; @@ -40,22 +44,36 @@ public class WxPayController extends BaseController { * @return 接收微信异步通知 * @throws Exception 可能产生的任何异常 */ - @RequestMapping(value = "/pay") - public String _payNotify(HttpServletRequest request) throws Exception { + @RequestMapping(value = "/pay", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) + @ResponseBody + public String _payNotify(HttpServletRequest request) throws IOException, JDOMException { + logger.info("微信支付回调"); + InputStream inStream = request.getInputStream(); + ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len = 0; + while ((len = inStream.read(buffer)) != -1) { + outSteam.write(buffer, 0, len); + } + String resultxml = new String(outSteam.toByteArray(), Charset.forName("UTF-8")); + logger.info(resultxml); + + outSteam.close(); + inStream.close(); Map paramMap = null; + try { - String xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); - paramMap = WxPayment.xmlToMap(xml); - logger.info("payment wxpay, notify, param: " + paramMap.toString() ); + paramMap = WxPayment.xmlToMap(resultxml); + logger.info("微信支付回调, notify, param: " + paramMap.toString() ); String response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); - logger.info("payment wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); + logger.info("微信支付回调, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); return response; } catch (BizMessageException e) { if (paramMap == null) { - logger.error("payment wxpay, order create error, e: " + e.getMessage()); + logger.error("微信支付回调, order create error, e: " + e.getMessage()); } else { - logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + logger.error("微信支付回调, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); } SortedMap resultMap = new TreeMap<>(); resultMap.put("return_code", "FAIL"); @@ -63,9 +81,9 @@ public class WxPayController extends BaseController { return XmlUtil.getRequestXml(resultMap); } catch (MallinkException e) { if (paramMap == null) { - logger.error("payment wxpay, order create error, e: " + e.getMessage()); + logger.error("微信支付回调, order create error, e: " + e.getMessage()); } else { - logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + logger.error("微信支付回调, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); } SortedMap resultMap = new TreeMap<>(); resultMap.put("return_code", "FAIL"); @@ -73,9 +91,9 @@ public class WxPayController extends BaseController { return XmlUtil.getRequestXml(resultMap); } catch (Exception e) { if (paramMap == null) { - logger.error("payment wxpay, order create error, e: " + e.getMessage()); + logger.error("微信支付回调, order create error, e: " + e.getMessage()); } else { - logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + logger.error("微信支付回调, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); } SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL");