From 13b7e7a4e0746e31ae45f686a0345bca53a5ff40 Mon Sep 17 00:00:00 2001 From: yang_shj Date: Thu, 10 Mar 2022 10:48:01 +0800 Subject: [PATCH] =?UTF-8?q?feat=200=20=E6=94=AF=E4=BB=98=E5=B7=A5=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/base/springcloud/bo/RefundBO.java | 7 ++ .../springcloud/constant/ErrorConstant.java | 6 +- .../springcloud/constant/PaymentConstant.java | 11 ++- .../com/base/springcloud/dao/OrderMapper.java | 2 + .../base/springcloud/dao/RefundMapper.java | 5 + .../com/base/springcloud/entity/Refund.java | 96 ++----------------- .../springcloud/service/OrderService.java | 5 + .../service/WecPaymentService.java | 2 +- .../service/imp/MerchantServiceImp.java | 26 ----- .../service/imp/OrderServiceImp.java | 30 ++++++ .../service/imp/RefundServiceImp.java | 78 +++++++++++++++ .../service/imp/WecPaymentServiceImp.java | 40 +------- .../com/base/payment/mapper/OrderMapper.xml | 9 ++ .../com/base/payment/mapper/RefundMapper.xml | 7 ++ 14 files changed, 167 insertions(+), 157 deletions(-) diff --git a/payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java b/payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java index 8d54311..14d8e59 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java +++ b/payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java @@ -1,6 +1,7 @@ package com.base.springcloud.bo; import com.base.springcloud.base.MchConfigEntity; +import com.base.springcloud.entity.Order; import lombok.Data; import java.io.Serializable; @@ -9,12 +10,18 @@ import java.math.BigDecimal; @Data public class RefundBO extends MchConfigEntity implements Serializable { + // 创建人 + private String createId; + // 退款单据编号 private String billId; // 原订单编号 private String origOrderNo; + // 原订单 + private Order order; + // 退款订单号 private String refundNo; diff --git a/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java b/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java index aa674df..8599185 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java +++ b/payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java @@ -17,7 +17,11 @@ public enum ErrorConstant { USER_DEPART_RELATION_NEED("RBS00012","请用户先关联部门信息!"), SAVE_PAY_DEPART_CONFIG_FAIL("RBS00013","添加部门商户支付配置信息失败!"), SALE_BILL__INVALID("RBS00014","无有效销售单据!"), - MERCHANT_PAY_CERT_READ_FAIL("RBS00015","支付证书读取失败!"); + MERCHANT_PAY_CERT_READ_FAIL("RBS00015","支付证书读取失败!"), + PAY_ORDER_NOT_FOUND("RBS00016","无有效支付订单!"), + ORDER_STATE_NOT_SUPPORT_REFUND("RBS00017","订单状态不支持退款!"), + REGISTER_REFUND_FAIL("RBS00018","退款订单登记失败!"), + SYNC_WEC_REFUND_STATE_FAIL("RBS00019","同步微信退款状态失败!"); private String code; private String message; diff --git a/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java b/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java index 9c4c511..e939445 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java +++ b/payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java @@ -5,15 +5,24 @@ public interface PaymentConstant { String TOKEN_PREFIX = "prefix_user_token_"; // TOKEN前缀 String WAIT = "W"; // 等待付款 + String SUCCESS = "S"; // 支付完成 String WX_SUCCESS = "SUCCESS"; // 微信支付成功状态 String NATIVE = "Native"; // Native支付 String H5 = "H5"; // H5支付 String JSAPI = "Jsapi"; // JSAPI支付 - String ORDER_LOCK_PREFIX = "ORDER_KEY:"; // 订单锁前缀 + Integer REFUND_WAIT = 0; // 等待退款 + Integer REFUND_SUCCESS = 1; // 完成退款 + Integer REFUND_PART = 2; // 部分退款 + Integer START_REFUND_COUNT = 1; // 退款起始次数 + Integer END_REFUND_COUNT = 6; // 退款结束次数 + + String ORDER_LOCK_PREFIX = "ORDER_KEY:"; // 订单锁前缀 String DEFAULT_MCH_ID = "1537100771"; // 默认商户ID + + // 微信订单查询请求地址 String WX_ORDER_QUERY_URL = "https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/"; diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java index e9ffd85..a7d9944 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java +++ b/payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java @@ -24,4 +24,6 @@ public interface OrderMapper { List queryOrder(Date date); int updateOrderSuccess(String orderNo); + + Order origOrderInfo(String orderNo); } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/dao/RefundMapper.java b/payment-base-app/src/main/java/com/base/springcloud/dao/RefundMapper.java index d7e0016..6ffb3c9 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/dao/RefundMapper.java +++ b/payment-base-app/src/main/java/com/base/springcloud/dao/RefundMapper.java @@ -1,7 +1,10 @@ package com.base.springcloud.dao; +import com.base.springcloud.bo.RefundBO; import com.base.springcloud.entity.Refund; +import org.springframework.stereotype.Repository; +@Repository public interface RefundMapper { int deleteByPrimaryKey(String id); @@ -14,4 +17,6 @@ public interface RefundMapper { int updateByPrimaryKeySelective(Refund record); int updateByPrimaryKey(Refund record); + + int updateRefundSuccess(Refund refund); } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/entity/Refund.java b/payment-base-app/src/main/java/com/base/springcloud/entity/Refund.java index db721b6..1dbf009 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/entity/Refund.java +++ b/payment-base-app/src/main/java/com/base/springcloud/entity/Refund.java @@ -1,7 +1,10 @@ package com.base.springcloud.entity; +import lombok.Data; + import java.util.Date; +@Data public class Refund { private String id; @@ -21,95 +24,8 @@ public class Refund { private String reason; - private Byte refundState; - - private Byte refundRetryCount; - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getRefundOrderNo() { - return refundOrderNo; - } - - public void setRefundOrderNo(String refundOrderNo) { - this.refundOrderNo = refundOrderNo; - } - - public Date getRefundTime() { - return refundTime; - } - - public void setRefundTime(Date refundTime) { - this.refundTime = refundTime; - } - - public String getCreateId() { - return createId; - } - - public void setCreateId(String createId) { - this.createId = createId; - } - - public Date getCreateTime() { - return createTime; - } - - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - public String getOrigOrderNo() { - return origOrderNo; - } - - public void setOrigOrderNo(String origOrderNo) { - this.origOrderNo = origOrderNo; - } - - public Date getOrigOrderTime() { - return origOrderTime; - } - - public void setOrigOrderTime(Date origOrderTime) { - this.origOrderTime = origOrderTime; - } - - public String getSourceBillId() { - return sourceBillId; - } - - public void setSourceBillId(String sourceBillId) { - this.sourceBillId = sourceBillId; - } - - public String getReason() { - return reason; - } - - public void setReason(String reason) { - this.reason = reason; - } - - public Byte getRefundState() { - return refundState; - } - - public void setRefundState(Byte refundState) { - this.refundState = refundState; - } - - public Byte getRefundRetryCount() { - return refundRetryCount; - } + // 0 - 退款未完成 1 - 退款完成 2 - 退款部分完成 + private Integer refundState; - public void setRefundRetryCount(Byte refundRetryCount) { - this.refundRetryCount = refundRetryCount; - } + private Integer refundRetryCount; } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java b/payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java index 010c50e..d9c16cb 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java @@ -1,8 +1,10 @@ package com.base.springcloud.service; import com.base.springcloud.bo.OrderBO; +import com.base.springcloud.bo.RefundBO; import com.base.springcloud.entity.Order; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -16,4 +18,7 @@ public interface OrderService { // 同步订单状态 void updateOrderSuccess(String orderNo); + + // 查询原支付订单 + void origOrderCheck(RefundBO refundBO); } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java b/payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java index ac39dce..b653d9a 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java @@ -16,7 +16,7 @@ public interface WecPaymentService { * 微信APIv3退款 * @param refundBO */ - void wecRefund(RefundBO refundBO); + Boolean wecRefund(RefundBO refundBO); /** * 微信付款码支付 diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java index 4e5da2d..6a5e350 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java @@ -217,30 +217,4 @@ public class MerchantServiceImp implements MerchantService { } return null; } - - /*public static void main(String[] args) throws Exception { - - MyConfig config = new MyConfig(); - WXPay wxPay = new WXPay(config); - - Map data = new HashMap(); - //公众账号ID (微信分配的公众账号ID(企业号corpid即为此appId)) - data.put("appid", "wxa91984b310053c3d"); - //商户号 (微信支付分配的商户号) - data.put("mch_id", "1610494969"); - data.put("device_info", "sb0001"); - //商品描述 (商品简单描述,该字段须严格按照规范传递) 店名-销售商品类目 例 小张南山店-超市 - data.put("body", "Image形象店-深圳腾大-QQ公仔"); - //商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一 - data.put("out_trade_no", DateUtil.getDateString(25)); - //订单总金额,单位为分,只能为整数 - data.put("total_fee", "1"); - data.put("auth_code", "135080797699902868"); - data.put("spbill_create_ip", "8.8.8.8"); - //付款码 (扫码支付付款码,设备读取用户微信中的条码或者二维码信息(注:用户付款码条形码规则:18位纯数字,以10、11、12、13、14、15开头)) - data.put("sign", WXPayUtil.generateSignature(data,"yDXt3Jczcs2dSKvwUxGkYYfHzCe8SXtY")); - Map responseMap = wxPay.microPay(data); - //判断是否成功 - System.out.println("微信返回响应:" + responseMap.toString()); - }*/ } \ No newline at end of file diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java index 717252f..0d110d9 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java @@ -2,6 +2,7 @@ package com.base.springcloud.service.imp; import com.base.springcloud.aspect.annotation.BusinessException; import com.base.springcloud.bo.OrderBO; +import com.base.springcloud.bo.RefundBO; import com.base.springcloud.constant.ErrorConstant; import com.base.springcloud.constant.PaymentConstant; import com.base.springcloud.dao.OrderMapper; @@ -25,6 +26,11 @@ public class OrderServiceImp implements OrderService { @Autowired private OrderMapper orderMapper; + + /** + * 登记订单 + * @param orderBO + */ @Override public void registerOrder(OrderBO orderBO) { BigDecimal amount = orderBO.getAmount(); @@ -49,6 +55,11 @@ public class OrderServiceImp implements OrderService { orderBO.setOrder(order); } + /** + * 查询订单 + * @param date + * @return + */ @Override public List queryOrder(Date date) { List orderList = orderMapper.queryOrder(date); @@ -65,10 +76,29 @@ public class OrderServiceImp implements OrderService { }).collect(Collectors.toList()); } + /** + * 同步订单状态 + * @param orderNo + */ @Override public void updateOrderSuccess(String orderNo) { int count = orderMapper.updateOrderSuccess(orderNo); if(count > 0) return; // TODO 抛出业务异常 } + + /** + * 查询原支付订单 + * @param refundBO + * @return + */ + @Override + public void origOrderCheck(RefundBO refundBO) { + Order order = orderMapper.origOrderInfo(refundBO.getOrigOrderNo()); + if (!Optional.ofNullable(order).isPresent()) + throw new BusinessException(ErrorConstant.PAY_ORDER_NOT_FOUND); + if(!PaymentConstant.SUCCESS.equals(order.getOrderState())) + throw new BusinessException(ErrorConstant.ORDER_STATE_NOT_SUPPORT_REFUND); + refundBO.setOrder(order); + } } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java index f368b0b..ebc692a 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java @@ -1,14 +1,92 @@ package com.base.springcloud.service.imp; +import com.base.springcloud.aspect.annotation.BusinessException; import com.base.springcloud.bo.RefundBO; +import com.base.springcloud.constant.ErrorConstant; +import com.base.springcloud.constant.PaymentConstant; +import com.base.springcloud.dao.RefundMapper; +import com.base.springcloud.entity.Order; +import com.base.springcloud.entity.Refund; +import com.base.springcloud.service.OrderService; import com.base.springcloud.service.RefundService; +import com.base.springcloud.service.WecPaymentService; +import com.base.springcloud.util.DateUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; +import java.util.UUID; + @Service public class RefundServiceImp implements RefundService { + @Autowired + private OrderService orderService; + + @Autowired + private WecPaymentService wecPaymentService; + + @Autowired + private RefundMapper refundMapper; + + /** + * 退款 + * @param refundBO + */ @Override public void refund(RefundBO refundBO) { + // RBS-退款金额获取 + + // 退款限制检查 + // 查询原支付订单 + orderService.origOrderCheck(refundBO); + // 登记退款信息 + registerRfund(refundBO); + // 发送微信退款 + Boolean refundResult = wecPaymentService.wecRefund(refundBO); + // 同步退款信息 + if(refundResult) + updateRefundSuccess(refundBO); + // RBS-业务逻辑处理 } + + /** + * 登记退款 + * @param refundBO + */ + private void registerRfund(RefundBO refundBO) { + Refund refund = new Refund(); + refund.setId(UUID.randomUUID().toString().replace("-", "")); + refund.setCreateId(refundBO.getCreateId()); + refund.setCreateTime(new Date()); + refund.setReason(refundBO.getReason()); + refund.setRefundOrderNo(DateUtil.getDateString(25)); + refund.setRefundTime(new Date()); + refund.setRefundState(PaymentConstant.REFUND_WAIT); + refund.setRefundRetryCount(PaymentConstant.START_REFUND_COUNT); + Order order = refundBO.getOrder(); + refund.setOrigOrderNo(order.getOrderNo()); + refund.setOrigOrderTime(order.getCreateTime()); + // FIXME 原销售单据id + // refund.setSourceBillId(); + int count = refundMapper.insert(refund); + if(count < 1) + throw new BusinessException(ErrorConstant.REGISTER_REFUND_FAIL); + refundBO.setRefundNo(refund.getRefundOrderNo()); + } + + /** + * 同步退款状态 + * @param refundBO + */ + private void updateRefundSuccess(RefundBO refundBO) { + Refund refund = new Refund(); + refund.setRefundOrderNo(refundBO.getRefundNo()); + refund.setRefundState(PaymentConstant.REFUND_SUCCESS); + int count = refundMapper.updateRefundSuccess(refund); + if(count < 1) + throw new BusinessException(ErrorConstant.SYNC_WEC_REFUND_STATE_FAIL); + } + } diff --git a/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java b/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java index 7b4a10e..eb3a14d 100644 --- a/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java +++ b/payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java @@ -59,7 +59,7 @@ public class WecPaymentServiceImp implements WecPaymentService { * @param refundBO */ @Override - public void wecRefund(RefundBO refundBO) { + public Boolean wecRefund(RefundBO refundBO) { WxpayRefundVo wxpayRefundVo = new WxpayRefundVo(); wxpayRefundVo.setTransaction_id(refundBO.getOrigOrderNo()); wxpayRefundVo.setReason(refundBO.getReason()); @@ -70,6 +70,7 @@ public class WecPaymentServiceImp implements WecPaymentService { wxpayRefundVo.setOut_refund_no(refundBO.getRefundNo()); wxpayRefundVo.setAmount(wxRefundAmountVo); String refundRsp = WxpayUtils.refund(wxpayRefundVo,refundBO.getMchId(),refundBO.getMchPrivateKey(),refundBO.getCertificate(),refundBO.getSerialNo()); + return true; } /** @@ -93,41 +94,4 @@ public class WecPaymentServiceImp implements WecPaymentService { logger.info("order_result_url : {}",url); return WxpayUtils.queryWxOrder(url,orderBO.getMchId(),orderBO.getMchPrivateKey(),orderBO.getCertificate(),orderBO.getSerialNo()); } - - /*public static void main(String[] args) { - OrderBO orderBO = new OrderBO(); - orderBO.setAppId("wxe61ee6c21345d74d"); - orderBO.setMchId("1537100771"); - orderBO.setMchPrivateKey("MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDU7qXRin2MGdDGPQLgMCMlAWccseGXDz99Ulu0KL3u7QBH0eJZoxDpHGqE/sMtQnDUD446Khi3AZgd2xwWOoshkleSOkNd20+tVaq91vw/lJEF4kv4DbFFNLObs1kBqGYZi4HUrbyRH1UqFujImJXDvSOKd53SPjEPs6rRFDwXAQaEQEftwQVvv6ycHc7symgYL486KCVZLm2yfsMA0fu/MiSTIeZCMR1OEx+YK61K4Rzv6rdE8Yf6o2Rwl0xWqcrm2C2RFLgGqmrYmxscgI6ufEEdbWO0YkqFQndcVhT8vooTYdwShrB5rp7TDs3G3qQMzqQpfi2J/gWsWT1S4ZnLAgMBAAECggEAUavLfCijaQZJ1o92N+kewcXc99uejGMz1eyt8dciqq7KycFOEVWDWfYlQSe6UvTF9ACXa+XTnvYEk4cEKd6AmPrZjeO9DRXeZLyUBcac8AIa8efPfbA6yzGgplrPC9y8dJXW0W1mAz/CWad51972qqI0LJsetJJYHQ6ruRAK0ENH7LUAHAzrSbD96y+YuXB6n2x7GQZF1e8PCzVdpNEsDfEwNBB19CyLpCIW3JQMZvVcWUv+8MJwdzvNprwkDKeMC0F/p7R+ErZL1z1pfi9aMV2DzQ25qKW758juTTnGf6z+tTND+cQoeMh1GxqK3CuUpz1Y7lUctF2jyP/6EPctWQKBgQD5m4ZaiW+ucQ1hEkxW4T9TPugyHxvNBtOQvs3F5kin2QVeIkY9ssGHmTx5I5r63sDQylSQRildaIX6EAxYzoy5AHtAKiltiB3ppLdQxX7adoSWNORZ/pjd/sNKTAZtqd0IBNtjuI3y/BxYrqii7cUC/aWv+gxHFUjoyG01aU8mHwKBgQDaYqwrm0gRmpKlhigoXRYGEo24kJHsGjXnpxy9Klq3S7A9zAfEF4WqfuAM3vXbUm8RrDU045N4kyakwfJNewVSzkL9N0vcGHqoB5DNWSrS6qmIZgUAuU55iRXR16Kluv0k3pF1Ar4gtJuDHpEvjlqV8J4Z0bWNrOkXZ5sjIAje1QKBgGJDX7j0sgqyZtn4IiVxt0RGV5KjvIYSUeeBtfBan++z9/D+/Tf8z0Nah/wIkFKCrtWDUZcah95F77hp6PJtHekWz26LKpP8Kgp41dHubeoDDl8zo1HqcLO0P51YII+7d1BY2SWA2iD2LxKab7j0ccKjqD6G6Z5yOqmpfZSxSH9xAoGAPqSVPIDzYFFVhXOBK2rgOWezDWEy6mXuVn/CJ6Txlqh4apGPHLmelvSD8k02eu4ffBNIw94P3ENhj1su1PjX4xPVdWsaMI05Cd/5sl3EgfHcJYsWHkoJb6VaA/J17lI/8QaC9OyPezQzc54eCWUtKNt3jnJwQK57wkHu51l2Ee0CgYBuqDJjYcw1xHYtA+hH/tTrU1t8arwdeoz0QN+Cj1DgGW6zY0WRyIcnl4M1v51bIyrluqpN4e0Dh2VVV0r1LAIlhvAzsz3alCIJzVTVaJXKAGwN9vMxRbnCdg1h+QzAeZ+VC1zLNzHKUPYsGEnH5Hig5mml1pZz4b6LSNDFG6VBqw=="); - orderBO.setCertificate("MIID8DCCAtigAwIBAgIUbAm85GX1um+ESCWizOGXEoH6gnowDQYJKoZIhvcNAQELBQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsTFFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3QgQ0EwHhcNMjExMTE2MDczNDUzWhcNMjYxMTE1MDczNDUzWjCBgTETMBEGA1UEAwwKMTUzNzEwMDc3MTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQLDCTlm5vlt53nm5vlkozmnLrmorDorr7lpIfmnInpmZDlhazlj7gxCzAJBgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANTupdGKfYwZ0MY9AuAwIyUBZxyx4ZcPP31SW7Qove7tAEfR4lmjEOkcaoT+wy1CcNQPjjoqGLcBmB3bHBY6iyGSV5I6Q13bT61Vqr3W/D+UkQXiS/gNsUU0s5uzWQGoZhmLgdStvJEfVSoW6MiYlcO9I4p3ndI+MQ+zqtEUPBcBBoRAR+3BBW+/rJwdzuzKaBgvjzooJVkubbJ+wwDR+78yJJMh5kIxHU4TH5grrUrhHO/qt0Txh/qjZHCXTFapyubYLZEUuAaqatibGxyAjq58QR1tY7RiSoVCd1xWFPy+ihNh3BKGsHmuntMOzcbepAzOpCl+LYn+BaxZPVLhmcsCAwEAAaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEArtZJ2FICGrykPJziJxPjTaaA/nn//tXI6rUW9aSHe6atLWgduUDlBQjn8pckAeReuXF6J1D9u45iQY8fc5Mb5BAQsg4qC1zxoRINBNL5HVEf+9uolfJI2urw3cfwbAdrymMDUWc0xFZWgo5z3KFXso8ERb73j/5utbIqZ+C7MtesHs1Em5FRSZgX86wy9zDcbIMtw2LeHymQ3MV8C6cASwlBIJ/UptDieuHRr0FoUxkmtSN1POQRhhYVT2gaHpNOVHmrK6Tbd6nblQ70GdLH7kdb9LPr4kS0GXPz+Gvk8y15PKI02MFcNqJCuLJTpFlAf4gTwWule2Z5/1WlOF1+sA=="); - orderBO.setSerialNo("6C09BCE465F5BA6F844825A2CCE1971281FA827A"); - Order order1 = new Order(); - order1.setGoodName("形象大公仔"); - order1.setOrderNo("20220304112022"); - order1.setOrderAmount(new BigDecimal(1)); - orderBO.setOrder(order1); - Order order = Optional.ofNullable(orderBO).map(o->orderBO.getOrder()).orElse(null); - if(order == null) { - // TODO 抛出业务异常 - } - WxpayTradeVo wxpayTradeVo = new WxpayTradeVo(); - wxpayTradeVo.setAppid(orderBO.getAppId()); - wxpayTradeVo.setMchid(orderBO.getMchId()); - wxpayTradeVo.setDescription(order.getGoodName()); - wxpayTradeVo.setOut_trade_no(order.getOrderNo()); - // FIXME 待定为商户系统||RBS系统回调接收 - wxpayTradeVo.setNotify_url("https://www.weixin.qq.com/wxpay/pay.php"); - WxpayTradeVo.WxTradeAmountVo wxTradeAmountVo = new WxpayTradeVo.WxTradeAmountVo(); - wxTradeAmountVo.setTotal(order.getOrderAmount()); - wxpayTradeVo.setAmount(wxTradeAmountVo); - JSONObject objectNode = WxpayUtils.getWxpay( - wxpayTradeVo, - PaymentConstant.NATIVE, - orderBO.getMchPrivateKey(), - orderBO.getCertificate(), - orderBO.getSerialNo()); - System.out.println("Native支付订单 :{} " + order.getOrderNo() + " 接收响应数据 :{} "+ objectNode.toString()); - System.out.println(objectNode.toString()); - }*/ - } diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml index a484412..52b1ff3 100644 --- a/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml @@ -175,4 +175,13 @@ set order_state = 'S' where order_no = #{orderNo,jdbcType=VARCHAR} + + \ No newline at end of file diff --git a/payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml b/payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml index c14b579..df39daa 100644 --- a/payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml +++ b/payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml @@ -161,4 +161,11 @@ refund_retry_count = #{refundRetryCount,jdbcType=INTEGER} where id = #{id,jdbcType=VARCHAR} + + update pay_refund + set refund_state = #{refundState,jdbcType=INTEGER} + + refund_order_no = #{refundOrderNo,jdbcType=VARCHAR} + + \ No newline at end of file