From e5211699dd4864c11b6088e3f4eeaf168894fb44 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 5 May 2020 09:29:42 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=94=B6=E9=93=B6=E5=8F=B0=E6=94=AF=E4=BB=98]?= =?UTF-8?q?[=E4=BC=98=E5=8C=96]:=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/mapper/WxPayOrderMapper.java | 2 + .../java/com/iformall/pay/WxPayOrderQ.java | 1 + .../java/com/iformall/pay/WxPayOrderSQ.java | 2 + .../service/impl/WxPayOrderServiceImpl.java | 53 +++++++++++++++---- .../resources/mapper/WxPayOrderMapper.xml | 11 ++++ 5 files changed, 60 insertions(+), 9 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java index d48968637..59c5e1d21 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java @@ -12,4 +12,6 @@ public interface WxPayOrderMapper extends CommonMapper { List findListOfPaidOrderByDate(Map dateMap); List findListForUnPs(WxPayOrder wxPayOrder); + + List findExpListForMicroPay(WxPayOrder wxPayOrder); } diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPayOrderQ.java b/mallinkService/src/main/java/com/iformall/pay/WxPayOrderQ.java index e00512413..10ee2ea5c 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPayOrderQ.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPayOrderQ.java @@ -11,6 +11,7 @@ public class WxPayOrderQ { private String mch_id; // 商户号 private String nonce_str; // 随机字符串 private String sign; // 签名 + private String transaction_id; // 微信订单号 private String out_trade_no; // 商户订单号 @Override diff --git a/mallinkService/src/main/java/com/iformall/pay/WxPayOrderSQ.java b/mallinkService/src/main/java/com/iformall/pay/WxPayOrderSQ.java index 4143b8697..62e2cf1c0 100644 --- a/mallinkService/src/main/java/com/iformall/pay/WxPayOrderSQ.java +++ b/mallinkService/src/main/java/com/iformall/pay/WxPayOrderSQ.java @@ -14,6 +14,7 @@ public class WxPayOrderSQ { private String nonce_str; // 随机字符串 private String sign; // 签名 private String sign_type; // 签名类型 + private String transaction_id; // 微信订单号 private String out_trade_no; // 商户订单号 @Override @@ -26,6 +27,7 @@ public class WxPayOrderSQ { sb.append(", nonce_str='").append(nonce_str).append('\''); sb.append(", sign='").append(sign).append('\''); sb.append(", out_trade_no='").append(out_trade_no).append('\''); + sb.append(", transtion_id='").append(out_trade_no).append('\''); sb.append('}'); return sb.toString(); } 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 febfcbcb9..a1a30978f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -646,7 +646,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { payOrderQ.setAppid(appInfo.getAppId()); payOrderQ.setMch_id(payAccount.getMchId()); payOrderQ.setNonce_str(noncestr); - payOrderQ.setOut_trade_no(record.getPayOrderNo()); + if (StringUtils.isNotBlank(record.getTransactionId())) { + payOrderQ.setTransaction_id(record.getTransactionId()); + } else { + payOrderQ.setOut_trade_no(record.getPayOrderNo()); + } try { Map map = BeanUtils.toStringMap(payOrderQ); @@ -668,7 +672,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { payOrderSQ.setMch_id(payAccount.getMchId()); payOrderSQ.setSub_mch_id(payAccount.getSubMchId()); payOrderSQ.setNonce_str(noncestr); - payOrderSQ.setOut_trade_no(record.getPayOrderNo()); + if (StringUtils.isNotBlank(record.getTransactionId())) { + payOrderSQ.setTransaction_id(record.getTransactionId()); + } else { + payOrderSQ.setOut_trade_no(record.getPayOrderNo()); + } payOrderSQ.setSign_type("HMAC-SHA256"); try { @@ -764,14 +772,24 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return new ResultData(ErrorCode.PAY_ORDER_ERROR, returnMap); } } else { - String errMsg = ""; - JSONObject errObj = errorMapQuery.getJSONObject(result_code); - if (errObj != null) { - errMsg = errObj.toJSONString(); + String errCode = returnMap.get("err_code"); + String errCodeDes = returnMap.get("err_code_des"); + if (errCode.equalsIgnoreCase("ORDERNOTEXIST")) { + // 支付订单不存在, 订单失败 + WxOrder updateOrderForMicroPay = new WxOrder(); + updateOrderForMicroPay.setId(order.getId()); + updateOrderForMicroPay.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); + try { + wxOrderMapper.updateById(updateOrderForMicroPay); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + String errMsg = returnMap.get("return_msg"); + if (StringUtils.isNotBlank(errMsg)) { record.setFailReason(errMsg); } else { - errMsg = returnMap.get("return_msg"); - record.setFailReason(errMsg); + record.setFailReason(errCodeDes); } record.setUpdateTime(new Date()); try { @@ -783,8 +801,25 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errMsg, returnMap); } } else { + String errCode = returnMap.get("err_code"); + String errCodeDes = returnMap.get("err_code_des"); + if (errCode.equalsIgnoreCase("ORDERNOTEXIST")) { + // 支付订单不存在, 订单失败 + WxOrder updateOrderForMicroPay = new WxOrder(); + updateOrderForMicroPay.setId(order.getId()); + updateOrderForMicroPay.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode()); + try { + wxOrderMapper.updateById(updateOrderForMicroPay); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } String errMsg = returnMap.get("return_msg"); - record.setFailReason(errMsg); + if (StringUtils.isNotBlank(errMsg)) { + record.setFailReason(errMsg); + } else { + record.setFailReason(errCodeDes); + } record.setUpdateTime(new Date()); try { wxPayOrderMapper.updateById(record); diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index 2e294e9db..56cc88d29 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -159,6 +159,17 @@ and tenant_id in (select tenant_id from wx_pay_account where share =1) and tenant_id != '789' and tenant_id != '1000' ; + +