فهرست منبع

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

liujunchi 3 سال پیش
والد
کامیت
410a2d891e
15فایلهای تغییر یافته به همراه110 افزوده شده و 87 حذف شده
  1. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java
  2. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderPayReq.java
  3. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  4. 3 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderPaymentServiceImpl.java
  5. 23 12
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundServiceImpl.java
  6. 11 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  7. 2 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml
  8. 8 6
      cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderRefundMapper.xml
  9. 43 46
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/UserOrderRefundController.java
  10. 2 2
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/open/OpenClient.java
  11. 0 2
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/task/TaskController.java
  12. 1 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/open/UserWithdrawalClient.java
  13. 5 5
      toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/base/model/RefundBill.java
  14. 1 0
      toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/ali/OriginalAliAppTemplate.java
  15. 7 4
      toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/wx/OriginalWxAppTemplate.java

+ 1 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/open/UserOrderClient.java → cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/UserOrderClient.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow.admin.open;
+package com.yonge.cooleshow.admin.controller.open;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderPayReq.java

@@ -20,7 +20,7 @@ public class OrderPayReq {
     @ApiModelProperty(value = "订单号 ", required = true)
     private String orderNo;
     @NotNull(message = "支付渠道不能为空")
-    @ApiModelProperty(value = "支付渠道:  alipay 支付宝扫码 ali_app 支付宝APP  wx_app 微信APP wx_lite 微信小程序支付", required = true)
+    @ApiModelProperty(value = "支付渠道:  alipay 支付宝扫码(汇付) ali_app 支付宝APP(原生)  wx_app 微信APP (原生) wx_lite 微信小程序支付(汇付,暂未完成)", required = true)
     private PayChannelEnum payChannel;
     @ApiModelProperty(value = "微信用户openId(微信支付必传)",hidden = true)
     private String openId;

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java

@@ -28,7 +28,7 @@ public class OrderReq {
     @ApiModelProperty(value = "订单名称 ", required = true)
     private String orderName;
     @NotNull(message = "订单类型不能为空")
-    @ApiModelProperty(value = "订单类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 PINAO_ROOM、琴房时长", required = true)
+    @ApiModelProperty(value = "订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(PINAO_ROOM、琴房时长", required = true)
     private OrderTypeEnum orderType;
     @ApiModelProperty(value = "订单描述信息 ")
     private String orderDesc;
@@ -52,7 +52,7 @@ public class OrderReq {
         @ApiModelProperty(value = "订单详情号", hidden = true)
         private String subOrderNo;
         @NotNull(message = "商品类型不能为空")
-        @ApiModelProperty(value = "商品类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 PINAO_ROOM、琴房时长", required = true)
+        @ApiModelProperty(value = "商品类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播) 老师端( PINAO_ROOM、琴房时长", required = true)
         private GoodTypeEnum goodType;
         @ApiModelProperty("商品名称 ")
         private String goodName;

+ 3 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderPaymentServiceImpl.java

@@ -126,7 +126,7 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
         //支付订单号生成
         Long paymentNo = idGeneratorService.generatorId("paymentNo");
 
-        //构建汇付统一下单请求
+        //构建统一下单请求
         OpenEnum openType = OpenEnum.valueOf(paymentProperties.getOpenType());
         Payment payment = new Payment(openType, payReq.getPaymentClient(), payReq.getPayChannel());
         payment.setPaymentNo(paymentNo.toString());
@@ -180,9 +180,8 @@ public class UserOrderPaymentServiceImpl extends ServiceImpl<UserOrderPaymentDao
             userOrderService.updateStatusByOrderNo(payReq.getOrderNo(), OrderStatusEnum.PAYING.getCode());
             return HttpResponseResult.succeed(orderPayRes);
         } else {
-            //入订单付款表,同时修改订单状态
-            userOrderService.doOrderCancel(detail, OrderStatusEnum.FAIL, paymentResBaseResult.getMsg());
-            return HttpResponseResult.failed(paymentResBaseResult.getMsg());
+            //付款失败
+            throw new BizException(paymentResBaseResult.getMsg());
         }
     }
 

+ 23 - 12
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderRefundServiceImpl.java

@@ -25,6 +25,7 @@ import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.cooleshow.biz.dal.vo.res.RefundCreateRes;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.service.IdGeneratorService;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.result.BaseResult;
 import com.yonge.toolset.payment.base.enums.PaymentClientEnum;
 import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
@@ -134,19 +135,23 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
             if (CollectionUtils.isNotEmpty(collect)) {
 
                 Function<OrderRefundReq, HttpResponseResult<RefundCreateRes>> refundCreateFunction = refundCreate.get(vo.getGoodType());
-                if (Objects.isNull(refundCreateFunction)) {
+                if (!Objects.isNull(refundCreateFunction)) {
                     refundReq.setOredrDetil(vo);
                     HttpResponseResult<RefundCreateRes> apply = refundCreateFunction.apply(refundReq);
                     if (apply.getStatus()) {
                         detilIds.add(vo.getId());
-                        actualPrice.add(apply.getData().getActualPrice());
+                        actualPrice = actualPrice.add(apply.getData().getActualPrice());
                     }
                 } else {
                     detilIds.add(vo.getId());
-                    actualPrice.add(vo.getActualPrice());
+                    actualPrice = actualPrice.add(vo.getActualPrice());
                 }
             }
         }
+        if(actualPrice.doubleValue() <= 0){
+            throw new BizException("退款金额不能为0");
+        }
+
         String join = StringUtil.join(detilIds, ",");
 
         UserOrderRefund orderRefunds = new UserOrderRefund();
@@ -163,7 +168,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
             List<Long> collect = refundReq.getOredrDetilIds().stream().filter(o -> o.equals(vo.getId())).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(collect)) {
                 Consumer<UserOrderDetailVo> refundAfterConsumer = refundAfter.get(vo.getGoodType());
-                if (Objects.isNull(refundAfterConsumer)) {
+                if (!Objects.isNull(refundAfterConsumer)) {
                     refundAfterConsumer.accept(vo);
                 }
             }
@@ -202,7 +207,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
                 }
                 //调用业务方法
                 Consumer<UserOrderDetailVo> refundCancelConsumer = refundCancel.get(detail.getGoodType());
