Browse Source

fix:merge

liujunchi 2 years ago
parent
commit
990f9bd4c2
42 changed files with 501 additions and 2031 deletions
  1. 13 2
      cooleshow-mall/mall-admin/pom.xml
  2. 2 2
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/MallAdminApplication.java
  3. 2 2
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderReturnApplyController.java
  4. 0 62
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/PaymentController.java
  5. 0 6
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderReturnApplyService.java
  6. 26 80
      cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java
  7. 4 4
      cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/enums/OrderCacheEnum.java
  8. 12 0
      cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/UserOrderPayment.java
  9. 15 4
      cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/UserOrderPaymentMapper.xml
  10. 0 43
      cooleshow-mall/mall-pay/pom.xml
  11. 0 36
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/config/HuifuConfiguration.java
  12. 0 40
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/OrderStatusEnum.java
  13. 0 37
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/PayChannelEnum.java
  14. 0 37
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/PayStatusEnum.java
  15. 0 110
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/props/HuifuProperties.java
  16. 0 260
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/PaymentSdk.java
  17. 0 170
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/dto/PaymentReq.java
  18. 0 139
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/dto/RefundReq.java
  19. 0 27
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/DeviceInfo.java
  20. 0 55
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/DivMember.java
  21. 0 52
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/OrderCloseReq.java
  22. 0 68
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/OrderRefundReq.java
  23. 0 73
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/PaymentConfirmParam.java
  24. 0 39
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/res/OrderCloseRes.java
  25. 0 92
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/res/OrderRefundRes.java
  26. 0 50
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/PaymentService.java
  27. 0 145
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/impl/AdapayPaymentServiceImpl.java
  28. 0 116
      cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/util/DistributedLock.java
  29. 9 4
      cooleshow-mall/mall-portal/pom.xml
  30. 2 2
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/MallPortalApplication.java
  31. 121 65
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/PaymentController.java
  32. 17 66
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OrderPayReq.java
  33. 1 13
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OrderPayRes.java
  34. 3 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderReturnApplyService.java
  35. 20 10
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java
  36. 3 3
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/UserOrderPaymentService.java
  37. 64 0
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderReturnApplyServiceImpl.java
  38. 167 93
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  39. 20 17
      cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/UserOrderPaymentServiceImpl.java
  40. 0 1
      cooleshow-mall/pom.xml
  41. 0 5
      pom.xml
  42. 0 1
      toolset/toolset-payment/pom.xml

+ 13 - 2
cooleshow-mall/mall-admin/pom.xml

@@ -37,6 +37,16 @@
         <dependency>
             <groupId>com.yonge.cooleshow</groupId>
             <artifactId>mall-mbg</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>mybatis</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>mybatis-spring</artifactId>
+                    <groupId>org.mybatis</groupId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>com.yonge.cooleshow</groupId>
@@ -62,8 +72,9 @@
         </dependency>
 
         <dependency>
-            <groupId>com.yonge.cooleshow</groupId>
-            <artifactId>mall-pay</artifactId>
+            <groupId>com.yonge.toolset</groupId>
+            <artifactId>toolset-payment</artifactId>
+            <version>${project.toolset.version}</version>
         </dependency>
 
         <dependency>

+ 2 - 2
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/MallAdminApplication.java

@@ -14,9 +14,9 @@ import org.springframework.context.annotation.ComponentScan;
  */
 @SpringBootApplication
 @EnableDiscoveryClient
