diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java new file mode 100644 index 000000000..d4ff6e902 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java @@ -0,0 +1,107 @@ +package com.simple.controller; + +import com.simple.enums.EnumPayWay; +import com.simple.exception.BizMessageException; +import com.simple.exception.MallinkException; +import com.simple.pay.WxPayment; +import com.simple.service.WxPayOrderService; +import com.simple.service.WxRefundOrderService; +import com.simple.utils.XmlUtil; +import org.apache.commons.io.IOUtils; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.nio.charset.Charset; +import java.util.LinkedHashMap; +import java.util.Map; + +@RestController +@RequestMapping("/WxPay/notify") +public class WxPayController extends BaseController { + + private Logger logger = Logger.getLogger(WxPayController.class); + + @Autowired + private WxPayOrderService wxPayOrderService; + + @Autowired + private WxRefundOrderService wxRefundOrderService; + + /** + * + * @return 接收微信异步通知 + * @throws Exception 可能产生的任何异常 + */ + @RequestMapping(value = "/pay", method = RequestMethod.POST) + public String _payNotify(HttpServletRequest request) throws Exception { + Map paramMap = null; + String response; + try { + String xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); + paramMap = WxPayment.xmlToMap(xml); + logger.info("payment wxpay, notify, param: " + paramMap.toString() ); + response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); + logger.info("payment wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); + return response; + } catch (BizMessageException e) { + logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", e.getMessage()); + return XmlUtil.parseDto2Xml(resultMap, ""); + } catch (MallinkException e) { + logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", e.getMessage()); + return XmlUtil.parseDto2Xml(resultMap, ""); + } catch (Exception e) { + logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", e.getMessage()); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + } + + + /** + * + * @return 接收微信退款异步通知 + * @throws Exception 可能产生的任何异常 + */ + @RequestMapping(value = "/refund", method = RequestMethod.POST) + public String __refundNotify(HttpServletRequest request) throws Exception { + Map paramMap = null; + String response; + try { + String xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); + paramMap = WxPayment.xmlToMap(xml); + logger.info("refund wxpay, notify, param: " + paramMap.toString() ); + response = wxRefundOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); + logger.info("refund wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); + return response; + } catch (BizMessageException e) { + logger.error("refund wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", e.getMessage()); + return XmlUtil.parseDto2Xml(resultMap, ""); + } catch (MallinkException e) { + logger.error("refund wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", e.getMessage()); + return XmlUtil.parseDto2Xml(resultMap, ""); + } catch (Exception e) { + logger.error("refund wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", e.getMessage()); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + } + +} diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index 110c8ddc9..8ab875756 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -99,11 +99,16 @@ public enum ErrorCode{ PAY_ORDER_ERROR(12002, "支付订单异常"), PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR(12003 , "支付验签失败"), - REFUND_ORDER_EXIST(12004, "退款订单已存在"), - REFUND_PAY_ORDER_IS_NOT_EXIST(12005, "退款支付订单不存在"), - REFUND_PAY_ORDER_IS_ZERO(12006, "退款支付订单金额为0"), - REFUND_ORDER_ERROR(12007, "退款订单异常"), - REFUND_ORDER_NOTIFY_CHECK_SIGN_ERROR(12008, "退款验签失败"); + REFUND_ORDER_EXIST(12010, "退款订单已存在"), + REFUND_PAY_ORDER_IS_NOT_EXIST(12011, "退款支付订单不存在"), + REFUND_PAY_ORDER_IS_ZERO(12012, "退款支付订单金额为0"), + REFUND_ORDER_ERROR(12013, "退款订单异常"), + REFUND_ORDER_NOTIFY_CHECK_SIGN_ERROR(12014, "退款验签失败"), + + APP_ID_NOT_FOUND(12020, "APPID没找到"), + MCH_INFO_NOT_FOUND(12021, "商户信息没找到"), + MCH_INFO_NOT_EQUAL(12022, "商户信息不对应"), + ; diff --git a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java index 18bf36e52..267d790c6 100644 --- a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java @@ -19,8 +19,6 @@ public interface WxPayOrderService { */ ResultData createPayOrder(WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay); - void handleOrderPaySuccess(WxPayOrder record, String transactionId); - /** * 异步通知 * @param paramMap 异步通知参数 @@ -29,6 +27,13 @@ public interface WxPayOrderService { */ String notify(Map paramMap, EnumPayWay payWay); + /** + * 支付成功处理 + * @param record + * @param transactionId + */ + void handleOrderPaySuccess(WxPayOrder record, String transactionId); + /** * 页面回调 * @param paramMap 页面通知参数 diff --git a/mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java b/mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java index e9ea7c813..ff4bc8ba7 100644 --- a/mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxRefundOrderService.java @@ -4,7 +4,6 @@ import java.util.*; import com.github.pagehelper.PageInfo; import com.simple.common.ResultData; import com.simple.domain.po.WxAppinfo; -import com.simple.domain.po.WxCUser; import com.simple.domain.po.WxRefundOrder; import com.simple.enums.EnumPayWay; @@ -26,6 +25,29 @@ public interface WxRefundOrderService { * @return */ ResultData queryRefundOrder(WxAppinfo appInfo, WxRefundOrder record); + /** + * 异步通知 + * @param paramMap 异步通知参数 + * @param payWay 支付方式 + * @return + */ + String notify(Map paramMap, EnumPayWay payWay); + + /** + * 处理退款成功 + * @param record + * @param transactionId + * @param refundId + */ + void handleRefundSuccess(WxRefundOrder record, String transactionId, String refundId); + + /** + * 页面回调 + * @param paramMap 页面通知参数 + * @param payWay 支付方式 + * @return + */ + void callback(Map paramMap, EnumPayWay payWay); /** * 根据实体查询分页列表 * diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 620ed95e5..0dda1ca2f 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -1,9 +1,7 @@ package com.simple.service.impl; -import java.math.BigDecimal; import java.util.*; -import cn.binarywang.wx.miniapp.api.WxMaService; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageHelper; @@ -15,6 +13,7 @@ import com.simple.enums.EnumOrderStatus; import com.simple.enums.EnumPayStatus; import com.simple.enums.EnumPayWay; import com.simple.exception.MallinkException; +import com.simple.mapper.WxAppinfoMapper; import com.simple.mapper.WxOrderMapper; import com.simple.mapper.WxPayAccountMapper; import com.simple.mapper.WxPayOrderMapper; @@ -39,6 +38,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { private Logger logger = Logger.getLogger(getClass()); + @Autowired + WxAppinfoMapper wxAppinfoMapper; + @Autowired WxPayAccountMapper wxPayAccountMapper; @@ -163,12 +165,26 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { // 微信订单查询 // 微信关闭订单 + /** + * 提供微信支付回调调用 + * @param paramMap 异步通知参数 + * @param payWay 支付方式 + * @return + */ @Override public String notify(Map paramMap, EnumPayWay payWay) { // how to get wechatAppId, wechatMchId, partnerKey - String wechatAppId = paramMap.get("appId"); + String wechatAppId = paramMap.get("appid"); String wechatMchId = paramMap.get("mch_id"); - String partnerKey = ""; + WxAppinfo appinfo = wxAppinfoMapper.findByAppId(wechatAppId); + if (appinfo == null) { + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); + } + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appinfo.getPayId()); + if (payAccount == null) { + throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); + } + String partnerKey = payAccount.getApiKey(); try { if (payWay == EnumPayWay.PAY_WAY_WEAPP) { boolean signVerified = false; @@ -187,28 +203,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { resultMap.put("return_msg", "订单状态码非SUCCESS"); return XmlUtil.parseDto2Xml(resultMap, ""); } - if (!wechatAppId.equals(paramMap.get("appid"))) { - logger.warn("notify order, wxpay appid is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", "非法请求appid"); - return XmlUtil.parseDto2Xml(resultMap, ""); - } - if (!(wechatMchId.equals(paramMap.get("mch_id")))) { - logger.warn("notify order, wxpay mch_id is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", "非法请求mch_id"); - return XmlUtil.parseDto2Xml(resultMap, ""); - } - if (!"SUCCESS".equals(paramMap.get("result_code"))) { - logger.warn("notify order, wxpay result_code is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); - Map resultMap = new LinkedHashMap<>(); - resultMap.put("return_code", "FAIL"); - resultMap.put("return_msg", "result_code fail"); - return XmlUtil.parseDto2Xml(resultMap, ""); - } String payOrderNo = paramMap.get("out_trade_no"); Long payOrderId = Long.valueOf(payOrderNo); WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); @@ -264,18 +259,29 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } + Date currentDate = new Date(); + // 修改支付订单状态 + try { + WxPayOrder updatePayOrder = new WxPayOrder(); + updatePayOrder.setId(record.getId()); + updatePayOrder.setOrderId(record.getOrderId()); + updatePayOrder.setUpdateTime(currentDate); + updatePayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); + updatePayOrder.setTransactionId(transactionId); + wxPayOrderMapper.updateByPrimaryKeySelective(updatePayOrder); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + // 修改订单状态 - wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS); + try { + wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } - // 修改支付订单状态 - Date currentDate = new Date(); - WxPayOrder updatePayOrder = new WxPayOrder(); - updatePayOrder.setId(record.getId()); - updatePayOrder.setOrderId(record.getOrderId()); - updatePayOrder.setUpdateTime(currentDate); - updatePayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); - updatePayOrder.setTransactionId(transactionId); - wxPayOrderMapper.updateByPrimaryKeySelective(updatePayOrder); /* Map msgMap = new HashMap<>(); try { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index d327a719d..bc9674490 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -9,31 +9,39 @@ import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; import com.simple.common.ResultData; import com.simple.domain.po.*; +import com.simple.enums.EnumOrderStatus; import com.simple.enums.EnumPayStatus; import com.simple.enums.EnumPayWay; import com.simple.enums.EnumRefundStatus; import com.simple.exception.MallinkException; -import com.simple.mapper.WxPayAccountMapper; -import com.simple.mapper.WxPayOrderMapper; -import com.simple.mapper.WxRefundOrderMapper; +import com.simple.mapper.*; import com.simple.pay.WxPay; import com.simple.pay.WxPayment; import com.simple.pay.WxRefundOrderP; import com.simple.service.WxRefundOrderService; import com.simple.utils.BeanUtils; import com.simple.utils.Utility; +import com.simple.utils.XmlUtil; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.simple.common.IdWorker; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; @Service public class WxRefundOrderServiceImpl implements WxRefundOrderService { private Logger logger = Logger.getLogger(getClass()); + + @Autowired + WxAppinfoMapper wxAppinfoMapper; @Autowired WxRefundOrderMapper wxRefundOrderMapper; + @Autowired + WxOrderMapper wxOrderMapper; + @Autowired WxPayOrderMapper wxPayOrderMapper; @@ -306,7 +314,169 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { return new ResultData(ErrorCode.REFUND_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap); } } - // 微信退款结果通知 + + /** + * 微信退款结果通知 + * @param paramMap 异步通知参数 + * @param payWay 支付方式 + * @return + */ + @Override + public String notify(Map paramMap, EnumPayWay payWay) { + // how to get wechatAppId, wechatMchId, partnerKey + String wechatAppId = paramMap.get("appid"); + String wechatMchId = paramMap.get("mch_id"); + WxAppinfo appinfo = wxAppinfoMapper.findByAppId(wechatAppId); + if (appinfo == null) { + logger.error("未找到appid信息:"+wechatAppId); + throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); + } + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appinfo.getPayId()); + if (payAccount == null) { + logger.error("未找到mch_id信息:"+wechatMchId); + throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); + } + if (wechatMchId != payAccount.getMchId()) { + logger.error("mch_id不对应:"+wechatMchId + ",account:" + payAccount.getMchId()); + throw new MallinkException(ErrorCode.MCH_INFO_NOT_EQUAL); + } + String partnerKey = payAccount.getApiKey(); + try { + if (payWay == EnumPayWay.PAY_WAY_WEAPP) { + boolean signVerified = false; + // 微信支付 + signVerified = WxPayment.verifyNotify(paramMap, partnerKey); + if (!signVerified) { + logger.warn("notify order, wxpay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR); + } + if (!"SUCCESS".equals(paramMap.get("return_code"))) { + logger.warn("notify order, wxpay status not success, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", "订单状态码非SUCCESS"); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + + String payOrderNo = paramMap.get("out_trade_no"); + Long payOrderId = Long.valueOf(payOrderNo); + WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId); + if (payOrder == null) { + logger.warn("notify order, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", "订单不存在"); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + // 验证支付金额 + if(!paramMap.get("total_fee").equals(payOrder.getPayAmount().toString())) { + logger.warn("notify order, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", "订单总金额不一致"); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + String refundOrderNo = paramMap.get("out_refund_no"); + Long refundOrderId = Long.valueOf(refundOrderNo); + WxRefundOrder refundOrder = wxRefundOrderMapper.selectByPrimaryKey(refundOrderId); + if (refundOrder == null) { + logger.warn("notify order, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", "退款订单不存在"); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + // 验证支付金额 + if(!paramMap.get("total_fee").equals(refundOrder.getTotalFee().toString())) { + logger.warn("notify order, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", "订单总金额不一致"); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + // 验证退款金额 + if(!paramMap.get("refund_fee").equals(refundOrder.getRefundFee().toString())) { + logger.warn("notify order, wxpay check refund_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "FAIL"); + resultMap.put("return_msg", "退款总金额不一致"); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + + // 处理支付成功 + handleRefundSuccess(refundOrder, paramMap.get("transaction_id"), paramMap.get("refund_id")); + logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); + Map resultMap = new LinkedHashMap<>(); + resultMap.put("return_code", "SUCCESS"); + resultMap.put("return_msg", "OK"); + return XmlUtil.parseDto2Xml(resultMap, ""); + } + } catch (RuntimeException e) { + logger.warn("notify order, alipay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); + throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR); + } + return ""; + } + + @Override + public void callback(Map paramMap, EnumPayWay payWay) { + + } + + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void handleRefundSuccess(WxRefundOrder refundOrder, String transactionId, String refundId) { + EnumRefundStatus refundStatus = EnumRefundStatus.getEnum(refundOrder.getRefundOrderStatus()); + // 判断退款状态 + if (refundStatus != EnumRefundStatus.REFUND_REQ_SUCCESS) { + logger.error("refund success handle, refundOrder " + refundOrder.getRefundId() + + "is paid success , orderId : " + refundOrder.getOrderId()); + return; + } + /* + WxOrder order = wxRefundOrderMapper.selectByPrimaryKey(record.getOrderId()); + if (order == null) { + logger.error("pay success handle, order " + record.getOrderId() +" not found , payOrderGid : " + record.getPayOrderNo()); + throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); + } + + Date currentDate = new Date(); + // 修改支付订单状态 + try { + WxPayOrder updatePayOrder = new WxPayOrder(); + updatePayOrder.setId(record.getId()); + updatePayOrder.setOrderId(record.getOrderId()); + updatePayOrder.setUpdateTime(currentDate); + updatePayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); + updatePayOrder.setTransactionId(transactionId); + wxPayOrderMapper.updateByPrimaryKeySelective(updatePayOrder); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + + // 修改订单状态 + try { + wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS); + } catch (Exception e) { + logger.error(e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + */ + /* + Map msgMap = new HashMap<>(); + try { + msgMap.put("name", String.valueOf(order.getCouponId())); + msgMap.put("orderNo", String.valueOf(order.getId())); + msgMap.put("createTime", Utility.getDataFormatString3(order.getCreateDate())); + msgMap.put("standingTime", order.getCreateDate() + "-" + currentDate ); + // 短信 通知 商户 + //smsSenderHandler.sendSms("SMS_18195394", order.getMobile(), msgMap); + } catch (Exception e) { + logger.error("pay success handle, sms send exception, payOrderi: " + updatePayOrder+ ", msgMap: " + msgMap.toString() + ", e: " + e.getMessage()); + } + */ + } @Override