-                if (Objects.isNull(refundCancelConsumer)) {
+                if (!Objects.isNull(refundCancelConsumer)) {
                     refundCancelConsumer.accept(detail);
                 }
             }
@@ -247,16 +252,16 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
             }
 
             Function<OrderRefundReq, HttpResponseResult<RefundCreateRes>> refundCreateFunction = refundCreate.get(vo.getGoodType());
-            if (Objects.isNull(refundCreateFunction)) {
+            if (!Objects.isNull(refundCreateFunction)) {
                 orderRefundReq.setOredrDetil(vo);
                 HttpResponseResult<RefundCreateRes> apply = refundCreateFunction.apply(orderRefundReq);
                 if (apply.getStatus()) {
                     detilIds.add(vo.getId());
-                    actualPrice.add(apply.getData().getActualPrice());
+                    actualPrice = actualPrice.add(apply.getData().getActualPrice());
                 }
             } else {
                 detilIds.add(vo.getId());
-                actualPrice.add(vo.getActualPrice());
+                actualPrice = actualPrice.add(vo.getActualPrice());
             }
         }
         String join = StringUtil.join(detilIds, ",");
@@ -275,7 +280,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
             List<Long> collect = orderRefundReq.getOredrDetilIds().stream().filter(o -> o.equals(vo.getId())).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(collect)) {
                 Consumer<UserOrderDetailVo> refundAfterConsumer = refundAfter.get(vo.getGoodType());
-                if (Objects.isNull(refundAfterConsumer)) {
+                if (!Objects.isNull(refundAfterConsumer)) {
                     refundAfterConsumer.accept(vo);
                 }
             }
@@ -300,13 +305,19 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
                 .eq(UserOrderPayment::getStatus, TradeStatusEnum.succeeded)
         );
 
+        if (null == payment || !TradeStatusEnum.succeeded.equals(payment.getStatus())) {
+            throw new BizException("订单状态异常");
+        }
+
         //单号生成
         Long billNo = idGeneratorService.generatorId("billNo");
 
         RefundBill refundBill = new RefundBill(payment.getOpenType(),
                 PaymentClientEnum.valueOf(payment.getPaymentClient()), payment.getPayChannel());
