diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/WxPayController.java b/nxhs-service/src/main/java/cc/yunxi/controller/WxPayController.java index fe340ff..b03bd78 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/WxPayController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/WxPayController.java @@ -42,6 +42,7 @@ public class WxPayController { @Resource private IPaymentLogService paymentLogService; + @Resource private IEnterpriseService enterpriseService; private final ReentrantLock lock = new ReentrantLock(); @@ -114,15 +115,6 @@ public class WxPayController { String result = HttpKit.readData(request);//消息体 log.info("支付通知密文 {}", result); // 需要通过证书序列号查找对应的证书,verifyNotify 中有验证证书的序列号 - /* - * serialNo – 证书序列号 - * body – 异步通知密文 - * signature – 签名 - * nonce – 随机字符串 - * timestamp – 时间戳 - * key – api 密钥 - * certPath – 平台证书路径*/ - //验签 String plainText = WxPayKit.verifyNotify(serialNo, result, signature, nonce, timestamp, wxPayV3Properties.getApiKey3(), wxPayV3Properties.getPlatformCertPath()); log.info("支付通知明文 {}", plainText); @@ -162,15 +154,24 @@ public class WxPayController { return JSONUtil.toJsonStr(_feedback); } // 保证接口幂等性 - if (lock.tryLock()) { - paymentService.updateStatus(outTradeNo, tradeState, tradeStateDesc, openid); - //处理业务 - paymentLogService.updateLogStatus(outTradeNo, transactionId, tradeType, tradeState, openid, attach, total, payerTotal, plainText); - if ("SUCCESS".equals(tradeState)) { - //增加商户余额 - BigDecimal money = new BigDecimal(total).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); - enterpriseService.rechargeBalance(attach, money, outTradeNo); + try { + if (lock.tryLock()) { + paymentService.updateStatus(outTradeNo, tradeState, tradeStateDesc, openid); + String organizeJsonId = payment.getOrganizeJsonId(); + //处理业务 + paymentLogService.updateLogStatus(outTradeNo, transactionId, tradeType, tradeState, + openid, attach, total, payerTotal, plainText, organizeJsonId); + if ("SUCCESS".equals(tradeState)) { + //增加商户余额 + BigDecimal money = new BigDecimal(total).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + enterpriseService.rechargeBalance(attach, money, outTradeNo); + } } + } catch (Exception e) { + e.printStackTrace(); + throw e; + } finally { + lock.unlock(); } response.setStatus(200); _feedback.put("code", "SUCCESS"); @@ -183,8 +184,6 @@ public class WxPayController { _feedback.put("code", "ERROR"); _feedback.put("message", "失败"); return JSONUtil.toJsonStr(_feedback); - } finally { - lock.unlock(); } } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/po/Payment.java b/nxhs-service/src/main/java/cc/yunxi/domain/po/Payment.java index 8d9602f..1d0fafe 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/po/Payment.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/po/Payment.java @@ -31,9 +31,9 @@ public class Payment { @TableField(value = "AMOUNT") @ApiModelProperty("订单金额") private BigDecimal amount; - @TableField(value = "ORDER_TYPE") + @TableField(value = "ORDER_TYPE_ID") @ApiModelProperty("订单类型") - private String orderType; + private String orderTypeId; @TableField(value = "ORDER_STATUS") @ApiModelProperty("订单状态") private String orderStatus; diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IPaymentLogService.java b/nxhs-service/src/main/java/cc/yunxi/service/IPaymentLogService.java index d6c7d81..a75335b 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IPaymentLogService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IPaymentLogService.java @@ -27,5 +27,6 @@ public interface IPaymentLogService extends IService { * @param payerTotal 支付金额 * @param body 消息体 */ - void updateLogStatus(String outTradeNo, String transactionId, String tradeType, String tradeState, String openId, String attach, Integer total, Integer payerTotal, String body); + void updateLogStatus(String outTradeNo, String transactionId, String tradeType, String tradeState, + String openId, String attach, Integer total, Integer payerTotal, String body,String organizeJsonId); } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/PaymentLogServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/PaymentLogServiceImpl.java index a045c26..a389951 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/PaymentLogServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/PaymentLogServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; + @Service public class PaymentLogServiceImpl extends ServiceImpl implements IPaymentLogService { @@ -73,7 +74,8 @@ public class PaymentLogServiceImpl extends ServiceImpl implements IPaymentService { - @Override public Payment getUsablePayment(String enterpriseId, BigDecimal amount) { return null; @@ -62,11 +61,11 @@ public class PaymentServiceImpl extends ServiceImpl impl @Override @Transactional - public void updateStatus(String outTradeNo, String tradeState,String tradeStateDesc, String openid) { + public void updateStatus(String outTradeNo, String tradeState, String tradeStateDesc, String openid) { Payment payment = getByOrderNo(outTradeNo); payment.setOrderStatus(tradeState); payment.setOpenId(openid); - payment.setRemark(tradeStateDesc); + payment.setRemark("微信平台:" + tradeStateDesc); payment.setLastModifyTime(new Date()); this.updateById(payment); }