From 8e8f3608807bdb8dd801656b0ac9f5c2ded796a4 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 11 Jun 2020 12:11:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BE=AE=E4=BF=A1=E6=94=AF?= =?UTF-8?q?=E4=BB=98bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/callback/WxPayController.java | 110 +++++++++--------- .../service/impl/WxPayOrderServiceImpl.java | 66 ++++++----- 2 files changed, 93 insertions(+), 83 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java index f068814c8..191e05445 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxPayController.java @@ -55,58 +55,64 @@ public class WxPayController extends BaseController { @ResponseBody public String _payNotify(HttpServletRequest request) throws IOException, JDOMException { logger.info("[" +getIpAddr() + "]微信支付回调"); - 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 { - paramMap = WxPayment.xmlToMap(resultxml); - logger.info("微信支付回调, notify, param: " + paramMap.toString() ); - String response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); - logger.info("微信支付回调, notify success, req : " + resultxml); - return response; - } catch (BizMessageException e) { - if (paramMap == null) { - logger.error("微信支付回调, order create error, e: " + e.getMessage()); - } else { - logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); - } - SortedMap resultMap = new TreeMap<>(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", e.getMessage()); - return XmlUtil.getRequestXml(resultMap); - } catch (MallinkException e) { - if (paramMap == null) { - logger.error("微信支付回调, order create error, e: " + e.getMessage()); - } else { - logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); - } - SortedMap resultMap = new TreeMap<>(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", e.getMessage()); - return XmlUtil.getRequestXml(resultMap); - } catch (Exception e) { - if (paramMap == null) { - logger.error("微信支付回调, order create error, e: " + e.getMessage()); - } else { - logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); - } - SortedMap resultMap = new TreeMap(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", e.getMessage()); - return XmlUtil.getRequestXml(resultMap); - } + SortedMap resultMap = new TreeMap(); + resultMap.put("return_code", "SUCCESS"); + resultMap.put("return_msg", "OK"); + return XmlUtil.getRequestXml(resultMap); + + +// 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 { +// paramMap = WxPayment.xmlToMap(resultxml); +// logger.info("微信支付回调, notify, param: " + paramMap.toString() ); +// String response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); +// logger.info("微信支付回调, notify success, req : " + resultxml); +// return response; +// } catch (BizMessageException e) { +// if (paramMap == null) { +// logger.error("微信支付回调, order create error, e: " + e.getMessage()); +// } else { +// logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); +// } +// SortedMap resultMap = new TreeMap<>(); +// resultMap.put("return_code", "FAIL"); +// resultMap.put("return_msg", e.getMessage()); +// return XmlUtil.getRequestXml(resultMap); +// } catch (MallinkException e) { +// if (paramMap == null) { +// logger.error("微信支付回调, order create error, e: " + e.getMessage()); +// } else { +// logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); +// } +// SortedMap resultMap = new TreeMap<>(); +// resultMap.put("return_code", "FAIL"); +// resultMap.put("return_msg", e.getMessage()); +// return XmlUtil.getRequestXml(resultMap); +// } catch (Exception e) { +// if (paramMap == null) { +// logger.error("微信支付回调, order create error, e: " + e.getMessage()); +// } else { +// logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); +// } +// SortedMap resultMap = new TreeMap(); +// resultMap.put("return_code", "FAIL"); +// resultMap.put("return_msg", e.getMessage()); +// return XmlUtil.getRequestXml(resultMap); +// } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index cbfcd3c2f..5f0a6f60c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -116,9 +116,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}"); private void handleSuccessOrder(WxPayOrder oldRecord,WxOrder order,Map retMap) { - //更新wxPayOrder Date curDate = new Date(); if (oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()) { + //更新wxPayOrder oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); String timEndStr = retMap.get("time_end"); Date timeEnd = null; @@ -134,37 +134,41 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { oldRecord.setTransactionId(transactionId); oldRecord.setUpdateTime(curDate); wxPayOrderMapper.updateById(oldRecord); + + //处理其他信息 + WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId()); + if(wxCoupon != null) { + if (isOrderGroupCoupon(oldRecord, wxCoupon)) { + // 如果是Coupon是拼团, 创建拼团信息, 不创建COUPON_ORDER + try { + wxOrderGroupService.createOrderGroup(order, wxCoupon); + } catch (Exception e) { + logger.error("参团失败" + e.getMessage()); + order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_FAILD.getCode()); + order.setUpdateDate(new Date()); + wxOrderMapper.updateById(order); + throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD); + } + } else { + // 普通券, 修改订单状态 + try { + wxOrderService.couponOrderSuccess(order); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单更新"); + } + // 下订单完成,发送内部消息 + try { + wxOrderService.sendOrderSuccessActionMsg(order); + } catch (Exception e) { + logger.error("内部消息发送失败: " + e.getMessage()); + throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); + } + } + } + } - WxCoupon wxCoupon = wxCouponMapper.selectById(order.getProductId()); - if(wxCoupon != null) { - if (isOrderGroupCoupon(oldRecord, wxCoupon)) { - // 如果是Coupon是拼团, 创建拼团信息, 不创建COUPON_ORDER - try { - wxOrderGroupService.createOrderGroup(order, wxCoupon); - } catch (Exception e) { - logger.error("参团失败" + e.getMessage()); - order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_FAILD.getCode()); - order.setUpdateDate(new Date()); - wxOrderMapper.updateById(order); - throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD); - } - } else { - // 普通券, 修改订单状态 - try { - wxOrderService.couponOrderSuccess(order); - } catch (Exception e) { - logger.error(e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "订单更新"); - } - // 下订单完成,发送内部消息 - try { - wxOrderService.sendOrderSuccessActionMsg(order); - } catch (Exception e) { - logger.error("内部消息发送失败: " + e.getMessage()); - throw new MallinkException(ErrorCode.MSG_INSIDE_ERROR); - } - } - } + } @Override