-@MapperScan({"com.yonge.cooleshow.admin.dao","com.yonge.cooleshow.mbg.mapper"})
+@MapperScan({"com.yonge.cooleshow.admin.dao","com.yonge.cooleshow.mbg.mapper", "com.yonge.toolset.payment.core.dao"})
 @ComponentScan(basePackages = {"com.yonge.cooleshow.admin", "com.yonge.cooleshow.mbg", "com.yonge.cooleshow.mall.common",
-                               "com.yonge.cooleshow.common","com.yonge.cooleshow","com.yonge.toolset.thirdparty"})
+                               "com.yonge.cooleshow.common","com.yonge.toolset.thirdparty","com.yonge.toolset.payment","com.yonge.toolset.log"})
 @EnableSwagger2Doc
 @EnableFeignClients("com.yonge.cooleshow")
 public class MallAdminApplication {

+ 2 - 2
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/OmsOrderReturnApplyController.java

@@ -1,6 +1,6 @@
 package com.yonge.cooleshow.admin.controller;
 
-import com.yonge.cooleshow.enums.OrdeerCacherEnmu;
+import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.api.CommonResult;
 import com.yonge.cooleshow.admin.dto.OmsOrderReturnApplyResult;
@@ -70,7 +70,7 @@ public class OmsOrderReturnApplyController {
     @RequestMapping(value = "/update/status/{id}", method = RequestMethod.POST)
     @ResponseBody
     public CommonResult updateStatus(@PathVariable Long id, @RequestBody OmsUpdateStatusParam statusParam) {
-        RLock lock = redissonClient.getLock(OrdeerCacherEnmu.LOCK_REFUND_ORDER_MALL + ":refundOrder:" + id);
+        RLock lock = redissonClient.getLock(OrderCacheEnum.LOCK_REFUND_ORDER_MALL + ":refundOrder:" + id);
         try {
             boolean b = lock.tryLock(60, 60, TimeUnit.SECONDS);
             if (b) {

+ 0 - 62
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/controller/PaymentController.java

@@ -1,62 +0,0 @@
-package com.yonge.cooleshow.admin.controller;
-
-import com.huifu.adapay.core.AdapayCore;
-import com.huifu.adapay.core.util.AdapaySign;
-import com.yonge.cooleshow.admin.service.OmsOrderReturnApplyService;
-import com.yonge.cooleshow.common.controller.BaseController;
-import io.swagger.annotations.Api;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * @Author: liweifan
- * @Data: 2022/3/11 18:16
- */
-@RestController
-@RequestMapping("/payment")
-@Api(value = "付款接口", tags = "付款接口")
-public class PaymentController extends BaseController {
-    private final static Logger log = LoggerFactory.getLogger(PaymentController.class);
-
-    @Autowired
-    private OmsOrderReturnApplyService orderReturnApplyService;
-
-    /**
-     * 汇付回调
-     * 问题:1、成功失败需要回执什么信息 2、回调url地址是否需要加入白名单
-     * @author liweifan
-     * @param: request
-     * @updateTime 2022/3/11 18:35
-     */
-    @PostMapping("/callback")
-    public void callback(HttpServletRequest request) {
-        try {
-            //验签传参data
-            String data = request.getParameter("data");
-            //验签传参sign
-            String sign = request.getParameter("sign");
-            //验签传参publicKey
-            String publicKey = AdapayCore.PUBLIC_KEY;
-            //验签
-            boolean checkSign = AdapaySign.verifySign(data, sign, publicKey);
-            log.info("汇付回调,res is {}", data);
-            if (checkSign) {
-                //验签成功逻辑
-                log.info("验签成功");
-                String type = request.getParameter("type");
-                if (type.contains("refund")) {
-                    orderReturnApplyService.orderCallback(data);
-                }
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-}

+ 0 - 6
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/OmsOrderReturnApplyService.java

@@ -33,12 +33,6 @@ public interface OmsOrderReturnApplyService {
      */
     OmsOrderReturnApplyResult getItem(Long id);
 
-    /**
-     * 退款订单回调
-     *
-     * @param data
-     */
-    void orderCallback(String data);
 
     /**
      * 统计 待处理退款申请 待处理退货订单

+ 26 - 80
cooleshow-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java

@@ -9,7 +9,6 @@ import com.yonge.cooleshow.admin.dto.OmsReturnApplyQueryParam;
 import com.yonge.cooleshow.admin.dto.OmsUpdateStatusParam;
 import com.yonge.cooleshow.mall.common.exception.ApiException;
 import com.yonge.toolset.base.exception.BizException;
-import com.yonge.cooleshow.enums.PayStatusEnum;
 import com.yonge.cooleshow.mbg.mapper.OmsOrderReturnApplyMapper;
 import com.yonge.cooleshow.mbg.mapper.UserOrderPaymentMapper;
 import com.yonge.cooleshow.mbg.mapper.UserOrderRefundMapper;
@@ -18,9 +17,12 @@ import com.yonge.cooleshow.mbg.model.OmsOrderReturnApplyExample;
 import com.yonge.cooleshow.admin.service.OmsOrderReturnApplyService;
 import com.yonge.cooleshow.mbg.model.UserOrderPayment;
 import com.yonge.cooleshow.mbg.model.UserOrderRefund;
-import com.yonge.cooleshow.sdk.req.OrderRefundReq;
-import com.yonge.cooleshow.sdk.res.OrderRefundRes;
-import com.yonge.cooleshow.service.PaymentService;
+import com.yonge.toolset.base.result.BaseResult;
+import com.yonge.toolset.payment.base.enums.OpenEnum;
+import com.yonge.toolset.payment.base.enums.PayChannelEnum;
+import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
+import com.yonge.toolset.payment.base.model.RefundBill;
+import com.yonge.toolset.payment.core.service.PaymentClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,7 +48,7 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
     private OmsOrderReturnApplyMapper returnApplyMapper;
 
     @Autowired
-    private PaymentService adapayPaymentService;
+    private PaymentClient paymentClient;
 
     @Autowired
     private UserOrderPaymentMapper userOrderPaymentMapper;
@@ -116,23 +118,29 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
         if (userOrderPayment == null) {
             throw new ApiException("未找到付款信息");
         }
-        OrderRefundReq refundReq = new OrderRefundReq();
-        refundReq.setOrderNo(returnApply.getOrderSn());
-        refundReq.setRefundAmount(returnApply.getReturnAmount().setScale(2, RoundingMode.HALF_UP).toString());
+
+        RefundBill refundReq = new RefundBill(OpenEnum.valueOf(userOrderPayment.getOpenType()), PayChannelEnum.valueOf(userOrderPayment.getPayChannel()));
+        refundReq.setRefundNo(returnApply.getOrderSn());
+        refundReq.setRefundAmt(returnApply.getReturnAmount().setScale(2, RoundingMode.HALF_UP));
+
         refundReq.setReason(returnApply.getProductName());
-        refundReq.setTransNo(userOrderPayment.getTransNo());
-        OrderRefundRes orderRefundRes = adapayPaymentService.orderRefund(refundReq);
-        if (orderRefundRes.isStatus()) {
+        refundReq.setPaymentNo(userOrderPayment.getAdapayNo());
+        refundReq.setTradeNo(userOrderPayment.getTransNo());
+        refundReq.setOrderAmt(userOrderPayment.getPayAmt());
+        BaseResult<RefundBill> refundBillBaseResult = paymentClient.refundPayment(refundReq);
+        if (refundBillBaseResult.getStatus()) {
+            RefundBill refundBill = refundBillBaseResult.getData();
             UserOrderRefund userOrderRefund = new UserOrderRefund();
-            userOrderRefund.setReturnId(returnApply.getId());
-            userOrderRefund.setOrderNo(orderRefundRes.getRefundOrderNo());
-            userOrderRefund.setTransNo(orderRefundRes.getTransNo());
-            userOrderRefund.setPayTransNo(orderRefundRes.getPayTransNo());
-            userOrderRefund.setRefundAmt(new BigDecimal(orderRefundRes.getRefundAmount()));
-            userOrderRefund.setStatus(orderRefundRes.getRefundStatus().getCode());
+
+            userOrderRefund.setOrderNo(refundBill.getRefundNo());
+            userOrderRefund.setTransNo(refundBill.getId());
+            userOrderRefund.setPayTransNo(refundBill.getTradeNo());
+            userOrderRefund.setRefundAmt(refundBill.getRefundAmt());
+            userOrderRefund.setStatus(TradeStatusEnum.pending.getCode());
+
             userOrderRefundMapper.insert(userOrderRefund);
         } else {
-            throw new BizException(orderRefundRes.getMessage());
+            throw new BizException(refundBillBaseResult.getMsg());
         }
     }
 
@@ -141,72 +149,10 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
         return returnApplyDao.getDetail(id);
     }
 
-    @Override
-    public void orderCallback(String data) {
-        JSONObject hfRes = JSONObject.parseObject(data);
-        UserOrderRefund userOrderRefund = userOrderRefundMapper.selectByTransNo(hfRes.getString("id"));
-        if (null == userOrderRefund) {
-            log.error("汇付退款回调,订单未找到。 req is {}", data);
-            return;
-        }
-
-        if (!userOrderRefund.getStatus().equals(PayStatusEnum.pending.getCode())) {
-            log.error("汇付退款回调,订单状态异常。 req is {}", data);
-        }
-        if (PayStatusEnum.succeeded.getCode().equals(hfRes.getString("status"))) {
-            //退款成功
-            refundSuccess(userOrderRefund, hfRes);
-        } else {
-            // 退款失败
-            refundCancel(userOrderRefund,hfRes);
-        }
-    }
 
     @Override
     public HomeStatistical countReturnStatus() {
 
         return returnApplyDao.selectReturnStatusCount();
     }
-
-    /**
-     * 退款失败
-     *
-     * @param userOrderRefund
-     * @param hfRes
-     */
-    private void refundCancel(UserOrderRefund userOrderRefund, JSONObject hfRes) {
-        userOrderRefund.setArrivalTime(new Date());
-        userOrderRefund.setStatus(PayStatusEnum.failed.getCode());
-        if (hfRes != null) {
-            try {
-                userOrderRefund.setPayFailMsg(hfRes.getString("error_msg"));
-            }catch (Exception e) {
-                log.error("退款订单,退款失败参数错误,参数{}", hfRes.toJSONString());
-            }
-        }
-        userOrderRefundMapper.updateByPrimaryKeySelective(userOrderRefund);
-    }
-
-    /**
-     * 退款成功
-     *
-     * @param userOrderRefund
-     * @param hfRes
-     */
-    private void refundSuccess(UserOrderRefund userOrderRefund, JSONObject hfRes) {
-
-        userOrderRefund.setArrivalTime(new Date());
-        userOrderRefund.setStatus(PayStatusEnum.succeeded.getCode());
-        if (hfRes != null) {
-            try {
-                userOrderRefund.setFeeAmt(hfRes.getBigDecimal("fee_amt"));
-                userOrderRefund.setRefundAmt(hfRes.getBigDecimal("pay_amt"));
-            }catch (Exception e) {
-                log.error("退款订单,金额格式化失败,参数{}", hfRes.toJSONString());
-            }
-        }
-        userOrderRefundMapper.updateByPrimaryKeySelective(userOrderRefund);
-
-
-    }
 }

+ 4 - 4
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/OrdeerCacherEnmu.java → cooleshow-mall/mall-common/src/main/java/com/yonge/cooleshow/mall/common/enums/OrderCacheEnum.java

@@ -1,4 +1,4 @@
-package com.yonge.cooleshow.enums;
+package com.yonge.cooleshow.mall.common.enums;
 
 import com.yonge.cooleshow.common.constant.CommonConstants;
 import org.apache.commons.lang3.StringUtils;
@@ -11,7 +11,7 @@ import java.time.Duration;
  * @author liujunchi
  * @date 2022-04-24
  */
-public enum OrdeerCacherEnmu {
+public enum OrderCacheEnum {
     LOCK_EXECUTE_ORDER("用户下单锁"),
     LOCK_PAY_ORDER("用户付款锁"),
     LOCK_CHANGE_ACCOUNT("账户变更锁"),
@@ -31,11 +31,11 @@ public enum OrdeerCacherEnmu {
      */
     private Duration duration;
 
-    OrdeerCacherEnmu(String msg) {
+    OrderCacheEnum(String msg) {
         this.msg = msg;
     }
 
-    OrdeerCacherEnmu(String msg, Duration duration) {
+    OrderCacheEnum(String msg, Duration duration) {
         this.msg = msg;
         this.duration = duration;
     }

+ 12 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/UserOrderPayment.java

@@ -25,6 +25,10 @@ public class UserOrderPayment implements Serializable {
     private String adapayNo;
     @ApiModelProperty("交易流水号 ")
     private String transNo;
+
+    @ApiModelProperty("服务提供方: ORIGINAL 微信支付宝 ADAPAY 汇付")
+    private String openType;
+
     @ApiModelProperty("支付渠道:  alipay 支付宝  wx_lite 微信 ")
     private String payChannel;
     @ApiModelProperty("交易金额,必须大于0,保留两位小数点,如0.10、100.05等 ")
@@ -63,6 +67,14 @@ public class UserOrderPayment implements Serializable {
     private Date updateTime;
 
 
+    public String getOpenType() {
+        return openType;
+    }
+
+    public void setOpenType(String openType) {
+        this.openType = openType;
+    }
+
     public String getCloseStatus() {
         return closeStatus;
     }

+ 15 - 4
cooleshow-mall/mall-mbg/src/main/resources/config/mybatis/UserOrderPaymentMapper.xml

@@ -7,6 +7,7 @@
         <id column="id_" jdbcType="BIGINT" property="id" />
         <result column="order_no_" jdbcType="VARCHAR" property="orderNo" />
         <result column="trans_no_" jdbcType="VARCHAR" property="transNo" />
+        <result column="open_type_" jdbcType="VARCHAR" property="openType" />
         <result column="pay_channel_" jdbcType="VARCHAR" property="payChannel" />
         <result column="pay_amt_" jdbcType="DECIMAL" property="payAmt" />
         <result column="fee_amt_" jdbcType="DECIMAL" property="feeAmt" />
@@ -24,7 +25,7 @@
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
         id_, order_no_, trans_no_, pay_channel_, pay_amt_, fee_amt_, pay_info_, status_,
-        pay_fail_msg_, arrival_time_,close_status_,close_fail_msg_,close_time_,create_time_, update_time_,adapay_no_
+        pay_fail_msg_, arrival_time_,close_status_,close_fail_msg_,close_time_,create_time_, update_time_,adapay_no_,open_type_
     </sql>
     <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
         <!--@mbg.generated-->
@@ -43,12 +44,12 @@
         insert into user_order_payment (order_no_, trans_no_, pay_channel_,
         pay_amt_, fee_amt_, pay_info_,
         status_, pay_fail_msg_, arrival_time_,
-        create_time_, update_time_,close_status_,close_fail_msg_,close_time_,adapay_no_)
+        create_time_, update_time_,close_status_,close_fail_msg_,close_time_,adapay_no_,open_type_)
         values (#{orderNo,jdbcType=VARCHAR}, #{transNo,jdbcType=VARCHAR}, #{payChannel,jdbcType=VARCHAR},
         #{payAmt,jdbcType=DECIMAL}, #{feeAmt,jdbcType=DECIMAL}, #{payInfo,jdbcType=VARCHAR},
         #{status,jdbcType=VARCHAR}, #{payFailMsg,jdbcType=VARCHAR}, #{arrivalTime,jdbcType=TIMESTAMP},
         #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},#{closeStatus},#{closeFailMsg}
-        ,#{closeTime},#{adapayNo})
+        ,#{closeTime},#{adapayNo},#{openType})
     </insert>
     <insert id="insertSelective" keyColumn="id_" keyProperty="id" parameterType="com.yonge.cooleshow.mbg.model.UserOrderPayment" useGeneratedKeys="true">
         <!--@mbg.generated-->
@@ -99,6 +100,9 @@
             <if test="adapayNo != null">
                 adapay_no_,
             </if>
+            <if test="openType != null">
+                open_type_,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="orderNo != null">
@@ -146,6 +150,9 @@
             <if test="adapayNo != null">
                 #{adapayNo},
             </if>
+            <if test="openType != null">
+                #{openType},
+            </if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.yonge.cooleshow.mbg.model.UserOrderPayment">
@@ -195,7 +202,10 @@
                 close_time_ = #{closeTime,jdbcType=TIMESTAMP},
             </if>
             <if test="adapayNo != null">
-                adapay_no_ = #{closeTime,jdbcType=TIMESTAMP},
+                adapay_no_ = #{adapayNo,jdbcType=TIMESTAMP},
+            </if>
+            <if test="openType != null">
+                open_type_ = #{openType,jdbcType=TIMESTAMP},
             </if>
         </set>
         where id_ = #{id,jdbcType=BIGINT}
@@ -218,6 +228,7 @@
         close_fail_msg_ = #{closeFailMsg},
         close_time_ = #{closeTime,jdbcType=TIMESTAMP},
         adapay_no_ = #{adapayNo,jdbcType=TIMESTAMP},
+        open_type_ = #{openType,jdbcType=TIMESTAMP}
         where id_ = #{id,jdbcType=BIGINT}
     </update>
 

+ 0 - 43
cooleshow-mall/mall-pay/pom.xml

@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>com.yonge.cooleshow</groupId>
-        <artifactId>cooleshow-mall</artifactId>
-        <version>1.0</version>
-    </parent>
-
-    <artifactId>mall-pay</artifactId>
-    <version>1.0</version>
-    <name>mall-pay</name>
-    <description>mall-pay</description>
-    <properties>
-        <java.version>1.8</java.version>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>com.huifu.adapay</groupId>
-            <artifactId>adapay-java-sdk</artifactId>
-            <version>1.2.10</version>
-        </dependency>
-        <dependency>
-            <groupId>com.yonge.cooleshow</groupId>
-            <artifactId>mall-common</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.redisson</groupId>
-            <artifactId>redisson</artifactId>
-            <version>3.16.4</version>
-            <scope>compile</scope>
-        </dependency>
-
-        <!-- redisson -->
-        <dependency>
-            <groupId>org.redisson</groupId>
-            <artifactId>redisson-spring-boot-starter</artifactId>
-            <version>3.16.4</version>
-        </dependency>
-    </dependencies>
-
-</project>

+ 0 - 36
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/config/HuifuConfiguration.java

@@ -1,36 +0,0 @@
-package com.yonge.cooleshow.config;
-
-import com.huifu.adapay.Adapay;
-import com.huifu.adapay.model.MerConfig;
-import com.yonge.cooleshow.props.HuifuProperties;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * 路由配置信息
- */
-@Configuration
-@EnableConfigurationProperties({HuifuProperties.class})
-public class HuifuConfiguration {
-	private static HuifuProperties huifuProperties;
-	@Bean
-	public MerConfig merConfig(HuifuProperties authProperties) {
-		this.huifuProperties = authProperties;
-
-		MerConfig merConfig = new MerConfig();
-		merConfig.setApiKey(authProperties.getApiKey());
-		merConfig.setApiMockKey(authProperties.getMockApiKey());
-		merConfig.setRSAPrivateKey(authProperties.getRsaPrivateKey());
-		try {
-			Adapay.initWithMerConfig(merConfig);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return merConfig;
-	}
-
-	public static HuifuProperties getHuifuProperties(){
-		return huifuProperties;
-	}
-}

+ 0 - 40
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/OrderStatusEnum.java

@@ -1,40 +0,0 @@
-package com.yonge.cooleshow.enums;
-
-import com.yonge.toolset.base.enums.BaseEnum;
-
-/**
- * 订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭
- * @Author: liweifan
- * @Data: 2022/3/31 14:59
- */
-public enum OrderStatusEnum implements BaseEnum<String, OrderStatusEnum> {
-    WAIT_PAY("WAIT_PAY","待支付"),
-    PAYING("PAYING","支付中"),
-    PAID("PAID","已付款"),
-    CLOSE("CLOSE","已关闭"),
-    FAIL("FAIL","支付失败"),
-    ;
-    private String code;
-    private String msg;
-
-    OrderStatusEnum(String code, String msg) {
-        this.code = code;
-        this.msg = msg;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public String getCode() {
-        return this.code;
-    }
-}

+ 0 - 37
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/PayChannelEnum.java

@@ -1,37 +0,0 @@
-package com.yonge.cooleshow.enums;
-
-
-/**
- * 支付渠道
- * @author liweifan
- * @updateTime 2022/3/31 11:30
- */
-public enum PayChannelEnum {
-    alipay("alipay","支付宝APP支付"),
-    wx_lite("wx_lite","微信小程序支付"),
-    alipay_lite("alipay_lite","支付宝小程序支付")
-    ;
-    private String code;
-    private String msg;
-
-    PayChannelEnum(String code, String msg) {
-        this.code = code;
-        this.msg = msg;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public String getCode() {
-        return this.code;
-    }
-}

+ 0 - 37
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/enums/PayStatusEnum.java

@@ -1,37 +0,0 @@
-package com.yonge.cooleshow.enums;
-
-
-/**
- * 交易状态 pending 交易处理中 succeeded 交易成功 failed 交易失败
- * @Author: liweifan
- * @Data: 2022/3/31 14:59
- */
-public enum PayStatusEnum{
-    pending("pending","交易处理中"),
-    succeeded("succeeded","交易成功"),
-    failed("failed","交易失败")
-    ;
-    private String code;
-    private String msg;
-
-    PayStatusEnum(String code, String msg) {
-        this.code = code;
-        this.msg = msg;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public String getCode() {
-        return this.code;
-    }
-}

+ 0 - 110
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/props/HuifuProperties.java

@@ -1,110 +0,0 @@
-package com.yonge.cooleshow.props;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-
-/**
- * 权限过滤
- */
-@RefreshScope
-@ConfigurationProperties("huifu")
-public class HuifuProperties {
-    /***
-     * 汇付 控制台 主页面应用的app_id
-     * @author liweifan
-     * @updateTime 2022/3/31 11:19
-     */
-    private String appId;
-    /***
-     * 汇付 控制台->商户信息管理->证书管理中的API Key(prod模式的API KEY)
-     * @author liweifan
-     * @updateTime 2022/3/31 11:19
-     */
-    private String apiKey;
-    /***
-     * 汇付 控制台->商户信息管理->证书管理中的API Key(mock模式的API KEY)
-     * @author liweifan
-     * @updateTime 2022/3/31 11:19
-     */
-    private String mockApiKey;
-    /***
-     * 商户发起请求时,用于请求参数加签所需要的RSA私钥
-     * @author liweifan
-     * @updateTime 2022/3/31 11:24
-     */
-    private String rsaPrivateKey;
-    /***
-     * 付款成功回调地址
-     * @author liweifan
-     * @updateTime 2022/3/31 11:24
-     */
-    private String notifyUrl;
-    /***
-     * 微信appid
-     * @author liweifan
-     * @updateTime 2022/3/31 11:24
-     */
-    private String wxAppid;
-    /***
-     * 微信secret
-     * @author liweifan
-     * @updateTime 2022/3/31 11:24
-     */
-    private String wxSecret;
-
-    public String getApiKey() {
-        return apiKey;
-    }
-
-    public void setApiKey(String apiKey) {
-        this.apiKey = apiKey;
-    }
-
-    public String getMockApiKey() {
-        return mockApiKey;
-    }
-
-    public void setMockApiKey(String mockApiKey) {
-        this.mockApiKey = mockApiKey;
-    }
-
-    public String getRsaPrivateKey() {
-        return rsaPrivateKey;
-    }
-
-    public void setRsaPrivateKey(String rsaPrivateKey) {
-        this.rsaPrivateKey = rsaPrivateKey;
-    }
-
-    public String getAppId() {
-        return appId;
-    }
-
-    public void setAppId(String appId) {
-        this.appId = appId;
-    }
-
-    public String getWxAppid() {
-        return wxAppid;
-    }
-
-    public void setWxAppid(String wxAppid) {
-        this.wxAppid = wxAppid;
-    }
-
-    public String getWxSecret() {
-        return wxSecret;
-    }
-
-    public void setWxSecret(String wxSecret) {
-        this.wxSecret = wxSecret;
-    }
-
-    public String getNotifyUrl() {
-        return notifyUrl;
-    }
-
-    public void setNotifyUrl(String notifyUrl) {
-        this.notifyUrl = notifyUrl;
-    }
-}

+ 0 - 260
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/PaymentSdk.java

@@ -1,260 +0,0 @@
-package com.yonge.cooleshow.sdk.adapay;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.huifu.adapay.core.exception.BaseAdaPayException;
-import com.huifu.adapay.model.Payment;
-import com.huifu.adapay.model.PaymentConfirm;
-import com.huifu.adapay.model.Refund;
-import com.yonge.cooleshow.common.constant.CommonConstants;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.config.HuifuConfiguration;
-import com.yonge.cooleshow.sdk.adapay.dto.PaymentReq;
-import com.yonge.cooleshow.sdk.adapay.dto.RefundReq;
-import com.yonge.toolset.base.exception.ThirdpartyException;
-import com.yonge.toolset.utils.collection.MapUtil;
-import com.yonge.toolset.utils.http.HttpUtil;
-import com.yonge.toolset.utils.string.StringUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-@Component
-public class PaymentSdk {
-    private final static Logger log = LoggerFactory.getLogger(PaymentSdk.class);
-
-    /**
-     * 执行一个支付交易
-     *
-     * @return 创建的支付对象
-     * @throws Exception 异常
-     */
-    public HttpResponseResult<Map<String, Object>> executePayment(PaymentReq paymentReq) {
-        paymentReq.setApp_id(HuifuConfiguration.getHuifuProperties().getAppId());
-        //创建分账对象
-        Map<String, String> div_member = new HashMap<>();
-        div_member.put("member_id", "0");
-        div_member.put("amount", paymentReq.getPay_amt());
-        div_member.put("fee_flag", "Y");
-        List<Map<String, String>> div_members = Arrays.asList(div_member);
-        paymentReq.setDiv_members(JSONObject.toJSONString(div_members));
-
-        log.info("汇付[创建支付对象] Req:{}", JSONObject.toJSONString(paymentReq));
-        //调用sdk方法,创建支付,得到支付对象
-        Map<String, Object> paymentParams = MapUtil.populateMap(new HashMap<>(), paymentReq);
-        Map<String, Object> res;
-        try {
-            res = Payment.create(paymentParams);
-        } catch (BaseAdaPayException e) {
-            return HttpResponseResult.failed(e.getMessage());
-        }
-        if (null == res) {
-            return HttpResponseResult.failed("请求失败");
-        }
-        log.info("汇付[创建支付对象] Resp:{}", res);
-        String errorCode = (String) res.get("error_code");
-        if (null != errorCode) {
-            String errorMsg = (String) res.get("error_msg");
-            return HttpResponseResult.failed(errorMsg);
-        }
-        return HttpResponseResult.succeed(res);
-    }
-
-    /**
-     * 创建确认对象
-     * 创建支付确认对象适用于延时分账的场景
-     *
-     * @return 查询的支付对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> createConfirm(Map<String, Object> confirm) throws Exception {
-        confirm = PaymentConfirm.create(confirm);
-
-        String error_code = (String) confirm.get("error_code");
-        if (null != error_code) {
-            String errorMsg = (String) confirm.get("error_msg");
-            throw new ThirdpartyException(errorMsg);
-        }
-        return confirm;
-    }
-
-    /**
-     * 关闭一个支付交易
-     *
-     * @param paymentId 要关闭的支付id
-     * @return 关闭的支付对象
-     * @throws Exception 异常
-     */
-    public HttpResponseResult<Map<String, Object>> closePayment(String paymentId, String reason, String expend) {
-        Map<String, Object> paymentParams = new HashMap<>(10);
-        paymentParams.put("payment_id", paymentId);
-        paymentParams.put("reason", reason);
-        paymentParams.put("expend", expend);
-        paymentParams.put("notify_url", HuifuConfiguration.getHuifuProperties().getNotifyUrl());
-
-        Map<String, Object> res;
-        try {
-            res = Payment.close(paymentParams);
-        } catch (BaseAdaPayException e) {
-            return HttpResponseResult.failed(e.getMessage());
-        }
-        if (CollectionUtils.isEmpty(res)) {
-            return HttpResponseResult.failed("请求失败");
-        }
-        log.info("汇付[关闭支付对象] Resp:{}", res);
-        String errorCode = (String) res.get("error_code");
-        if (null != errorCode) {
-            String errorMsg = (String) res.get("error_msg");
-            return HttpResponseResult.failed(errorMsg);
-        }
-        return HttpResponseResult.succeed(res);
-    }
-
-    /**
-     * 查询一个支付交易
-     *
-     * @param paymentId 要查询的支付id
-     * @return 查询的支付对象
-     * @throws Exception 异常
-     */
-    public Map<String, Object> queryPayment(String paymentId) throws Exception {
-        System.out.println("=======query payment begin=======");
-        //查询支付对象的参数,全部参数请参考 https://docs.adapay.tech/api/04-trade.html#id7
-        //调用sdk方法,查询支付交易,得到支付对象
-        Map<String, Object> payment = new HashMap<>();
-        try {
-            System.out.println("支付查询请求参数:" + JSON.toJSONString(paymentId));
-            payment = com.huifu.adapay.model.Payment.query(paymentId);
-        } catch (ThirdpartyException e) {
-            e.printStackTrace();
-        }
-
-        System.out.println("支付查询返回参数:" + JSON.toJSONString(payment));
-
-        String error_code = (String) payment.get("error_code");
-        if (null != error_code) {
-            String error_msg = (String) payment.get("error_msg");
-            System.out.println("error_code:" + error_code + "............." + error_msg);
-        }
-        System.out.println("=======query payment end=======");
-        return payment;
-    }
-    /***
-     * 获取openId
-     * @author liweifan
-     * @param: js_code
-     * @updateTime 2022/4/8 15:49
-     * @return: java.lang.Object
-     */
-    public HttpResponseResult<Map<String, String>> getOpenId(String js_code) {
-        log.info("微信[获取用户openId] Req:{}", js_code);
-        Map<String, Object> param = new HashMap<>();
-        param.put("appid", HuifuConfiguration.getHuifuProperties().getWxAppid());
-        param.put("secret", HuifuConfiguration.getHuifuProperties().getWxSecret());
-        param.put("js_code", js_code);
-        param.put("grant_type", CommonConstants.WECHAT_GRANT_TYPE);
-
-        try {
-            String res = HttpUtil.get("https://api.weixin.qq.com/sns/jscode2session", param);
-            JSONObject jsonObject = JSONObject.parseObject(res);
-            log.info("微信[获取用户openId] Res:{}", jsonObject.toJSONString());
-            String errcode = jsonObject.getString("errcode");
-            if(StringUtil.isEmpty(errcode) || "0".equals(errcode)){
-                Map<String, String> resMap = new HashMap<>();
-                resMap.put("openid", jsonObject.getString("openid"));
-                resMap.put("session_key", jsonObject.getString("session_key"));
-                return HttpResponseResult.succeed(resMap);
-            }else{
-                return HttpResponseResult.failed(jsonObject.getString("errmsg"));
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed("请求失败");
-        }
-    }
-
-
-
-    /**
-     * 退款
-     *
-     * @return 关闭的支付对象
-     */
-    public HttpResponseResult<Map<String, Object>> refundPayment(RefundReq refundReq) {
-
-        refundReq.setFail_fast("Y");
-        //创建分账对象
-        Map<String, String> div_member = new HashMap<>();
-        div_member.put("member_id", "0");
-        div_member.put("amount", refundReq.getRefund_amt());
-        div_member.put("fee_flag", "Y");
-        List<Map<String, String>> div_members = Arrays.asList(div_member);
-        refundReq.setDiv_members(JSONObject.toJSONString(div_members));
-
-        log.info("汇付[退款对象] Req:{}", JSONObject.toJSONString(refundReq));
-        //调用sdk方法,创建退款,得到退款对象
-        Map<String, Object> paymentParams = MapUtil.populateMap(new HashMap<>(), refundReq);
-        Map<String, Object> res;
-        try {
-            res = Refund.create(refundReq.getId(),paymentParams);
-        } catch (BaseAdaPayException e) {
-            return HttpResponseResult.failed(e.getMessage());
-        }
-        if (null == res) {
-            return HttpResponseResult.failed("请求失败");
-        }
-        log.info("汇付[创建退款对象] Resp:{}", res);
-        String errorCode = (String) res.get("error_code");
-        if (null != errorCode) {
-            String errorMsg = (String) res.get("error_msg");
-            return HttpResponseResult.failed(errorMsg);
-        }
-        return HttpResponseResult.succeed(res);
-    }
-
-    /**
-     *  查看退款订单
-     *
-     * @param {
-     *     "status": "succeeded",
-     *     "prod_mode": "true",
-     *     "refunds": [
-     *         {
-     *             "payment_id": "002112019110811022810038712892084113408",
-     *             "refund_id": "0021120191108110337980038713178955902976",
-     *             "refund_order_no": "refundOrderNo00211201911081103379",
-     *             "trans_status": "P",
-     *             "refund_amt": "0.01",
-     *             "fee_amt": ""
-     *         }
-     *     ]
-     * }
-     */
-    public HttpResponseResult<Map<String, Object>> selectRefundPayment(String refundId) {
-
-        Map<String, Object> refundParams = new HashMap<>(2);
-        refundParams.put("refund_id", refundId);
-        Map<String, Object> res;
-        try {
-            res = Refund.query(refundParams);
-        } catch (BaseAdaPayException e) {
-            return HttpResponseResult.failed(e.getMessage());
-        }
-        if (null == res) {
-            return HttpResponseResult.failed("请求失败");
-        }
-        log.info("汇付[查看退款对象] Resp:{}", res);
-        String errorCode = (String) res.get("error_code");
-        if (null != errorCode) {
-            String errorMsg = (String) res.get("error_msg");
-            return HttpResponseResult.failed(errorMsg);
-        }
-        return HttpResponseResult.succeed(res);
-    }
-}

+ 0 - 170
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/dto/PaymentReq.java

@@ -1,170 +0,0 @@
-package com.yonge.cooleshow.sdk.adapay.dto;
-
-import com.yonge.cooleshow.sdk.req.DeviceInfo;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * 创建支付对象请求参数
- * @Author: liweifan
- * @Data: 2022/3/31 10:58
- */
-public class PaymentReq implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /***
-     * 请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一
-     * @author liweifan
-     * @updateTime 2022/3/31 11:00
-     */
-    private String order_no;
-    /***
-     * 控制台 主页面应用的app_id
-     * @author liweifan
-     * @updateTime 2022/3/31 11:00
-     */
-    private String app_id;
-    /***
-     * 支付渠道,参见 支付渠道
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private String pay_channel;
-    /***
-     * 交易金额,必须大于0,保留两位小数点,如0.10、100.05等
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private String pay_amt;
-    /***
-     * 商品标题
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private String goods_title;
-    /***
-     * 商品描述信息,微信小程序和微信公众号该字段最大长度42个字符
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private String goods_desc;
-    /***
-     * 分账对象信息列表,最多仅支持7个分账方,json 数组形式,详见 分账对象信息列表
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private String div_members;
-    /***
-     * 订单附加说明
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private String description;
-    /***
-     * 前端设备信息,详见 设备信息
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private DeviceInfo device_info;
-    /***
-     * 支付渠道额外参数,JSON格式,条件可输入,详见 支付渠道 expend参数
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private Map<String,Object> expend;
-    /***
-     * 异步通知地址,url为http/https路径,服务器POST回调,URL 上请勿附带参数
-     * @author liweifan
-     * @updateTime 2022/3/31 11:01
-     */
-    private String notify_url;
-
-    public String getOrder_no() {
-        return order_no;
-    }
-
-    public void setOrder_no(String order_no) {
-        this.order_no = order_no;
-    }
-
-    public String getApp_id() {
-        return app_id;
-    }
-
-    public void setApp_id(String app_id) {
-        this.app_id = app_id;
-    }
-
-    public String getPay_amt() {
-        return pay_amt;
-    }
-
-    public void setPay_amt(String pay_amt) {
-        this.pay_amt = pay_amt;
-    }
-
-    public String getGoods_title() {
-        return goods_title;
-    }
-
-    public void setGoods_title(String goods_title) {
-        this.goods_title = goods_title;
-    }
-
-    public String getGoods_desc() {
-        return goods_desc;
-    }
-
-    public void setGoods_desc(String goods_desc) {
-        this.goods_desc = goods_desc;
-    }
-
-    public String getDiv_members() {
-        return div_members;
-    }
-
-    public void setDiv_members(String div_members) {
-        this.div_members = div_members;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public DeviceInfo getDevice_info() {
-        return device_info;
-    }
-
-    public void setDevice_info(DeviceInfo device_info) {
-        this.device_info = device_info;
-    }
-
-    public Map<String, Object> getExpend() {
-        return expend;
-    }
-
-    public void setExpend(Map<String, Object> expend) {
-        this.expend = expend;
-    }
-
-    public String getNotify_url() {
-        return notify_url;
-    }
-
-    public void setNotify_url(String notify_url) {
-        this.notify_url = notify_url;
-    }
-
-    public String getPay_channel() {
-        return pay_channel;
-    }
-
-    public void setPay_channel(String pay_channel) {
-        this.pay_channel = pay_channel;
-    }
-}

+ 0 - 139
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/adapay/dto/RefundReq.java

@@ -1,139 +0,0 @@
-package com.yonge.cooleshow.sdk.adapay.dto;
-
-import com.yonge.cooleshow.sdk.req.DeviceInfo;
-
-import java.io.Serializable;
-
-/**
- * Description
- *
- * @author liujunchi
- * @date 2022-04-27
- */
-public class RefundReq implements Serializable {
-
-    /**
-     * 当支付确认成功后进行退款,请传入支付确认对象的id;当实时分账成功后进行退款,请传入支付对象的id。
-     *
-     * Y
-     */
-    private String id;
-
-    /**
-     * 请求订单号,只能为英文、数字或者下划线的一种或多种组合
-     *
-     * Y
-     */
-    private String refund_order_no;
-
-    /**
-     * 退款金额,若退款金额小于原交易金额,则认为是部分退款,必须大于0,保留两位小数点,如0.10、100.05等
-     *
-     * Y
-     */
-    private String refund_amt;
-
-    /**
-     * 退款描述
-     */
-    private String reason;
-
-    /**
-     * 扩展域
-     */
-    private String expend;
-
-    /**
-     * 前端设备信息
-     */
-    private DeviceInfo device_info;
-
-    /**
-     * 分账对象信息列表
-     */
-    private String div_members;
-
-    /**
-     * 异步通知地址,url为http/https路径,服务器POST回调,URL 上请勿附带参数
-     */
-    private String notify_url;
-
-    /**
-     * 快速失败标识:N 或者为空时-退款失败及时返回错误,仅支持实时分账场景;
-     * 为Y时,退款失败会走 Adapay 人工审核流程,核对后再次出款或回账,最晚 T+3 返回终态结果
-     */
-    private String fail_fast;
-
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getRefund_order_no() {
-        return refund_order_no;
-    }
-
-    public void setRefund_order_no(String refund_order_no) {
-        this.refund_order_no = refund_order_no;
-    }
-
-    public String getRefund_amt() {
-        return refund_amt;
-    }
-
-    public void setRefund_amt(String refund_amt) {
-        this.refund_amt = refund_amt;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public String getExpend() {
-        return expend;
-    }
-
-    public void setExpend(String expend) {
-        this.expend = expend;
-    }
-
-    public DeviceInfo getDevice_info() {
-        return device_info;
-    }
-
-    public void setDevice_info(DeviceInfo device_info) {
-        this.device_info = device_info;
-    }
-
-    public String getDiv_members() {
-        return div_members;
-    }
-
-    public void setDiv_members(String div_members) {
-        this.div_members = div_members;
-    }
-
-    public String getNotify_url() {
-        return notify_url;
-    }
-
-    public void setNotify_url(String notify_url) {
-        this.notify_url = notify_url;
-    }
-
-    public String getFail_fast() {
-        return fail_fast;
-    }
-
-    public void setFail_fast(String fail_fast) {
-        this.fail_fast = fail_fast;
-    }
-}

+ 0 - 27
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/DeviceInfo.java

@@ -1,27 +0,0 @@
-package com.yonge.cooleshow.sdk.req;
-
-import java.io.Serializable;
-
-/**
- * 交易设备信息
- * @Author: liweifan
- * @Data: 2022/3/31 11:36
- */
-public class DeviceInfo implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /***
-     * 交易设备所在的公网 IP
-     * @author liweifan
-     * @updateTime 2022/3/31 11:07
-     */
-    private String device_ip;
-
-    public String getDevice_ip() {
-        return device_ip;
-    }
-
-    public void setDevice_ip(String device_ip) {
-        this.device_ip = device_ip;
-    }
-}

+ 0 - 55
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/DivMember.java

@@ -1,55 +0,0 @@
-package com.yonge.cooleshow.sdk.req;
-
-import java.io.Serializable;
-
-/**
- * 分账对象
- * @Author: liweifan
- * @Data: 2022/3/31 11:26
- */
-public class DivMember implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 分账用户 Member对象 的 id;若是商户本身时,传入0
-     * @author liweifan
-     * @updateTime 2022/3/31 11:27
-     */
-    private String member_id;
-    /**
-     * 分账金额,精确到分,如0.50,1.00等,分账总金额必须等于主交易金额,金额不能为0.00
-     * @author liweifan
-     * @updateTime 2022/3/31 11:28
-     */
-    private String amount;
-    /**
-     * 是否手续费承担方,N-否,Y-是,手续费承担方有且只能有一个
-     * @author liweifan
-     * @updateTime 2022/3/31 11:28
-     */
-    private String fee_flag;
-
-    public String getMember_id() {
-        return member_id;
-    }
-
-    public void setMember_id(String member_id) {
-        this.member_id = member_id;
-    }
-
-    public String getAmount() {
-        return amount;
-    }
-
-    public void setAmount(String amount) {
-        this.amount = amount;
-    }
-
-    public String getFee_flag() {
-        return fee_flag;
-    }
-
-    public void setFee_flag(String fee_flag) {
-        this.fee_flag = fee_flag;
-    }
-}

+ 0 - 52
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/OrderCloseReq.java

@@ -1,52 +0,0 @@
-package com.yonge.cooleshow.sdk.req;
-
-import io.swagger.annotations.ApiModel;
-
-/**
- * Description
- *
- * @author liujunchi
- * @date 2022-05-05
- */
-@ApiModel("关闭订单请求")
-public class OrderCloseReq {
-
-    /**
-     * 支付id
-     */
-    private String paymentId;
-
-    /**
-     * 关单描述
-     */
-    private String reason;
-
-    /**
-     * 扩展域
-     */
-    private String expend;
-
-    public String getPaymentId() {
-        return paymentId;
-    }
-
-    public void setPaymentId(String paymentId) {
-        this.paymentId = paymentId;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public String getExpend() {
-        return expend;
-    }
-
-    public void setExpend(String expend) {
-        this.expend = expend;
-    }
-}

+ 0 - 68
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/OrderRefundReq.java

@@ -1,68 +0,0 @@
-package com.yonge.cooleshow.sdk.req;
-
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * Description 退款请求参数
- *
- * @author liujunchi
- * @date 2022-04-27
- */
-public class OrderRefundReq {
-
-    @ApiModelProperty("支付流水号")
-    private String transNo;
-
-
-    @ApiModelProperty("订单号")
-    private String orderNo;
-
-    @ApiModelProperty("退款金额")
-    private String refundAmount;
-
-    @ApiModelProperty("退款描述")
-    private String reason;
-
-    @ApiModelProperty(value = "用户端公网ip ")
-    private String ipAddress;
-
-    public String getTransNo() {
-        return transNo;
-    }
-
-    public void setTransNo(String transNo) {
-        this.transNo = transNo;
-    }
-
-    public String getOrderNo() {
-        return orderNo;
-    }
-
-    public void setOrderNo(String orderNo) {
-        this.orderNo = orderNo;
-    }
-
-    public String getRefundAmount() {
-        return refundAmount;
-    }
-
-    public void setRefundAmount(String refundAmount) {
-        this.refundAmount = refundAmount;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public String getIpAddress() {
-        return ipAddress;
-    }
-
-    public void setIpAddress(String ipAddress) {
-        this.ipAddress = ipAddress;
-    }
-}

+ 0 - 73
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/PaymentConfirmParam.java

@@ -1,73 +0,0 @@
-package com.yonge.cooleshow.sdk.req;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * @Author: liweifan
- * @Data: 2022/3/11 17:44
- */
-public class PaymentConfirmParam implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    //Adapay生成的支付对象id
-    private String payment_id;
-    //请求订单号,只能为英文、数字或者下划线的一种或多种组合,保证在app_id下唯一
-    private String order_no;
-    //确认金额,必须大于0,保留两位小数点,如0.10、100.05等。必须小于等于原支付金额-已确认金额-已撤销金额。
-    private String confirm_amt;
-    //附加说明
-    private String description;
-    //分账对象信息列表,一次请求最多仅支持7个分账方
-    private List<DivMember> div_members;
-    //手续费收取模式:O-商户手续费账户扣取手续费,I-交易金额中扣取手续费;值为空时,默认值为I;若为O时,分账对象列表中不支持传入手续费承担方
-    private String fee_mode;
-
-    public String getPayment_id() {
-        return payment_id;
-    }
-
-    public void setPayment_id(String payment_id) {
-        this.payment_id = payment_id;
-    }
-
-    public String getOrder_no() {
-        return order_no;
-    }
-
-    public void setOrder_no(String order_no) {
-        this.order_no = order_no;
-    }
-
-    public String getConfirm_amt() {
-        return confirm_amt;
-    }
-
-    public void setConfirm_amt(String confirm_amt) {
-        this.confirm_amt = confirm_amt;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public List<DivMember> getDiv_members() {
-        return div_members;
-    }
-
-    public void setDiv_members(List<DivMember> div_members) {
-        this.div_members = div_members;
-    }
-
-    public String getFee_mode() {
-        return fee_mode;
-    }
-
-    public void setFee_mode(String fee_mode) {
-        this.fee_mode = fee_mode;
-    }
-}

+ 0 - 39
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/res/OrderCloseRes.java

@@ -1,39 +0,0 @@
-package com.yonge.cooleshow.sdk.res;
-
-import io.swagger.annotations.ApiModel;
-
-/**
- * Description
- *
- * @author liujunchi
- * @date 2022-05-05
- */
-@ApiModel("关闭订单信息")
-public class OrderCloseRes {
-
-    /**
-     * 执行状态
-     */
-    private boolean status = true;
-
-    /**
-     * 错误信息
-     */
-    private String failMsg;
-
-    public boolean isStatus() {
-        return status;
-    }
-
-    public void setStatus(boolean status) {
-        this.status = status;
-    }
-
-    public String getFailMsg() {
-        return failMsg;
-    }
-
-    public void setFailMsg(String failMsg) {
-        this.failMsg = failMsg;
-    }
-}

+ 0 - 92
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/res/OrderRefundRes.java

@@ -1,92 +0,0 @@
-package com.yonge.cooleshow.sdk.res;
-
-import com.yonge.cooleshow.enums.PayStatusEnum;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * Description
- *
- * @author liujunchi
- * @date 2022-04-27
- */
-@ApiModel("退款返回数据")
-public class OrderRefundRes {
-
-    @ApiModelProperty("退款流水号")
-    private String transNo;
-
-    @ApiModelProperty("支付流水号")
-    private String payTransNo;
-
-    @ApiModelProperty("订单号")
-    private String refundOrderNo;
-
-    @ApiModelProperty("退款金额")
-    private String refundAmount;
-
-    @ApiModelProperty("退款状态")
-    private PayStatusEnum refundStatus;
-
-    @ApiModelProperty("执行状态")
-    private boolean status = true;
-
-    @ApiModelProperty("出错信息")
-    private String message;
-
-    public String getRefundOrderNo() {
-        return refundOrderNo;
-    }
-
-    public void setRefundOrderNo(String refundOrderNo) {
-        this.refundOrderNo = refundOrderNo;
-    }
-
-    public boolean isStatus() {
-        return status;
-    }
-
-    public void setStatus(boolean status) {
-        this.status = status;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    public String getTransNo() {
-        return transNo;
-    }
-
-    public void setTransNo(String transNo) {
-        this.transNo = transNo;
-    }
-
-    public String getPayTransNo() {
-        return payTransNo;
-    }
-
-    public void setPayTransNo(String payTransNo) {
-        this.payTransNo = payTransNo;
-    }
-
-    public String getRefundAmount() {
-        return refundAmount;
-    }
-
-    public void setRefundAmount(String refundAmount) {
-        this.refundAmount = refundAmount;
-    }
-
-    public PayStatusEnum getRefundStatus() {
-        return refundStatus;
-    }
-
-    public void setRefundStatus(PayStatusEnum status) {
-        this.refundStatus = status;
-    }
-}

+ 0 - 50
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/PaymentService.java

@@ -1,50 +0,0 @@
-package com.yonge.cooleshow.service;
-
-import com.yonge.cooleshow.sdk.req.OrderCloseReq;
-import com.yonge.cooleshow.sdk.req.OrderPayReq;
-import com.yonge.cooleshow.sdk.req.OrderRefundReq;
-import com.yonge.cooleshow.sdk.res.OrderCloseRes;
-import com.yonge.cooleshow.sdk.res.OrderPayRes;
-import com.yonge.cooleshow.sdk.res.OrderRefundRes;
-
-/**
- * Description 支付服务
- *
- * @author liujunchi
- * @date 2022-04-21
- */
-public interface PaymentService {
-
-    /**
-     * 调用支付
-     *
-     * @param payReq
-     * @return
-     */
-    OrderPayRes orderPay(OrderPayReq payReq);
-
-
-    /**
-     * 拉起原有支付信息,继续支付
-     *
-     * @param payReq
-     * @return
-     */
-    OrderPayRes orderContinue(OrderPayReq payReq);
-
-    /**
-     * 退款
-     *
-     * @param refundReq
-     * @return
-     */
-    OrderRefundRes orderRefund(OrderRefundReq refundReq);
-
-    /**
-     * 关闭订单
-     *
-     * @param closeReq 关闭订单
-     * @return
-     */
-    OrderCloseRes orderClose(OrderCloseReq closeReq);
-}

+ 0 - 145
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/service/impl/AdapayPaymentServiceImpl.java

@@ -1,145 +0,0 @@
-package com.yonge.cooleshow.service.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.config.HuifuConfiguration;
-import com.yonge.cooleshow.enums.OrderStatusEnum;
-import com.yonge.cooleshow.enums.PayChannelEnum;
-import com.yonge.cooleshow.enums.PayStatusEnum;
-import com.yonge.cooleshow.sdk.adapay.PaymentSdk;
-import com.yonge.cooleshow.sdk.adapay.dto.RefundReq;
-import com.yonge.cooleshow.sdk.req.DeviceInfo;
-import com.yonge.cooleshow.sdk.req.OrderCloseReq;
-import com.yonge.cooleshow.sdk.req.OrderPayReq;
-import com.yonge.cooleshow.sdk.adapay.dto.PaymentReq;
-import com.yonge.cooleshow.sdk.req.OrderRefundReq;
-import com.yonge.cooleshow.sdk.res.OrderCloseRes;
-import com.yonge.cooleshow.sdk.res.OrderRefundRes;
-import com.yonge.cooleshow.sdk.res.OrderPayRes;
-import com.yonge.cooleshow.service.PaymentService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * Description
- *
- * @author liujunchi
- * @date 2022-04-21
- */
-@Service("adapayPaymentService")
-public class AdapayPaymentServiceImpl implements PaymentService {
-
-    @Autowired
-    private PaymentSdk paymentSdk;
-
-    @Override
-    public OrderPayRes orderPay(OrderPayReq payReq) {
-        PaymentReq paymentReq = new PaymentReq();
-        paymentReq.setOrder_no(payReq.getOrderNo());
-        paymentReq.setPay_channel(payReq.getPayChannel().getCode());
-        paymentReq.setPay_amt(payReq.getOrderPrice().setScale(2, RoundingMode.HALF_UP).toString());
-        paymentReq.setGoods_title(payReq.getGoodTitle());
-        paymentReq.setGoods_desc(payReq.getGoodDesc());
-
-        DeviceInfo deviceInfo = new DeviceInfo();
-        deviceInfo.setDevice_ip(payReq.getIpAddress());
-
-        paymentReq.setDevice_info(deviceInfo);
-        //异步通知地址
-        paymentReq.setNotify_url(HuifuConfiguration.getHuifuProperties().getNotifyUrl());
-
-        if (PayChannelEnum.alipay_lite.equals(payReq.getPayChannel())) {
-            Map<String, Object> expend = new HashMap<>();
-            expend.put("buyer_id", payReq.getBuyerId());
-            paymentReq.setExpend(expend);
-        } else if (PayChannelEnum.wx_lite.equals(payReq.getPayChannel())) {
-            Map<String, Object> expend = new HashMap<>();
-            expend.put("open_id", payReq.getOpenId());
-            paymentReq.setExpend(expend);
-        }
-        //付款请求
-        HttpResponseResult<Map<String, Object>> responseResult = paymentSdk.executePayment(paymentReq);
-        OrderPayRes orderPayRes = new OrderPayRes();
-        orderPayRes.setOrderNo(payReq.getOrderNo());
-        orderPayRes.setPayChannel(payReq.getPayChannel().getCode());
-
-        if (responseResult.getStatus()) {
-            Map<String, Object> res = responseResult.getData();
-            orderPayRes.setTransNo(res.get("id").toString());
-            orderPayRes.setPay_amt(
-                    new BigDecimal(res.get("pay_amt").toString()).setScale(2, RoundingMode.HALF_UP).toString()
-            );
-            String pay_info = ((JSONObject) res.get("expend")).getString("pay_info");
-            orderPayRes.setPay_info(pay_info);
-            orderPayRes.setPayStatus(PayStatusEnum.pending);
-            return orderPayRes;
-        } else {
-            //入订单付款表,同时修改订单状态
-            orderPayRes.setPayStatus(PayStatusEnum.failed);
-            orderPayRes.setStatus(false);
-            orderPayRes.setMessage(responseResult.getMsg());
-            return orderPayRes;
-        }
-    }
-
-    @Override
-    public OrderPayRes orderContinue(OrderPayReq payReq) {
-        OrderPayRes orderPayRes = new OrderPayRes();
-        orderPayRes.setPay_info(payReq.getPayInfo());
-        orderPayRes.setPayChannel(payReq.getPayChannel().getCode());
-        orderPayRes.setPay_amt(payReq.getOrderPrice().setScale(2, RoundingMode.HALF_UP).toString());
-        return orderPayRes;
-    }
-
-    @Override
-    public OrderRefundRes orderRefund(OrderRefundReq orderRefundReq) {
-        RefundReq refundReq = new RefundReq();
-        refundReq.setRefund_order_no(orderRefundReq.getTransNo());
-        refundReq.setRefund_amt(orderRefundReq.getRefundAmount());
-        refundReq.setId(orderRefundReq.getTransNo());
-        refundReq.setReason(orderRefundReq.getReason());
-        DeviceInfo deviceInfo = new DeviceInfo();
-        deviceInfo.setDevice_ip(orderRefundReq.getIpAddress());
-
-        refundReq.setDevice_info(deviceInfo);
-
-        //异步通知地址
-        refundReq.setNotify_url(HuifuConfiguration.getHuifuProperties().getNotifyUrl());
-        //付款请求
-        HttpResponseResult<Map<String, Object>> responseResult = paymentSdk.refundPayment(refundReq);
-
-        OrderRefundRes  orderRefundRes = new OrderRefundRes();
-        if (responseResult.getStatus()) {
-            Map<String, Object> data = responseResult.getData();
-            orderRefundRes.setTransNo(data.get("id").toString());
-            orderRefundRes.setPayTransNo(data.get("payment_id").toString());
-            orderRefundRes.setRefundOrderNo(data.get("refund_order_no").toString());
-            orderRefundRes.setRefundAmount(new BigDecimal(data.get("refund_amt").toString())
-                                                   .setScale(2,RoundingMode.HALF_UP).toString());
-            orderRefundRes.setRefundStatus(PayStatusEnum.pending);
-
-        } else {
-            orderRefundRes.setStatus(false);
-            orderRefundRes.setMessage(responseResult.getMsg());
-        }
-        return orderRefundRes;
-    }
-
-    @Override
-    public OrderCloseRes orderClose(OrderCloseReq closeReq) {
-        HttpResponseResult<Map<String, Object>> mapHttpResponseResult = paymentSdk.closePayment(closeReq.getPaymentId(),
-                                                                                                closeReq.getReason(),
-                                                                                                closeReq.getExpend());
-        OrderCloseRes closeRes = new OrderCloseRes();
-        if (!mapHttpResponseResult.getStatus()) {
-            closeRes.setFailMsg(mapHttpResponseResult.getMsg());
-            closeRes.setStatus(false);
-        }
-        return closeRes;
-    }
-}

+ 0 - 116
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/util/DistributedLock.java

@@ -1,116 +0,0 @@
-package com.yonge.cooleshow.util;
-
-import org.redisson.api.RLock;
-import org.redisson.api.RedissonClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Objects;
-import java.util.concurrent.*;
-
-/**
- * 分布式竞争锁
- *
- * @author hgw
- */
-public class DistributedLock {
-    private final static Logger log = LoggerFactory.getLogger(DistributedLock.class);
-
-    private final RedissonClient redissonClient;
-
-    private static final long DEFAULT_TIMEOUT = 60L;// key过期时间默认1分钟后
-
-    private static final TimeUnit DEFAULT_TIME_UNIT = TimeUnit.SECONDS;//默认过期时间单位-秒钟
-
-    private DistributedLock(RedissonClient redissonClient) {
-        this.redissonClient = redissonClient;
-    }
-
-    public static DistributedLock of(RedissonClient redissonClient) {
-        return new DistributedLock(redissonClient);
-    }
-
-    /**
-     * 分布式锁-默认锁60秒
-     *
-     * @param lockName lockKey
-     * @param runnable 任务
-     * @return true 锁成功  false 锁失败
-     */
-    public boolean runIfLockCanGet(final String lockName, Runnable runnable) {
-        return runIfLockCanGet(lockName, runnable, DEFAULT_TIMEOUT, DEFAULT_TIME_UNIT);
-    }
-
-    /**
-     * 分布式锁
-     *
-     * @param lockName lockKey
-     * @param runnable 任务
-     * @param timeout  超时时间
-     * @param unit     超时时间单位
-     * @return true 锁成功  false 锁失败
-     */
-    public boolean runIfLockCanGet(final String lockName, Runnable runnable, final long timeout, TimeUnit unit) {
-        RLock lock = redissonClient.getLock(lockName);
-        if (Objects.isNull(lock)) {
-            log.info("runIfLockCanGet lock is null lockName : {}", lockName);
-            return false;
-        }
-        try {
-            if (lock.tryLock(0, timeout, unit)) {
-                if (Objects.nonNull(runnable)) {
-                    runnable.run();
-                }
-                return true;
-            } else {
-                return false;
-            }
-        } catch (Exception e) {
-            log.error("runIfLockCanGet error lockName : {}", lockName, e);
-            throw new RuntimeException("runIfLockCanGet error lockName :" + lockName, e);
-        } finally {
-            unlock(lock);
-        }
-    }
-
-    /**
-     * 分布式锁-异步
-     *
-     * @param lockName lockKey
-     * @param callable 任务
-     * @param timeout  超时时间
-     * @param unit     超时时间单位
-     * @return Future 异步任务
-     */
-    public <T> Future<T> callIfLockCanGet(final String lockName, Callable<T> callable, final long timeout, TimeUnit unit) {
-        RLock lock = redissonClient.getLock(lockName);
-        if (Objects.isNull(lock)) {
-            log.info("callIfLockCanGet lock is null lockName : {}", lockName);
-            return null;
-        }
-        ExecutorService executor = Executors.newCachedThreadPool();
-        try {
-            if (lock.tryLock(0, timeout, unit)) {
-                return executor.submit(callable);
-            } else {
-                return null;
-            }
-        } catch (Exception e) {
-            log.error("callIfLockCanGet error lockKey {}", lockName);
-            throw new RuntimeException("任务执行异常");
-        } finally {
-            executor.shutdown();
-            unlock(lock);
-        }
-    }
-
-    /**
-     * 解锁
-     */
-    public void unlock(RLock lock) {
-        if (lock.getHoldCount() != 0) {
-            lock.unlock();
-        }
-    }
-
-}

+ 9 - 4
cooleshow-mall/mall-portal/pom.xml

@@ -32,10 +32,6 @@
             <artifactId>mall-mbg</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.yonge.cooleshow</groupId>
-            <artifactId>mall-pay</artifactId>
-        </dependency>
-        <dependency>
             <groupId>com.yonge.toolset</groupId>
             <artifactId>audit-log</artifactId>
         </dependency>
@@ -46,6 +42,10 @@
         </dependency>
 <!--        <dependency>-->
 <!--            <groupId>com.yonge.cooleshow</groupId>-->
+<!--            <artifactId>mall-pay</artifactId>-->
+<!--        </dependency>-->
+<!--        <dependency>-->
+<!--            <groupId>com.yonge.cooleshow</groupId>-->
 <!--            <artifactId>cooleshow-common</artifactId>-->
 <!--        </dependency>-->
         <!--mongodb依赖配置-->
@@ -79,6 +79,11 @@
             <artifactId>toolset-feign</artifactId>
             <version>1.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.yonge.toolset</groupId>
+            <artifactId>toolset-payment</artifactId>
+            <version>${project.toolset.version}</version>
+        </dependency>
     </dependencies>
 
     <build>

+ 2 - 2
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/MallPortalApplication.java

@@ -9,8 +9,8 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.context.annotation.ComponentScan;
 
 @SpringBootApplication
-@MapperScan({"com.yonge.cooleshow.mbg.mapper", "com.yonge.cooleshow.portal.dao"})
-@ComponentScan(basePackages = {"com.yonge.cooleshow.portal","com.yonge.cooleshow.mbg", "com.yonge.cooleshow.mall.common", "com.yonge.cooleshow.common","com.yonge.toolset","com.yonge.cooleshow"})
+@MapperScan({ "com.yonge.cooleshow.portal.dao", "com.yonge.toolset.payment.core.dao", "com.yonge.cooleshow.mbg.mapper"})
+@ComponentScan(basePackages = {"com.yonge.cooleshow.portal","com.yonge.cooleshow.mbg", "com.yonge.cooleshow.mall.common", "com.yonge.cooleshow.common","com.yonge.toolset.payment","com.yonge.toolset.log"})
 @EnableSwagger2Doc
 @EnableDiscoveryClient
 @EnableFeignClients("com.yonge.cooleshow")

+ 121 - 65
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/PaymentController.java

@@ -1,18 +1,31 @@
 package com.yonge.cooleshow.portal.controller;
 
-import com.alibaba.fastjson.JSONObject;
-import com.huifu.adapay.core.AdapayCore;
-import com.huifu.adapay.core.util.AdapaySign;
+import com.github.binarywang.wxpay.bean.notify.SignatureHeader;
+import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyV3Result;
+import com.github.binarywang.wxpay.service.WxPayService;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.enums.OrdeerCacherEnmu;
+import com.yonge.cooleshow.mall.common.enums.OrderCacheEnum;
+import com.yonge.cooleshow.mbg.model.UserOrderPayment;
+import com.yonge.cooleshow.portal.dto.OrderPayReq;
+import com.yonge.cooleshow.portal.dto.OrderPayRes;
+import com.yonge.cooleshow.portal.service.OmsPortalOrderReturnApplyService;
 import com.yonge.cooleshow.portal.service.OmsPortalOrderService;
-import com.yonge.cooleshow.sdk.adapay.PaymentSdk;
-import com.yonge.cooleshow.sdk.req.OrderPayReq;
-import com.yonge.cooleshow.sdk.res.OrderPayRes;
+import com.yonge.cooleshow.portal.service.UserOrderPaymentService;
 import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.base.result.BaseResult;
+import com.yonge.toolset.payment.base.enums.MethodNameEnum;
+import com.yonge.toolset.payment.base.enums.OpenEnum;
+import com.yonge.toolset.payment.base.enums.PayChannelEnum;
+import com.yonge.toolset.payment.base.model.OpenAuth;
+import com.yonge.toolset.payment.base.model.Payment;
+import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
+import com.yonge.toolset.payment.core.props.PaymentProperties;
+import com.yonge.toolset.payment.core.service.PaymentClient;
+import com.yonge.toolset.payment.core.service.SysConfigPaymentService;
+import com.yonge.toolset.payment.original.wx.constant.WxpayConstant;
 import com.yonge.toolset.utils.web.WebUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -38,68 +51,29 @@ import java.util.concurrent.TimeUnit;
 @Api(value = "付款接口", tags = "付款接口")
 public class PaymentController extends BaseController {
     private final static Logger log = LoggerFactory.getLogger(PaymentController.class);
+
     @Autowired
-    private PaymentSdk paymentSdk;
+    private SysUserFeignService sysUserFeignService;
     @Autowired
-    private OmsPortalOrderService portalOrderService;
+    private PaymentClient paymentClient;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private PaymentProperties paymentProperties;
     @Autowired
-    private RedissonClient redissonClient;
+    private SysConfigPaymentService configPaymentService;
+    @Autowired
+    private WxPayService wxPayService;
 
-    @ApiOperation(value = "查询付款单")
-    @GetMapping("/queryPayment")
-    public HttpResponseResult<Map<String, Object>> queryPayment(String paymentId) throws Exception {
-        return HttpResponseResult.succeed(paymentSdk.queryPayment(paymentId));
-    }
+    @Autowired
+    private OmsPortalOrderService orderService;
 
-    @ApiOperation(value = "微信支付获取openid")
-    @GetMapping("/getOpenId")
-    public HttpResponseResult<Map<String, String>> getOpenId(String js_code) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        HttpResponseResult<Map<String, String>> responseResult = paymentSdk.getOpenId(js_code);
-        if (responseResult.getStatus()) {
-            Map<String, String> data = responseResult.getData();
-            //绑定到用户表
-            user.setWxOpenid(data.get("openid"));
-            log.info("绑定用户openid,param is {}", JSONObject.toJSONString(user));
-            sysUserFeignService.bindOpenId(user);
-        }
-        return responseResult;
-    }
+    @Autowired
+    private UserOrderPaymentService userOrderPaymentService;
 
-    /***
-     * 汇付回调
-     * 问题:1、成功失败需要回执什么信息 2、回调url地址是否需要加入白名单
-     * @author liweifan
-     * @param: request
-     * @updateTime 2022/3/11 18:35
-     */
-    @PostMapping("/callback")
-    public void callback(HttpServletRequest request) {
-        try {
-            //验签传参data
-            String data = request.getParameter("data");
-            //验签传参sign
-            String sign = request.getParameter("sign");
-            //验签传参publicKey
-            String publicKey = AdapayCore.PUBLIC_KEY;
-            //验签
-            boolean checkSign = AdapaySign.verifySign(data, sign, publicKey);
-            log.info("汇付回调,res is {}", data);
-            if (checkSign) {
-                //验签成功逻辑
-                log.info("验签成功");
-                String type = request.getParameter("type");
-                portalOrderService.orderCallback(data,type);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
+    @Autowired
+    private OmsPortalOrderReturnApplyService portalOrderReturnApplyService;
+
+    @Autowired
+    private RedissonClient redissonClient;
 
     @ApiOperation(value = "订单付款")
     @PostMapping("/orderPay")
@@ -111,14 +85,14 @@ public class PaymentController extends BaseController {
         payReq.setUserId(user.getId());
         payReq.setIpAddress(WebUtil.getRemoteIp(request));
 
-        RLock lock = redissonClient.getLock(OrdeerCacherEnmu.LOCK_PAY_ORDER.getRedisKey(user.getId()));
+        RLock lock = redissonClient.getLock(OrderCacheEnum.LOCK_PAY_ORDER.getRedisKey(user.getId()));
         try {
             boolean b = lock.tryLock(60, TimeUnit.SECONDS);
             if (b) {
-                OrderPayRes orderPayRes = portalOrderService.orderPay(payReq);
+                OrderPayRes orderPayRes = orderService.orderPay(payReq);
                 if (orderPayRes.isStatus()) {
                     return succeed(orderPayRes);
-                }  else {
+                } else {
                     return failed(orderPayRes.getMessage());
                 }
             }
@@ -132,4 +106,86 @@ public class PaymentController extends BaseController {
             lock.unlock();
         }
     }
+
+    @ApiOperation(value = "查询付款单")
+    @GetMapping("/queryPayment")
+    public HttpResponseResult<Payment> queryPayment(String paymentNo) throws Exception {
+        UserOrderPayment userOrderPayment = userOrderPaymentService.getByTranNo(paymentNo);
+        if (null == userOrderPayment) {
+            return HttpResponseResult.succeed();
+        }
+        Payment param = new Payment(OpenEnum.valueOf(userOrderPayment.getOpenType()), PayChannelEnum.valueOf(userOrderPayment.getPayChannel()));
+        param.setId(userOrderPayment.getTransNo());
+        param.setPaymentNo(userOrderPayment.getTransNo());
+        BaseResult<Payment> paymentBaseResult = paymentClient.queryPayment(param);
+        return HttpResponseResult.status(paymentBaseResult);
+    }
+
+    @ApiOperation(value = "通过用户给的授权码获取三方支付授权信息")
+    @GetMapping("/getOpenId")
+    public HttpResponseResult<Map<String, Object>> getOpenId(OpenAuth openAuth) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        OpenEnum openType = OpenEnum.valueOf(paymentProperties.getOpenType());
+        openAuth.setOpenType(openType);
+        BaseResult<Map<String, Object>> res = paymentClient.getOpenAuthMsg(openAuth);
+        return HttpResponseResult.status(res);
+    }
+
+    /***
+     * 支付回调
+     * @author liweifan
+     * @param: request
+     * @updateTime 2022/3/11 18:35
+     */
+    @PostMapping("/callback/{openType}/{payChannel}/{payMethod}")
+    public Object callback(
+            @PathVariable("openType") String openType,
+            @PathVariable("payChannel") String payChannel,
+            @PathVariable("payMethod") String payMethod,
+            HttpServletRequest request
+    ) {
+        BaseResult<PaymentCallBack> res = paymentClient.analysisNotice(
+                OpenEnum.valueOf(openType), PayChannelEnum.valueOf(payChannel), MethodNameEnum.valueOf(payMethod), request);
+        if(res.getStatus()){
+            PaymentCallBack data = res.getData();
+
+            if(MethodNameEnum.executePayment.equals(data.getMethodName())){
+                //支付交易
+                orderService.executePaymentCallBack(data);
+            }else if(MethodNameEnum.closePayment.equals(data.getMethodName())){
+                //关闭订单
+                orderService.closePaymentCallBack(data);
+            }else if(MethodNameEnum.refundPayment.equals(data.getMethodName())){
+                //退款
+                portalOrderReturnApplyService.refundPaymentCallBack(data);
+            }
+        }
+        return res.getData().getResMsg();
+    }
+
+
+
+    // private Object wxAppCallbackHandle(String payMethod, HttpServletRequest request) throws Exception {
+    //     String merchantId = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_MERCHANT_ID).getParamValue();
+    //     String apiV3Key = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_API_V3_KEY).getParamValue();
+    //
+    //     //支付回调
+    //     if ("executePayment".equals(payMethod)) {
+    //         SignatureHeader header = new SignatureHeader();
+    //         header.setTimeStamp(request.getHeader("Wechatpay-Timestamp"));
+    //         header.setNonce(request.getHeader("Wechatpay-Nonce"));
+    //         header.setSerial(request.getHeader("Wechatpay-Serial"));
+    //         header.setSignature(request.getHeader("Wechatpay-Signature"));
+    //
+    //         String params = WebUtil.getBodyData(request);
+    //
+    //         WxPayOrderNotifyV3Result wxPayOrderNotifyV3Result = wxPayService.parseOrderNotifyV3Result(params, header);
+    //
+    //     }
+    //     return null;
+    // }
+
 }

+ 17 - 66
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/req/OrderPayReq.java → cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OrderPayReq.java

@@ -1,13 +1,11 @@
-package com.yonge.cooleshow.sdk.req;
+package com.yonge.cooleshow.portal.dto;
 
-import com.yonge.cooleshow.enums.OrderStatusEnum;
-import com.yonge.cooleshow.enums.PayChannelEnum;
+import com.yonge.toolset.payment.base.enums.PayChannelEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
-import java.math.BigDecimal;
 
 /**
  * 下单支付请求
@@ -21,73 +19,18 @@ public class OrderPayReq {
     @ApiModelProperty(value = "订单号 ", required = true)
     private String orderNo;
     @NotNull(message = "支付渠道不能为空")
-    @ApiModelProperty(value = "支付渠道:  alipay 支付宝APP支付 alipay_lite 支付宝小程序支付  wx_lite 微信小程序支付 ", required = true)
+    @ApiModelProperty(value = "支付渠道:  alipay 支付宝扫码 ali_app 支付宝APP  wx_app 微信APP wx_lite 微信小程序支付", required = true)
     private PayChannelEnum payChannel;
-    @ApiModelProperty(value = "微信用户openId(微信支付必传)")
+    @ApiModelProperty(value = "微信用户openId(微信支付必传)",hidden = true)
     private String openId;
-    @ApiModelProperty(value = "买家的支付宝用户 id(支付宝小程序支付必传)")
+    @ApiModelProperty(value = "买家的支付宝用户 id(支付宝小程序支付必传)",hidden = true)
     private String buyerId;
     @ApiModelProperty(value = "用户说明 ")
     private String reason;
 
-
-    @ApiModelProperty(value = "用户id ")
     private Long userId;
-    @ApiModelProperty(value = "用户端公网ip ")
     private String ipAddress;
 
-    @ApiModelProperty(value = "订单金额",hidden = true)
-    private BigDecimal orderPrice;
-
-    @ApiModelProperty(value = "商品标题",hidden = true)
-    private String goodTitle;
-
-    @ApiModelProperty(value = "商品描述",hidden = true)
-    private String goodDesc;
-
-    @ApiModelProperty(value = "拉起支付信息",hidden = true)
-    private String payInfo;
-
-    public String getBuyerId() {
-        return buyerId;
-    }
-
-    public void setBuyerId(String buyerId) {
-        this.buyerId = buyerId;
-    }
-
-    public String getReason() {
-        return reason;
-    }
-
-    public void setReason(String reason) {
-        this.reason = reason;
-    }
-
-    public BigDecimal getOrderPrice() {
-        return orderPrice;
-    }
-
-    public void setOrderPrice(BigDecimal orderPrice) {
-        this.orderPrice = orderPrice;
-    }
-
-    public String getGoodTitle() {
-        return goodTitle;
-    }
-
-    public void setGoodTitle(String goodTitle) {
-        this.goodTitle = goodTitle;
-    }
-
-    public String getGoodDesc() {
-        return goodDesc;
-    }
-
-    public void setGoodDesc(String goodDesc) {
-        this.goodDesc = goodDesc;
-    }
-
     public String getOrderNo() {
         return orderNo;
     }
@@ -128,11 +71,19 @@ public class OrderPayReq {
         this.openId = openId;
     }
 
-    public String getPayInfo() {
-        return payInfo;
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
     }
 
-    public void setPayInfo(String payInfo) {
-        this.payInfo = payInfo;
+    public String getBuyerId() {
+        return buyerId;
+    }
+
+    public void setBuyerId(String buyerId) {
+        this.buyerId = buyerId;
     }
 }

+ 1 - 13
cooleshow-mall/mall-pay/src/main/java/com/yonge/cooleshow/sdk/res/OrderPayRes.java → cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OrderPayRes.java

@@ -1,7 +1,6 @@
-package com.yonge.cooleshow.sdk.res;
+package com.yonge.cooleshow.portal.dto;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.yonge.cooleshow.enums.PayStatusEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -24,9 +23,6 @@ public class OrderPayRes {
     @JsonIgnore
     private String message;
 
-    @ApiModelProperty(value = "支付状态",required = true)
-    @JsonIgnore
-    private PayStatusEnum payStatus;
 
 
     @ApiModelProperty(value = "订单编号",required = true)
@@ -72,14 +68,6 @@ public class OrderPayRes {
         this.message = message;
     }
 
-    public PayStatusEnum getPayStatus() {
-        return payStatus;
-    }
-
-    public void setPayStatus(PayStatusEnum payStatus) {
-        this.payStatus = payStatus;
-    }
-
     public String getOrderNo() {
         return orderNo;
     }

+ 3 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderReturnApplyService.java

@@ -6,6 +6,7 @@ import com.yonge.cooleshow.portal.dto.OmsOrderReturnApplyResult;
 import com.yonge.cooleshow.portal.dto.OmsOrderReturnApplyVo;
 import com.yonge.cooleshow.portal.dto.OmsReturnApplyDto;
 import com.yonge.cooleshow.portal.dto.OmsReturnApplyQueryParam;
+import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
 
 import java.util.List;
 
@@ -31,4 +32,6 @@ public interface OmsPortalOrderReturnApplyService {
 
     /** 设置退货单号 */
     void setDeliverySn(OmsReturnApplyDto applyDto);
+
+    void refundPaymentCallBack(PaymentCallBack data);
 }

+ 20 - 10
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -5,8 +5,9 @@ import com.yonge.cooleshow.mbg.model.OmsOrder;
 import com.yonge.cooleshow.portal.domain.ConfirmOrderResult;
 import com.yonge.cooleshow.portal.domain.OmsOrderDetail;
 import com.yonge.cooleshow.portal.domain.OrderParam;
-import com.yonge.cooleshow.sdk.req.OrderPayReq;
-import com.yonge.cooleshow.sdk.res.OrderPayRes;
+import com.yonge.cooleshow.portal.dto.OrderPayReq;
+import com.yonge.cooleshow.portal.dto.OrderPayRes;
+import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
@@ -78,19 +79,11 @@ public interface OmsPortalOrderService {
     /**
      * 订单拉起支付
      *
-     */
-    @Transactional
-    void orderCallback(String data, String type);
-
-    /**
-     * 订单拉起支付
-     *
      * @param payReq 支付信息
      * @return
      */
     @Transactional
     OrderPayRes orderPay(OrderPayReq payReq);
-
     /**
      * 获取订单信息
      *
@@ -98,4 +91,21 @@ public interface OmsPortalOrderService {
      * @return
      */
     OmsOrder getOrderById(Long orderId);
+
+    /**
+     * 支付回调
+     *
+     * @param data
+     */
+    @Transactional
+    void executePaymentCallBack(PaymentCallBack data);
+
+    /**
+     * 关闭订单
+     *
+     * @param data
+     */
+    void closePaymentCallBack(PaymentCallBack data);
+
+
 }

+ 3 - 3
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/UserOrderPaymentService.java

@@ -1,8 +1,8 @@
 package com.yonge.cooleshow.portal.service;
 
-import com.yonge.cooleshow.enums.PayChannelEnum;
-import com.yonge.cooleshow.enums.PayStatusEnum;
 import com.yonge.cooleshow.mbg.model.UserOrderPayment;
+import com.yonge.toolset.payment.base.enums.PayChannelEnum;
+import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
 
 import java.util.List;
 
@@ -31,7 +31,7 @@ public interface UserOrderPaymentService {
 
     void saveOrUpdate(UserOrderPayment userOrderPayment);
 
-    UserOrderPayment getByOrderNo(String orderSn, PayChannelEnum payChannel, PayStatusEnum pending);
+    UserOrderPayment getByOrderNo(String orderSn, PayChannelEnum payChannel, TradeStatusEnum pending);
 
     /**
      * 根据订单查询 订单支付信息

+ 64 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderReturnApplyServiceImpl.java

@@ -6,6 +6,12 @@ import com.yonge.cooleshow.mbg.mapper.OmsOrderReturnApplyMapper;
 import com.yonge.cooleshow.mbg.mapper.PmsProductMapper;
 import com.yonge.cooleshow.mbg.mapper.PmsSkuStockMapper;
 import com.yonge.cooleshow.mbg.model.*;
+
+import com.yonge.cooleshow.mbg.mapper.UserOrderRefundMapper;
+import com.yonge.cooleshow.mbg.model.OmsOrderReturnApply;
+import com.yonge.cooleshow.mbg.model.OmsOrderReturnApplyExample;
+import com.yonge.cooleshow.mbg.model.UserOrderRefund;
+
 import com.yonge.cooleshow.portal.dao.OmsOrderReturnApplyDao;
 import com.yonge.cooleshow.portal.domain.OmsOrderReturnApplyParam;
 import com.yonge.cooleshow.portal.dto.OmsOrderReturnApplyResult;
@@ -15,10 +21,17 @@ import com.yonge.cooleshow.portal.dto.OmsReturnApplyQueryParam;
 import com.yonge.cooleshow.portal.service.OmsPortalOrderReturnApplyService;
 import com.yonge.cooleshow.portal.service.UmsMemberService;
 import com.yonge.toolset.base.exception.BizException;
+
+import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
+import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -29,6 +42,9 @@ import java.util.List;
  */
 @Service
 public class OmsPortalOrderReturnApplyServiceImpl implements OmsPortalOrderReturnApplyService {
+
+    private static final Logger log = LoggerFactory.getLogger(OmsPortalOrderReturnApplyService.class);
+
     @Autowired
     private OmsOrderReturnApplyMapper returnApplyMapper;
 
@@ -47,6 +63,10 @@ public class OmsPortalOrderReturnApplyServiceImpl implements OmsPortalOrderRetur
     @Autowired
     private PmsSkuStockMapper skuStockMapper;
 
+    @Autowired
+    private UserOrderRefundMapper userOrderRefundMapper;
+
+
     @Override
     public int create(OmsOrderReturnApplyParam returnApply) {
         OmsOrderReturnApply realApply = new OmsOrderReturnApply();
@@ -105,4 +125,48 @@ public class OmsPortalOrderReturnApplyServiceImpl implements OmsPortalOrderRetur
         omsOrderReturnApply.setDeliverySn(applyDto.getDeliverySn());
         returnApplyMapper.updateByPrimaryKeySelective(omsOrderReturnApply);
     }
+
+    @Override
+    public void refundPaymentCallBack(PaymentCallBack data) {
+        if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//退款成功
+            paymentRefundSucceededHandle(data);
+        } else if (TradeStatusEnum.failed.equals(data.getStatus())) {//退款失败
+            paymentRefundFailedHandle(data, data.getErrMsg());
+        }
+    }
+
+    /**
+     * 退款失败
+     */
+    private void paymentRefundFailedHandle(PaymentCallBack data, String errMsg) {
+        if (data == null) {
+            return;
+        }
+        UserOrderRefund userOrderRefund = userOrderRefundMapper.selectByTransNo(
+                data.getRefundPaymentCallBack().getTransNo());
+        userOrderRefund.setArrivalTime(new Date());
+        userOrderRefund.setStatus(TradeStatusEnum.failed.getCode());
+        userOrderRefund.setPayFailMsg(errMsg);
+
+        userOrderRefundMapper.updateByPrimaryKeySelective(userOrderRefund);
+    }
+
+    /**
+     * 退款成功
+     */
+    private void paymentRefundSucceededHandle(PaymentCallBack data) {
+        if (data == null) {
+            return;
+        }
+        UserOrderRefund userOrderRefund = userOrderRefundMapper.selectByTransNo(
+                data.getRefundPaymentCallBack().getTransNo());
+        userOrderRefund.setArrivalTime(new Date());
+        userOrderRefund.setStatus(TradeStatusEnum.succeeded.getCode());
+
+        userOrderRefund.setFeeAmt(new BigDecimal(data.getRefundPaymentCallBack().getFeeAmt()));
+        userOrderRefund.setRefundAmt(new BigDecimal(data.getRefundPaymentCallBack().getRefundAmt()));
+
+        userOrderRefundMapper.updateByPrimaryKeySelective(userOrderRefund);
+    }
 }
+

+ 167 - 93
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -2,10 +2,13 @@ package com.yonge.cooleshow.portal.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
+import com.yonge.cooleshow.portal.dto.OrderPayReq;
+import com.yonge.cooleshow.portal.dto.OrderPayRes;
 import com.yonge.toolset.base.exception.BizException;
-import com.yonge.cooleshow.enums.PayStatusEnum;
+
 import com.yonge.cooleshow.mall.common.api.CommonPage;
 import com.yonge.cooleshow.mall.common.exception.Asserts;
 import com.yonge.cooleshow.mall.common.service.RedisService;
@@ -17,11 +20,20 @@ import com.yonge.cooleshow.portal.dao.PortalOrderItemDao;
 import com.yonge.cooleshow.portal.dao.SmsCouponHistoryDao;
 import com.yonge.cooleshow.portal.domain.*;
 import com.yonge.cooleshow.portal.service.*;
-import com.yonge.cooleshow.sdk.adapay.PaymentSdk;
-import com.yonge.cooleshow.sdk.req.OrderPayReq;
-import com.yonge.cooleshow.sdk.res.OrderPayRes;
-import com.yonge.cooleshow.service.PaymentService;
 import com.yonge.toolset.utils.string.StringUtil;
+
+import com.yonge.toolset.base.result.BaseResult;
+import com.yonge.toolset.payment.base.enums.OpenEnum;
+import com.yonge.toolset.payment.base.enums.PayChannelEnum;
+import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
+import com.yonge.toolset.payment.base.model.DeviceInfo;
+import com.yonge.toolset.payment.base.model.DivMember;
+import com.yonge.toolset.payment.base.model.OrderDetil;
+import com.yonge.toolset.payment.base.model.Payment;
+import com.yonge.toolset.payment.base.model.callback.PaymentCallBack;
+import com.yonge.toolset.payment.core.props.PaymentProperties;
+import com.yonge.toolset.payment.core.service.PaymentClient;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -79,11 +91,11 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     @Autowired
     private UserOrderPaymentService userOrderPaymentService;
 
-    @Autowired
-    private PaymentService adapayPaymentService;
+    @Autowired(required = true)
+    private PaymentClient paymentClient;
 
     @Autowired
-    private PaymentSdk paymentSdk;
+    private PaymentProperties paymentProperties;
 
     @Override
     public ConfirmOrderResult generateConfirmOrder(List<Long> cartIds) {
@@ -468,56 +480,95 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             orderPayRes.setMessage("订单已付款或已关闭");
             return orderPayRes;
         }
-        payReq.setOrderPrice(detail.getPayAmount());
         UserOrderPayment userOrderPayment = userOrderPaymentService
-                .getByOrderNo(detail.getOrderSn(), payReq.getPayChannel(), PayStatusEnum.pending);
+                .getByOrderNo(detail.getOrderSn(), payReq.getPayChannel(), TradeStatusEnum.pending);
 
-        if (userOrderPayment == null) {
-            // 支付订单号
-            payReq.setOrderNo(generateOrderSn(detail));
-        }else {
+        if (userOrderPayment != null) {
             // 拉起原有的支付
-            payReq.setPayInfo(userOrderPayment.getPayInfo());
-            return adapayPaymentService.orderContinue(payReq);
+            orderPayRes = new OrderPayRes();
+            orderPayRes.setPay_info(userOrderPayment.getPayInfo());
+            orderPayRes.setPayChannel(userOrderPayment.getPayChannel());
+            orderPayRes.setPay_amt(userOrderPayment.getPayAmt().setScale(2, RoundingMode.HALF_UP).toString());
+            return orderPayRes;
+        }
+
+        //构建汇付统一下单请求
+        OpenEnum openType = OpenEnum.valueOf(paymentProperties.getOpenType());
+        Payment payment = new Payment(openType, payReq.getPayChannel());
+        payment.setPaymentNo(generateOrderSn(detail));
+        payment.setOrderNo(payReq.getOrderNo());
+        payment.setOrderTitle("酷乐秀商城订单编号-" + detail.getOrderSn());
+        payment.setOrderDesc("酷乐秀商城订单编号-" + detail.getOrderSn());
+
+        //封装订单详情
+        List<OrderDetil> orderDetils = new ArrayList<>();
+        for (OmsOrderItem orderDetailVo : detail.getOrderItemList()) {
+            orderDetils.add(new OrderDetil(orderDetailVo.getId().toString(), orderDetailVo.getProductName(),
+                       orderDetailVo.getProductQuantity(), orderDetailVo.getRealAmount().toString()));
+        }
+        payment.setOrderDetils(orderDetils);
+        payment.setPayAmt(detail.getPayAmount().setScale(2, RoundingMode.HALF_UP).toString());
+        payment.setDescription(payReq.getReason());
+
+        if (OpenEnum.ADAPAY.equals(openType)) {
+            //创建分账对象
+            DivMember div_member = new DivMember();
+            div_member.setMember_id("0");
+            div_member.setAmount(detail.getPayAmount().setScale(2, RoundingMode.HALF_UP).toString());
+            div_member.setFee_flag("Y");
+            List<DivMember> div_members = Arrays.asList(div_member);
+            payment.setDivMembers(div_members);
+
+            //前端设备信息
+            DeviceInfo deviceInfo = new DeviceInfo();
+            deviceInfo.setDevice_ip(payReq.getIpAddress());
+            payment.setDeviceInfo(deviceInfo);
+
+            if (PayChannelEnum.wx_lite.equals(payReq.getPayChannel())) {
+                Map<String, Object> expend = new HashMap<>();
+                expend.put("open_id", payReq.getOpenId());
+                payment.setExpend(expend);
+            }
         }
-        payReq.setGoodTitle("酷乐秀商城订单编号-" + detail.getOrderSn());
-        payReq.setGoodDesc("酷乐秀商城订单编号-" + detail.getOrderSn());
         // 支付中的返回拉起信息
-        orderPayRes = adapayPaymentService.orderPay(payReq);
-        if (!orderPayRes.isStatus()) {
+        BaseResult<Payment> executePayment = paymentClient.executePayment(payment);
+        if (!executePayment.getStatus()) {
             // 异常将取消订单
-            cancelOrder(detail.getId(),orderPayRes.getMessage());
-            throw new BizException(orderPayRes.getMessage());
+            cancelOrder(detail.getId(),executePayment.getMsg());
+            throw new BizException(executePayment.getMsg());
         }
-        if (!orderPayRes.getPay_amt().equals(detail.getPayAmount().setScale(2, RoundingMode.HALF_UP).toString())) {
+        if (!executePayment.getData().getPayAmt().equals(detail.getPayAmount().setScale(2, RoundingMode.HALF_UP).toString())) {
             cancelOrder(detail.getId(),"订单金额和实际支付金额不符");
             throw new BizException("订单金额和实际支付金额不符");
         }
 
+
+        saveOrderPayment(executePayment.getData(), detail);
+
+        return orderPayRes;
+    }
+
+
+    private void saveOrderPayment(Payment payment, OmsOrderDetail detail) {
+        UserOrderPayment userOrderPayment;
         OmsOrder omsOrder = new OmsOrder();
         omsOrder.setId(detail.getId());
-        if (orderPayRes.getPayStatus().getCode().equals(PayStatusEnum.pending.getCode())) {
-            omsOrder.setStatus(0);
-            orderMapper.updateByPrimaryKeySelective(omsOrder);
-            // 保存订单支付表
-            userOrderPayment = new UserOrderPayment();
-            userOrderPayment.setOrderNo(detail.getOrderSn());
-            userOrderPayment.setAdapayNo(orderPayRes.getOrderNo());
-            userOrderPayment.setPayChannel(orderPayRes.getPayChannel());
-            userOrderPayment.setTransNo(orderPayRes.getTransNo());
-            userOrderPayment.setPayAmt(new BigDecimal(orderPayRes.getPay_amt()));
-            userOrderPayment.setPayInfo(orderPayRes.getPay_info());
-            userOrderPayment.setStatus(PayStatusEnum.pending.getCode());
-            userOrderPayment.setPayFailMsg(orderPayRes.getMessage());
-            userOrderPayment.setCreateTime(new Date());
-            userOrderPayment.setUpdateTime(new Date());
-            userOrderPaymentService.saveOrUpdate(userOrderPayment);
-        }else {
-            // 异常将取消订单
-            cancelOrder(detail.getId(), orderPayRes.getMessage());
-        }
 
-        return orderPayRes;
+        omsOrder.setStatus(0);
+        orderMapper.updateByPrimaryKeySelective(omsOrder);
+        // 保存订单支付表
+        userOrderPayment = new UserOrderPayment();
+        userOrderPayment.setOrderNo(detail.getOrderSn());
+        userOrderPayment.setAdapayNo(payment.getPaymentNo());
+        userOrderPayment.setPayChannel(payment.getPayChannel().getCode());
+        userOrderPayment.setTransNo(payment.getId());
+        userOrderPayment.setPayAmt(new BigDecimal(payment.getPayAmt()));
+        userOrderPayment.setPayInfo(payment.getPayInfo());
+        userOrderPayment.setStatus(TradeStatusEnum.pending.getCode());
+        userOrderPayment.setPayFailMsg("");
+        userOrderPayment.setCreateTime(new Date());
+        userOrderPayment.setUpdateTime(new Date());
+        userOrderPaymentService.saveOrUpdate(userOrderPayment);
     }
 
     @Override
@@ -526,17 +577,20 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
     }
 
     @Override
-    public void orderCallback(String data, String type) {
-        JSONObject hfRes = JSONObject.parseObject(data);
+    public void executePaymentCallBack(PaymentCallBack data) {
+        if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//支付成功
+            paymentSucceededHandle(data);
+        } else if (TradeStatusEnum.failed.equals(data.getStatus())) {//支付失败
+            paymentFailedHandle(data);
+        }
+    }
 
-        if (type.equals("payment.succeeded")) {//支付成功
-            paymentSucceededHandle(hfRes);
-        } else if (type.equals("payment.failed")) {//支付失败
-            paymentFailedHandle(hfRes);
-        } else if (type.equals("payment.close.succeeded")) {//支付关单成功
-            paymentCloseSucceededHandle(hfRes);
-        } else if (type.equals("payment.close.failed")) {//支付关单失败
-            paymentCloseFailedHandle(hfRes);
+    @Override
+    public void closePaymentCallBack(PaymentCallBack data) {
+        if (TradeStatusEnum.succeeded.equals(data.getStatus())) {//关单成功
+            paymentCloseSucceededHandle(data);
+        } else if (TradeStatusEnum.failed.equals(data.getStatus())) {//关单失败
+            paymentCloseFailedHandle(data);
         }
     }
 
@@ -548,17 +602,18 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
      * @param: hfRes
      * @updateTime 2022/4/27 15:09
      */
-    private void paymentSucceededHandle(JSONObject hfRes) {
+    private void paymentSucceededHandle(PaymentCallBack data) {
         //订单完成
-        OmsOrder detail = detail(hfRes.getString("order_no"));
-        if (null == detail) {
-            log.error("汇付支付回调,订单未找到。 req is {}", hfRes.toJSONString());
+        UserOrderPayment userOrderPayment = userOrderPaymentService.getByTranNo(data.getPaymentNo());
+        if (null == userOrderPayment) {
+            log.error("汇付支付回调,订单未找到。 req is {}", JSON.toJSONString(data));
             return;
         }
+        OmsOrderDetail detail = detail(userOrderPayment.getOrderNo());
         if (detail.getStatus() == 0) {
-            orderSuccess(detail, hfRes);
+            orderSuccess(detail, data);
         } else {
-            log.error("汇付支付回调,订单状态异常。 req is {}", hfRes.toJSONString());
+            log.error("汇付支付回调,订单状态异常。 req is {}", detail.getOrderSn());
         }
     }
 
@@ -568,19 +623,24 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
      * @param: hfRes
      * @updateTime 2022/4/27 15:09
      */
-    private void paymentFailedHandle(JSONObject hfRes) {
+    private void paymentFailedHandle(PaymentCallBack data) {
         //订单完成
-        OmsOrder detail = detail(hfRes.getString("order_no"));
+        UserOrderPayment userOrderPayment = userOrderPaymentService.getByTranNo(data.getPaymentNo());
+        if (null == userOrderPayment) {
+            log.error("汇付支付回调,订单未找到。 req is {}", JSON.toJSONString(data));
+            return;
+        }
 
+        OmsOrderDetail detail = detail(userOrderPayment.getOrderNo());
         if (null == detail) {
-            log.error("汇付支付回调,订单未找到。 req is {}", hfRes.toJSONString());
+            log.error("汇付支付回调,订单未找到。 req is {}", JSON.toJSONString(data));
             return;
         }
         if (detail.getStatus() == 0) {
 
-            cancelOrder(detail.getId(), "支付回调失败");
+            cancelOrder(detail.getId(), data.getErrMsg());
         } else {
-            log.error("汇付支付回调,订单状态异常。 req is {}", hfRes.toJSONString());
+            log.error("汇付支付回调,订单状态异常。 req is {}",JSON.toJSONString(data));
         }
     }
 
@@ -590,12 +650,12 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
      * @param: hfRes
      * @updateTime 2022/4/27 15:33
      */
-    private void paymentCloseSucceededHandle(JSONObject hfRes) {
-        UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(hfRes.getString("payment_id"));
+    private void paymentCloseSucceededHandle(PaymentCallBack data) {
+        UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(data.getPaymentNo());
         if (null == orderPayment) {
             return;
         }
-        orderPayment.setStatus(PayStatusEnum.succeeded.getCode());
+        orderPayment.setStatus(TradeStatusEnum.succeeded.getCode());
         orderPayment.setUpdateTime(new Date());
         userOrderPaymentService.saveOrUpdate(orderPayment);
     }
@@ -606,22 +666,19 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
      * @param: hfRes
      * @updateTime 2022/4/27 15:33
      */
-    private void paymentCloseFailedHandle(JSONObject hfRes) {
-        UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(hfRes.getString("payment_id"));
+    private void paymentCloseFailedHandle(PaymentCallBack data) {
+        UserOrderPayment orderPayment = userOrderPaymentService.getByTranNo(data.getPaymentNo());
         if (null == orderPayment) {
             return;
         }
-        orderPayment.setStatus(PayStatusEnum.failed.getCode());
-        orderPayment.setPayFailMsg("支付关单回调失败-" + hfRes.getString("error_msg"));
+        orderPayment.setStatus(TradeStatusEnum.failed.getCode());
+        orderPayment.setPayFailMsg("支付关单回调失败-" + data.getErrMsg());
         orderPayment.setUpdateTime(new Date());
         userOrderPaymentService.saveOrUpdate(orderPayment);
     }
 
     /***
      * 处理支付中订单
-     * @author liweifan
-     * @param: userOrder
-     * @updateTime 2022/4/13 16:51
      */
     @Transactional(rollbackFor = Exception.class)
     void payingOrderHandle(OmsOrder userOrder) {
@@ -630,23 +687,36 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         if (null == orderPayment) {
             cancelOrder(userOrder.getId(), "支付超时");
         }
+        OmsOrderDetail detail = detail(orderPayment.getOrderNo());
         try {
-            Map<String, Object> resMap = paymentSdk.queryPayment(orderPayment.getTransNo());
+            Payment param = new Payment(OpenEnum.valueOf(orderPayment.getOpenType()), PayChannelEnum.valueOf(orderPayment.getPayChannel()));
+            param.setId(orderPayment.getTransNo());
+            param.setPaymentNo(orderPayment.getAdapayNo());
+            BaseResult<Payment> res = paymentClient.queryPayment(param);
+            //支付成功
+            if (res.getStatus() && TradeStatusEnum.succeeded.getCode().equals(res.getData().getStatus())
+                    && (detail.getStatus() == 0 || detail.getStatus() == 1)
+            ) {
+                orderSuccess(detail);
+                return;
+            }
             //支付失败
-            if (PayStatusEnum.failed.getCode().equals(resMap.get("status").toString())) {
-                cancelOrder(userOrder.getId(), "支付失败");
-            }else if (PayStatusEnum.succeeded.getCode().equals(resMap.get("status").toString())) {
-                // 支付成功
-                orderSuccess(userOrder,null);
-            } else {
-                cancelOrder(userOrder.getId(), "支付超时");
+            if (!res.getStatus()) {
+                cancelOrder(userOrder.getId(), res.getMsg());
+                return;
             }
+            cancelOrder(userOrder.getId(), "支付超时");
         } catch (Exception e) {
             e.printStackTrace();
             log.error("轮询处理支付中订单异常,异常参数: {}", JSONObject.toJSONString(userOrder));
         }
     }
 
+
+    void orderSuccess(OmsOrder detail) {
+        orderSuccess(detail,null);
+    }
+
     /**
      * 订单完成
      *
@@ -654,27 +724,31 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
      * @updateTime 2022/4/13 17:17
      */
     @Transactional(rollbackFor = Exception.class)
-    void orderSuccess(OmsOrder detail, JSONObject hfRes) {
+    void orderSuccess(OmsOrder detail, PaymentCallBack data) {
         //更新订单
         UserOrderPayment orderPayment = userOrderPaymentService.getByOrderNoAndStatusPaying(detail.getOrderSn());
+
+        if (data != null) {
+            String pay_amt = data.getExecutePaymentCallBack().getPayAmt();
+            if (!pay_amt.equals(detail.getPayAmount().setScale(2, RoundingMode.HALF_UP).toString())) {
+                orderPayment.setPayFailMsg("订单金额和实际支付金额不符");
+            }
+        }
         if (orderPayment.getPayChannel().equals("alipay")) {
             paySuccess(detail.getId(),1);
         } else if (orderPayment.getPayChannel().equals("wx_lite")) {
             paySuccess(detail.getId(),2);
         }
-        String pay_amt = hfRes.getString("pay_amt");
-        if (!pay_amt.equals(detail.getPayAmount().setScale(2, RoundingMode.HALF_UP).toString())) {
-            orderPayment.setPayFailMsg("订单金额和实际支付金额不符");
-        }
-        orderPayment.setStatus(PayStatusEnum.succeeded.getCode());
+
+        orderPayment.setStatus(TradeStatusEnum.succeeded.getCode());
         orderPayment.setArrivalTime(new Date());
-        if (null != hfRes) {
+        if (null != data) {
             try {
-                orderPayment.setPayAmt(new BigDecimal(pay_amt));
-                orderPayment.setFeeAmt(new BigDecimal(hfRes.getString("fee_amt")));
+                orderPayment.setPayAmt(new BigDecimal(data.getExecutePaymentCallBack().getPayAmt()));
+                orderPayment.setFeeAmt(new BigDecimal(data.getExecutePaymentCallBack().getFeeAmt()));
             } catch (Exception e) {
                 e.printStackTrace();
-                log.error("完成订单,付款单金额格式化失败,参数{}", hfRes.toJSONString());
+                log.error("完成订单,付款单金额格式化失败,参数{}", JSON.toJSONString(data));
             }
         }
         userOrderPaymentService.saveOrUpdate(orderPayment);

+ 20 - 17
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/UserOrderPaymentServiceImpl.java

@@ -1,13 +1,14 @@
 package com.yonge.cooleshow.portal.service.impl;
 
-import com.yonge.cooleshow.enums.PayChannelEnum;
-import com.yonge.cooleshow.enums.PayStatusEnum;
 import com.yonge.cooleshow.mbg.mapper.UserOrderPaymentMapper;
 import com.yonge.cooleshow.mbg.model.UserOrderPayment;
 import com.yonge.cooleshow.portal.service.UserOrderPaymentService;
-import com.yonge.cooleshow.sdk.req.OrderCloseReq;
-import com.yonge.cooleshow.sdk.res.OrderCloseRes;
-import com.yonge.cooleshow.service.PaymentService;
+import com.yonge.toolset.base.result.BaseResult;
+import com.yonge.toolset.payment.base.enums.OpenEnum;
+import com.yonge.toolset.payment.base.enums.PayChannelEnum;
+import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
+import com.yonge.toolset.payment.base.model.ClosePayment;
+import com.yonge.toolset.payment.core.service.PaymentClient;
 import com.yonge.toolset.utils.string.StringUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -27,8 +28,8 @@ public class UserOrderPaymentServiceImpl implements UserOrderPaymentService {
     @Autowired
     private UserOrderPaymentMapper userOrderPaymentMapper;
 
-    @Autowired
-    private PaymentService adapayPaymentService;
+    @Autowired(required = true)
+    private PaymentClient paymentClient;
 
     @Override
     public UserOrderPayment getByTranNo(String orderNo) {
@@ -50,7 +51,7 @@ public class UserOrderPaymentServiceImpl implements UserOrderPaymentService {
     }
 
     @Override
-    public UserOrderPayment getByOrderNo(String orderSn, PayChannelEnum payChannel, PayStatusEnum payStatus) {
+    public UserOrderPayment getByOrderNo(String orderSn, PayChannelEnum payChannel, TradeStatusEnum payStatus) {
 
         return userOrderPaymentMapper.selectByOrderNoAndStatus(orderSn,payChannel.getCode(),payStatus.getCode());
     }
@@ -66,21 +67,23 @@ public class UserOrderPaymentServiceImpl implements UserOrderPaymentService {
 
         if (orderPayment != null) {
             //更新付款单
-            orderPayment.setStatus(PayStatusEnum.failed.getCode());
+            orderPayment.setStatus(TradeStatusEnum.failed.getCode());
             orderPayment.setPayFailMsg(StringUtil.isEmpty(message) ? "交易取消" : message);
             orderPayment.setUpdateTime(new Date());
 
             //发送支付关单请求
             if (!StringUtil.isEmpty(orderPayment.getTransNo())) {
-                OrderCloseReq orderCloseReq = new OrderCloseReq();
-                orderCloseReq.setPaymentId(orderPayment.getTransNo());
-                orderCloseReq.setReason(message);
-                OrderCloseRes closeRes = adapayPaymentService.orderClose(orderCloseReq);
-                if (!closeRes.isStatus()) {
-                    orderPayment.setCloseStatus(PayStatusEnum.failed.getCode());
-                    orderPayment.setCloseFailMsg(closeRes.getFailMsg());
+                ClosePayment closePayment = new ClosePayment(OpenEnum.valueOf(orderPayment.getOpenType()),
+                                                              PayChannelEnum.valueOf(orderPayment.getPayChannel()));
+                closePayment.setId(orderPayment.getTransNo());
+                closePayment.setReason(message);
+                closePayment.setPaymentNo(orderPayment.getAdapayNo());
+                BaseResult<ClosePayment> closePaymentBaseResult = paymentClient.closePayment(closePayment);
+                if (!closePaymentBaseResult.getStatus()) {
+                    orderPayment.setCloseStatus(TradeStatusEnum.failed.getCode());
+                    orderPayment.setCloseFailMsg(closePaymentBaseResult.getMsg());
                 } else {
-                    orderPayment.setCloseStatus(PayStatusEnum.pending.getCode());
+                    orderPayment.setCloseStatus(TradeStatusEnum.pending.getCode());
                 }
             }
             userOrderPaymentMapper.updateByPrimaryKeySelective(orderPayment);

+ 0 - 1
cooleshow-mall/pom.xml

@@ -90,6 +90,5 @@
         <module>mall-admin</module>
         <module>mall-common</module>
         <module>mall-portal</module>
-        <module>mall-pay</module>
     </modules>
 </project>

+ 0 - 5
pom.xml

@@ -108,11 +108,6 @@
 				<artifactId>mall-common</artifactId>
 				<version>${project.cooleshow.version}</version>
 			</dependency>
-			<dependency>
-				<groupId>com.yonge.cooleshow</groupId>
-				<artifactId>mall-pay</artifactId>
-				<version>${project.cooleshow.version}</version>
-			</dependency>
 			<!--mall中MBG生成模块-->
 			<dependency>
 				<groupId>com.yonge.cooleshow</groupId>

+ 0 - 1
toolset/toolset-payment/pom.xml

@@ -35,7 +35,6 @@
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>3.0.7.1</version>
-            <scope>provided</scope>
         </dependency>
         <!-- redisson -->
         <dependency>