From 7b065480408b17842663d78f6a8b9a3ba04bfd4f Mon Sep 17 00:00:00 2001 From: terrfly Date: Fri, 18 Jun 2021 10:20:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E9=80=80=E6=AC=BE=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/sql/init.sql | 9 ++--- .../jeepay/core/entity/RefundOrder.java | 4 +-- .../mgr/ctrl/order/PayOrderController.java | 36 ++++++++++++++++--- .../ctrl/refund/RefundOrderController.java | 8 ++--- .../pay/rqrs/payorder/QueryPayOrderRS.java | 5 +++ .../jeepay/pay/rqrs/refund/RefundOrderRQ.java | 3 -- .../jeepay/pay/rqrs/refund/RefundOrderRS.java | 18 ++-------- .../pay/service/PayMchNotifyService.java | 4 +-- .../service/impl/RefundOrderService.java | 4 +-- .../service/mapper/RefundOrderMapper.xml | 4 +-- 10 files changed, 56 insertions(+), 39 deletions(-) diff --git a/docs/sql/init.sql b/docs/sql/init.sql index 61f8150..28d38f0 100644 --- a/docs/sql/init.sql +++ b/docs/sql/init.sql @@ -287,8 +287,8 @@ CREATE TABLE `t_pay_order` ( `refund_amount` BIGINT(20) NOT NULL DEFAULT 0 COMMENT '退款总金额,单位分', `division_flag` TINYINT(6) DEFAULT 0 COMMENT '订单分账标志:0-否 1-是', `division_time` DATETIME COMMENT '预计分账发起时间', - `err_code` VARCHAR(64) DEFAULT NULL COMMENT '渠道支付错误码', - `err_msg` VARCHAR(128) DEFAULT NULL COMMENT '渠道支付错误描述', + `err_code` VARCHAR(128) DEFAULT NULL COMMENT '渠道支付错误码', + `err_msg` VARCHAR(256) DEFAULT NULL COMMENT '渠道支付错误描述', `ext_param` VARCHAR(128) DEFAULT NULL COMMENT '商户扩展参数', `notify_url` VARCHAR(128) NOT NULL default '' COMMENT '异步通知地址', `return_url` VARCHAR(128) DEFAULT '' COMMENT '页面跳转地址', @@ -364,8 +364,8 @@ CREATE TABLE `t_refund_order` ( `client_ip` VARCHAR(32) DEFAULT NULL COMMENT '客户端IP', `refund_reason` VARCHAR(256) NOT NULL COMMENT '退款原因', `channel_order_no` VARCHAR(32) DEFAULT NULL COMMENT '渠道订单号', - `channel_err_code` VARCHAR(128) DEFAULT NULL COMMENT '渠道错误码', - `channel_err_msg` VARCHAR(128) DEFAULT NULL COMMENT '渠道错误描述', + `err_code` VARCHAR(128) DEFAULT NULL COMMENT '渠道错误码', + `err_msg` VARCHAR(256) DEFAULT NULL COMMENT '渠道错误描述', `channel_extra` VARCHAR(512) DEFAULT NULL COMMENT '特定渠道发起时额外参数', `notify_url` VARCHAR(128) DEFAULT NULL COMMENT '通知地址', `ext_param` VARCHAR(64) DEFAULT NULL COMMENT '扩展参数', @@ -433,6 +433,7 @@ insert into t_sys_entitlement values('ENT_ORDER', '订单管理', 'transaction', insert into t_sys_entitlement values('ENT_PAY_ORDER', '支付订单', 'account-book', '/pay', 'PayOrderListPage', 'ML', 0, 1, 'ENT_ORDER', '10', 'MGR', now(), now()); insert into t_sys_entitlement values('ENT_ORDER_LIST', '页面:订单列表', 'no-icon', '', '', 'PB', 0, 1, 'ENT_PAY_ORDER', '0', 'MGR', now(), now()); insert into t_sys_entitlement values('ENT_PAY_ORDER_VIEW', '按钮:详情', 'no-icon', '', '', 'PB', 0, 1, 'ENT_PAY_ORDER', '0', 'MGR', now(), now()); + insert into t_sys_entitlement values('ENT_PAY_ORDER_REFUND', '按钮:订单退款', 'no-icon', '', '', 'PB', 0, 1, 'ENT_PAY_ORDER', '0', 'MGR', now(), now()); insert into t_sys_entitlement values('ENT_REFUND_ORDER', '退款订单', 'exception', '/refund', 'RefundOrderListPage', 'ML', 0, 1, 'ENT_ORDER', '20', 'MGR', now(), now()); insert into t_sys_entitlement values('ENT_REFUND_LIST', '页面:退款订单列表', 'no-icon', '', '', 'PB', 0, 1, 'ENT_REFUND_ORDER', '0', 'MGR', now(), now()); insert into t_sys_entitlement values('ENT_REFUND_ORDER_VIEW', '按钮:详情', 'no-icon', '', '', 'PB', 0, 1, 'ENT_REFUND_ORDER', '0', 'MGR', now(), now()); diff --git a/jeepay-core/src/main/java/com/jeequan/jeepay/core/entity/RefundOrder.java b/jeepay-core/src/main/java/com/jeequan/jeepay/core/entity/RefundOrder.java index 92ff0f1..d7ec16f 100644 --- a/jeepay-core/src/main/java/com/jeequan/jeepay/core/entity/RefundOrder.java +++ b/jeepay-core/src/main/java/com/jeequan/jeepay/core/entity/RefundOrder.java @@ -145,12 +145,12 @@ public class RefundOrder extends BaseModel { /** * 渠道错误码 */ - private String channelErrCode; + private String errCode; /** * 渠道错误描述 */ - private String channelErrMsg; + private String errMsg; /** * 特定渠道发起时额外参数 diff --git a/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/ctrl/order/PayOrderController.java b/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/ctrl/order/PayOrderController.java index d0eae2a..4cfb65c 100644 --- a/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/ctrl/order/PayOrderController.java +++ b/jeepay-manager/src/main/java/com/jeequan/jeepay/mgr/ctrl/order/PayOrderController.java @@ -18,9 +18,11 @@ package com.jeequan.jeepay.mgr.ctrl.order; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jeequan.jeepay.core.aop.MethodLog; import com.jeequan.jeepay.core.constants.ApiCodeEnum; import com.jeequan.jeepay.core.entity.PayOrder; import com.jeequan.jeepay.core.entity.PayWay; +import com.jeequan.jeepay.core.exception.BizException; import com.jeequan.jeepay.core.model.ApiRes; import com.jeequan.jeepay.mgr.ctrl.CommonCtrl; import com.jeequan.jeepay.service.impl.PayOrderService; @@ -28,10 +30,7 @@ import com.jeequan.jeepay.service.impl.PayWayService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; @@ -108,4 +107,33 @@ public class PayOrderController extends CommonCtrl { return ApiRes.ok(payOrder); } + + /** + * 发起订单退款 + * @author terrfly + * @site https://www.jeepay.vip + * @date 2021/6/17 16:38 + */ + @MethodLog(remark = "发起订单退款") + @PreAuthorize("hasAuthority('ENT_PAY_ORDER_REFUND')") + @PostMapping("/refunds/{payOrderId}") + public ApiRes refund(@PathVariable("payOrderId") String payOrderId) { + + Long refundAmount = getRequiredAmountL("refundAmount"); + String refundReason = getValStringRequired("refundReason"); + + PayOrder payOrder = payOrderService.getById(payOrderId); + if (payOrder == null) return ApiRes.fail(ApiCodeEnum.SYS_OPERATION_FAIL_SELETE); + + if(payOrder.getState() != PayOrder.STATE_SUCCESS){ + throw new BizException("订单状态不正确"); + } + + if(payOrder.getRefundAmount() + refundAmount >= payOrder.getAmount()){ + throw new BizException("退款金额超过订单可退款金额!"); + } + + throw new BizException("功能开发中, 暂时不支持后台退款,请调起API接口发起退款。"); + } + } diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/refund/RefundOrderController.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/refund/RefundOrderController.java index 4b64b18..d2db673 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/refund/RefundOrderController.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/ctrl/refund/RefundOrderController.java @@ -196,8 +196,8 @@ public class RefundOrderController extends ApiController { refundOrder.setClientIp(StringUtils.defaultIfEmpty(rq.getClientIp(), getClientIp())); //客户端IP refundOrder.setRefundReason(rq.getRefundReason()); //退款原因 refundOrder.setChannelOrderNo(null); //渠道订单号 - refundOrder.setChannelErrCode(null); //渠道错误码 - refundOrder.setChannelErrMsg(null); //渠道错误描述 + refundOrder.setErrCode(null); //渠道错误码 + refundOrder.setErrMsg(null); //渠道错误描述 refundOrder.setChannelExtra(rq.getChannelExtra()); //特定渠道发起时额外参数 refundOrder.setNotifyUrl(rq.getNotifyUrl()); //通知地址 refundOrder.setExtParam(rq.getExtParam()); //扩展参数 @@ -254,8 +254,8 @@ public class RefundOrderController extends ApiController { refundOrder.setState(orderState); refundOrder.setChannelOrderNo(channelRetMsg.getChannelOrderId()); - refundOrder.setChannelErrCode(channelRetMsg.getChannelErrCode()); - refundOrder.setChannelErrMsg(channelRetMsg.getChannelErrMsg()); + refundOrder.setErrCode(channelRetMsg.getChannelErrCode()); + refundOrder.setErrMsg(channelRetMsg.getChannelErrMsg()); boolean isSuccess = refundOrderService.updateInit2Ing(refundOrder.getRefundOrderId()); diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/payorder/QueryPayOrderRS.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/payorder/QueryPayOrderRS.java index dabcebf..5f11ac2 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/payorder/QueryPayOrderRS.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/payorder/QueryPayOrderRS.java @@ -40,6 +40,11 @@ public class QueryPayOrderRS extends AbstractRS { */ private String mchNo; + /** + * 商户应用ID + */ + private String appId; + /** * 商户订单号 */ diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/refund/RefundOrderRQ.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/refund/RefundOrderRQ.java index b3a7cd9..624a109 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/refund/RefundOrderRQ.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/refund/RefundOrderRQ.java @@ -58,9 +58,6 @@ public class RefundOrderRQ extends AbstractMchAppRQ { /** 客户端IP地址 **/ private String clientIp; - /** 客户端设备信息 **/ - private String device; - /** 异步通知地址 **/ private String notifyUrl; diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/refund/RefundOrderRS.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/refund/RefundOrderRS.java index 928815e..49b572e 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/refund/RefundOrderRS.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/rqrs/refund/RefundOrderRS.java @@ -33,12 +33,6 @@ public class RefundOrderRS extends AbstractRS { /** 支付系统退款订单号 **/ private String refundOrderId; - /** 商户号 **/ - private String mchNo; - - /** 商户应用ID **/ - private String appId; - /** 商户发起的退款订单号 **/ private String mchRefundNo; @@ -55,16 +49,10 @@ public class RefundOrderRS extends AbstractRS { private String channelOrderNo; /** 渠道返回错误代码 **/ - private String channelErrCode; + private String errCode; /** 渠道返回错误信息 **/ - private String channelErrMsg; - - /** 退款成功时间 **/ - private Long successTime; - - /** 创建时间 **/ - private Long createdAt; + private String errMsg; public static RefundOrderRS buildByRefundOrder(RefundOrder refundOrder){ @@ -75,8 +63,6 @@ public class RefundOrderRS extends AbstractRS { RefundOrderRS result = new RefundOrderRS(); BeanUtils.copyProperties(refundOrder, result); - result.setSuccessTime(refundOrder.getSuccessTime() == null ? null : refundOrder.getSuccessTime().getTime()); - result.setCreatedAt(refundOrder.getCreatedAt() == null ? null : refundOrder.getCreatedAt().getTime()); return result; } diff --git a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/service/PayMchNotifyService.java b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/service/PayMchNotifyService.java index 2289e50..c0e558a 100644 --- a/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/service/PayMchNotifyService.java +++ b/jeepay-payment/src/main/java/com/jeequan/jeepay/pay/service/PayMchNotifyService.java @@ -159,8 +159,8 @@ public class PayMchNotifyService { */ public String createNotifyUrl(RefundOrder refundOrder, String appSecret) { - QueryRefundOrderRS queryPayOrderRS = QueryRefundOrderRS.buildByRefundOrder(refundOrder); - JSONObject jsonObject = (JSONObject)JSONObject.toJSON(queryPayOrderRS); + QueryRefundOrderRS queryRefundOrderRS = QueryRefundOrderRS.buildByRefundOrder(refundOrder); + JSONObject jsonObject = (JSONObject)JSONObject.toJSON(queryRefundOrderRS); jsonObject.put("reqTime", System.currentTimeMillis()); //添加请求时间 // 报文签名 diff --git a/jeepay-service/src/main/java/com/jeequan/jeepay/service/impl/RefundOrderService.java b/jeepay-service/src/main/java/com/jeequan/jeepay/service/impl/RefundOrderService.java index 9304991..e6ebae1 100644 --- a/jeepay-service/src/main/java/com/jeequan/jeepay/service/impl/RefundOrderService.java +++ b/jeepay-service/src/main/java/com/jeequan/jeepay/service/impl/RefundOrderService.java @@ -98,8 +98,8 @@ public class RefundOrderService extends ServiceImpl() diff --git a/jeepay-service/src/main/java/com/jeequan/jeepay/service/mapper/RefundOrderMapper.xml b/jeepay-service/src/main/java/com/jeequan/jeepay/service/mapper/RefundOrderMapper.xml index b51ede8..7b057ff 100644 --- a/jeepay-service/src/main/java/com/jeequan/jeepay/service/mapper/RefundOrderMapper.xml +++ b/jeepay-service/src/main/java/com/jeequan/jeepay/service/mapper/RefundOrderMapper.xml @@ -22,8 +22,8 @@ - - + + -- GitLab