-        refundBill.setId(payment.getTransNo());
+        refundBill.setTradeNo(payment.getTransNo());
+        refundBill.setPaymentNo(payment.getPaymentNo());
         refundBill.setRefundNo(billNo.toString());
+        refundBill.setOrderAmt(payment.getPayAmt());
         refundBill.setRefundAmt(orderRefund.getActualAmount());
         refundBill.setReason(orderRefund.getReason());
 
@@ -365,7 +376,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
 
             for (UserOrderDetailVo vo : userOrderDetails) {
                 Consumer<UserOrderDetailVo> refundAfterConsumer = refundSuccess.get(vo.getGoodType());
-                if (Objects.isNull(refundAfterConsumer)) {
+                if (!Objects.isNull(refundAfterConsumer)) {
                     refundAfterConsumer.accept(vo);
                 }
             }
@@ -412,7 +423,7 @@ public class UserOrderRefundServiceImpl extends ServiceImpl<UserOrderRefundDao,
 
             for (UserOrderDetailVo vo : userOrderDetails) {
                 Consumer<UserOrderDetailVo> refundAfterConsumer = refundFailed.get(vo.getGoodType());
-                if (Objects.isNull(refundAfterConsumer)) {
+                if (!Objects.isNull(refundAfterConsumer)) {
                     refundAfterConsumer.accept(vo);
                 }
             }

+ 11 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -307,7 +307,17 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
                 && !OrderStatusEnum.PAYING.equals(detail.getStatus())) {
             return HttpResponseResult.failed("订单状态异常");
         }
-        return doOrderPay(payReq, detail);
+        try {
+            return doOrderPay(payReq, detail);
+        } catch (BizException e) {
+            //入订单付款表,同时修改订单状态
+            doOrderCancel(detail, OrderStatusEnum.FAIL, e.getMessage());
+            return HttpResponseResult.failed(e.getMessage());
+        } catch (Exception e){
+            //入订单付款表,同时修改订单状态
+            doOrderCancel(detail, OrderStatusEnum.FAIL, e.getMessage());
+            return HttpResponseResult.failed("付款失败");
+        }
     }
 
     @Override

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml

@@ -45,6 +45,7 @@
 				count(1) as entryNum
 			from teacher t
 			<where>
+				t.entry_flag_ = 1
 				<if test="param.startTime !=null">
 					<![CDATA[AND t.entry_auth_date_ >= #{param.startTime} ]]>
 				</if>
@@ -75,6 +76,7 @@
 				count(1) as musicianNum
 			from teacher t
 			<where>
+				t.musician_flag_ = 1
 				<if test="param.startTime !=null">
 					<![CDATA[AND t.musician_date_ >= #{param.startTime} ]]>
 				</if>

+ 8 - 6
cooleshow-user/user-biz/src/main/resources/config/mybatis/UserOrderRefundMapper.xml

@@ -68,11 +68,13 @@
     <select id="selectOrderRefundDetils" resultType="com.yonge.cooleshow.biz.dal.entity.UserOrderDetail">
         select d.* from user_order o
         left join user_order_detail d on o.order_no_ = d.order_no_
-        where o.id_ = {orderId} and o.status_ = 'PAID'
-        and not exists (
-            select 1 from user_order_refund r where r.biz_type_ = 'ORDER' and r.status_ in ('DOING','PASS') and r.biz_id_ = o.id_
-            union all
-            select 1 from user_order_refund r where r.biz_type_ = 'GOOD' and r.status_ in ('DOING','PASS') and r.biz_id_ = d.id_
-        )
+        where o.id_ = #{orderId}
+          and o.status_ = 'PAID'
+          and not exists (
+                select 1 from user_order_refund r
+                where r.order_no_ = o.order_no_
+                  and r.status_ in ('DOING','PASS')
+                  and FIND_IN_SET(d.id_,r.oredr_detil_ids_)
+            )
     </select>
 </mapper>

+ 43 - 46
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/UserOrderRefundController.java

@@ -5,8 +5,6 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderRefundReq;
 import com.yonge.cooleshow.biz.dal.dto.search.UserOrderRefundSearch;
-import com.yonge.cooleshow.biz.dal.entity.UserOrder;
-import com.yonge.cooleshow.biz.dal.entity.UserOrderRefund;
 import com.yonge.cooleshow.biz.dal.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.service.UserOrderRefundService;
 import com.yonge.cooleshow.biz.dal.support.DistributedLock;
@@ -23,71 +21,70 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 @RestController
 @RequestMapping("/userOrderRefunds")
 @Api(value = "用户退款表", tags = "用户退款表")
 public class UserOrderRefundController extends BaseController {
-	@Autowired
-	private SysUserFeignService sysUserFeignService;
-	@Autowired
-	private RedissonClient redissonClient;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private RedissonClient redissonClient;
     @Autowired
     private UserOrderRefundService userOrderRefundService;
 
-	/**
+    /**
      * 查询单条
      */
     @GetMapping("/detail/{id}")
     @ApiOperation(value = "详情", notes = "传入id")
     public HttpResponseResult<UserOrderRefundVo> detail(@PathVariable("id") Long id) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || null == user.getId()) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-    	return succeed(userOrderRefundService.detail(id));
-	}
-    
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(userOrderRefundService.detail(id));
+    }
+
     /**
      * 查询分页
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入orderRefundsSearch")
     public HttpResponseResult<PageInfo<UserOrderRefundVo>> page(@RequestBody UserOrderRefundSearch query) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || null == user.getId()) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		query.setUserId(user.getId());
-		IPage<UserOrderRefundVo> pages = userOrderRefundService.selectPage(PageUtil.getPage(query), query);
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        query.setUserId(user.getId());
+        IPage<UserOrderRefundVo> pages = userOrderRefundService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
-	}
+    }
 
-	@ApiOperation(value = "订单退款")
-	@PostMapping("/orderRefund")
-	public HttpResponseResult<Boolean> orderRefund(@RequestBody OrderRefundReq refundReq) {
-		SysUser user = sysUserFeignService.queryUserInfo();
-		if (user == null || null == user.getId()) {
-			return failed(HttpStatus.FORBIDDEN, "请登录");
-		}
-		refundReq.setUserId(user.getId());
+    @ApiOperation(value = "订单退款")
+    @PostMapping("/orderRefund")
+    public HttpResponseResult<Boolean> orderRefund(@RequestBody OrderRefundReq refundReq) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        refundReq.setUserId(user.getId());
 
-		try {
-			HttpResponseResult<Boolean> res = DistributedLock.of(redissonClient)
-					.runIfLockCanGet(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(user.getId())
-							, () -> userOrderRefundService.orderRefund(refundReq), 60L, TimeUnit.SECONDS);
-			if(null != res){
-				return res;
-			}else{
-				return HttpResponseResult.failed("订单退款失败");
-			}
-		} catch (BizException e) {
-			return HttpResponseResult.failed(e.getMessage());
-		} catch (Exception e) {
-			e.printStackTrace();
-			return HttpResponseResult.failed("订单退款失败");
-		}
-	}
+        try {
+            HttpResponseResult<Boolean> res = DistributedLock.of(redissonClient)
+                    .runIfLockCanGet(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(user.getId())
+                            , () -> userOrderRefundService.orderRefund(refundReq), 60L, TimeUnit.SECONDS);
+            if (null != res) {
+                return res;
+            } else {
+                return HttpResponseResult.failed("订单退款失败");
+            }
+        } catch (BizException e) {
+            return HttpResponseResult.failed(e.getMessage());
+        } catch (Exception e) {
+            e.printStackTrace();
+            return HttpResponseResult.failed("订单退款失败");
+        }
+    }
 }

+ 2 - 2
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/open/OpenClient.java → cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/open/OpenClient.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow.student.open;
+package com.yonge.cooleshow.student.controller.open;
 
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
@@ -19,7 +19,7 @@ import java.util.Map;
 
 @RestController
 @RequestMapping("/open")
-@Api(value = "开放权限接口")
+@Api(value = "开放权限接口", tags = "开放权限接口")
 public class OpenClient extends BaseController {
     @Autowired
     private TeacherService teacherService;

+ 0 - 2
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/task/TaskController.java

@@ -23,8 +23,6 @@ public class TaskController extends BaseController {
     @Autowired
     private StudentTimeService studentTimeService;
     @Autowired
-    private UserOrderService userOrderService;
-    @Autowired
     private VipCardRecordService vipCardRecordService;
     @Autowired
     private CourseRepliedService repliedService;

+ 1 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/open/UserWithdrawalClient.java → cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/open/UserWithdrawalClient.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow.teacher.open;
+package com.yonge.cooleshow.teacher.controller.open;
 
 import com.alibaba.fastjson.JSONObject;
 import com.yonge.cooleshow.biz.dal.entity.UserWithdrawalCallback;

+ 5 - 5
toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/base/model/RefundBill.java

@@ -18,31 +18,31 @@ public class RefundBill extends Base {
      */
     private String id;
     /***
-     * 付款订单号
+     * 付款订单号(必填)
      * @author liweifan
      * @updateTime 2022/5/10 15:30
      */
     String paymentNo;
     /***
-     * 付款订单三方流水号
+     * 付款订单三方流水号(必填)
      * @author liweifan
      * @updateTime 2022/5/10 15:30
      */
     String tradeNo;
     /***
-     * 退款订单号
+     * 退款订单号(必填)
      * @author liweifan
      * @updateTime 2022/3/31 11:00
      */
     private String refundNo;
     /***
-     * 原订单金额
+     * 原订单金额(必填)
      * @author liweifan
      * @updateTime 2022/3/31 11:01
      */
     private BigDecimal orderAmt;
     /***
-     * 退款金额,必须大于0,保留两位小数点,如0.10、100.05等
+     * 退款金额,必须大于0,保留两位小数点,如0.10、100.05等(必填)
      * @author liweifan
      * @updateTime 2022/3/31 11:01
      */

+ 1 - 0
toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/ali/OriginalAliAppTemplate.java

@@ -68,6 +68,7 @@ public class OriginalAliAppTemplate implements PaymentTemplate {
         AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
         request.setNotifyUrl(paymentProperties.getNotifyUrl()
                 + "/" + payment.getOpenType().getCode()
+                + "/" + payment.getPaymentClient().getCode()
                 + "/" + payment.getPayChannel().getCode()
                 + "/executePayment");
 

+ 7 - 4
toolset/toolset-payment/src/main/java/com/yonge/toolset/payment/original/wx/OriginalWxAppTemplate.java

@@ -217,10 +217,10 @@ public class OriginalWxAppTemplate implements PaymentTemplate {
             return BaseResult.succeed(refundBill);
         } catch (WxPayException e) {
             log.error("微信APP支付请求失败:{}", e.toString());
-            return BaseResult.failed(e.toString());
+            throw new BizException(e.toString());
         } catch (Exception e) {
             e.printStackTrace();
-            return BaseResult.failed("微信APP支付关单请求失败");
+            throw new BizException("微信APP支付关单请求失败");
         }
     }
 
@@ -236,7 +236,6 @@ public class OriginalWxAppTemplate implements PaymentTemplate {
         String params = WebUtil.getBodyData(request);
         log.info("微信APP回调:{}", params);
 
-
         PaymentCallBack paymentCallBack = new PaymentCallBack();
         paymentCallBack.setMethodName(methodName);
 
@@ -301,7 +300,11 @@ public class OriginalWxAppTemplate implements PaymentTemplate {
                 RefundPaymentCallBack refundPayment = new RefundPaymentCallBack();
                 refundPayment.setBillNo(result.getOutRefundNo());
                 refundPayment.setTransNo(result.getRefundId());
-                refundPayment.setRefundAmt(result.getAmount().getRefund());
+                refundPayment.setRefundAmt(
+                        new BigDecimal(result.getAmount().getRefund())
+                                .divide(new BigDecimal("100"))
+                                .toString()
+                );
 
                 if (!StringUtil.isEmpty(result.getSuccessTime())) {
                     Date date = new DateTime(result.getSuccessTime()).toDate();