liujunchi 2 anni fa
parent
commit
935ca2f34f

+ 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) {

+ 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="opentType != null">
+                open_type = #{opentType,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>
 

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

@@ -25,7 +25,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-@Component
+// @Component
 public class PaymentSdk {
     private final static Logger log = LoggerFactory.getLogger(PaymentSdk.class);
 

+ 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>

+ 118 - 63
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/controller/PaymentController.java

@@ -1,18 +1,33 @@
 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.enums.OrderCacheEnum;
+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.OmsPortalOrderService;
-import com.yonge.cooleshow.sdk.adapay.PaymentSdk;
+import com.yonge.cooleshow.portal.service.UserOrderPaymentService;
 import com.yonge.cooleshow.sdk.req.OrderPayReq;
 import com.yonge.cooleshow.sdk.res.OrderPayRes;
 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 +53,26 @@ 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 RedissonClient redissonClient;
 
     @ApiOperation(value = "订单付款")
     @PostMapping("/orderPay")
@@ -111,14 +84,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 +105,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
+    ) throws Exception {
+        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())){
+                //退款
+                orderService.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;
+    }
+
 }

+ 89 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OrderPayReq.java

@@ -0,0 +1,89 @@
+package com.yonge.cooleshow.portal.dto;
+
+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;
+
+/**
+ * 下单支付请求
+ *
+ * @Author: liweifan
+ * @Data: 2022/3/31 14:55
+ */
+@ApiModel(value = "OrderPayReq对象", description = "下单支付请求")
+public class OrderPayReq {
+    @NotBlank(message = "订单号不能为空")
+    @ApiModelProperty(value = "订单号 ", required = true)
+    private String orderNo;
+    @NotNull(message = "支付渠道不能为空")
+    @ApiModelProperty(value = "支付渠道:  alipay 支付宝APP支付 alipay_lite 支付宝小程序支付  wx_lite 微信小程序支付 ", required = true)
+    private PayChannelEnum payChannel;
+    @ApiModelProperty(value = "微信用户openId(微信支付必传)")
+    private String openId;
+    @ApiModelProperty(value = "买家的支付宝用户 id(支付宝小程序支付必传)")
+    private String buyerId;
+    @ApiModelProperty(value = "用户说明 ")
+    private String reason;
+
+    private Long userId;
+    private String ipAddress;
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public PayChannelEnum getPayChannel() {
+        return payChannel;
+    }
+
+    public void setPayChannel(PayChannelEnum payChannel) {
+        this.payChannel = payChannel;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getIpAddress() {
+        return ipAddress;
+    }
+
+    public void setIpAddress(String ipAddress) {
+        this.ipAddress = ipAddress;
+    }
+
+    public String getOpenId() {
+        return openId;
+    }
+
+    public void setOpenId(String openId) {
+        this.openId = openId;
+    }
+
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    public String getBuyerId() {
+        return buyerId;
+    }
+
+    public void setBuyerId(String buyerId) {
+        this.buyerId = buyerId;
+    }
+}

+ 105 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/dto/OrderPayRes.java

@@ -0,0 +1,105 @@
+package com.yonge.cooleshow.portal.dto;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/4/1 15:35
+ */
+@ApiModel(value = "OrderPayRes", description = "订单支付请求返回对象")
+public class OrderPayRes {
+    @ApiModelProperty("支付金额")
+    private String pay_amt;
+    @ApiModelProperty("pay_info")
+    private String pay_info;
+
+    @ApiModelProperty(value = "执行状态",required = true)
+    @JsonIgnore
+    private boolean status = true;
+
+    @ApiModelProperty(value = "出错信息",required = true)
+    @JsonIgnore
+    private String message;
+
+    @ApiModelProperty(value = "支付状态",required = true)
+    @JsonIgnore
+    private PayStatusEnum payStatus;
+
+
+    @ApiModelProperty(value = "订单编号",required = true)
+    @JsonIgnore
+    private String orderNo;
+
+    @ApiModelProperty("支付渠道:  alipay 支付宝  wx_lite 微信")
+    private String payChannel;
+
+    @ApiModelProperty(value = "交易流水号",required = true)
+    @JsonIgnore
+    private String transNo;
+
+    public String getPay_amt() {
+        return pay_amt;
+    }
+
+    public void setPay_amt(String pay_amt) {
+        this.pay_amt = pay_amt;
+    }
+
+    public String getPay_info() {
+        return pay_info;
+    }
+
+    public void setPay_info(String pay_info) {
+        this.pay_info = pay_info;
+    }
+
+    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 PayStatusEnum getPayStatus() {
+        return payStatus;
+    }
+
+    public void setPayStatus(PayStatusEnum payStatus) {
+        this.payStatus = payStatus;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getPayChannel() {
+        return payChannel;
+    }
+
+    public void setPayChannel(String payChannel) {
+        this.payChannel = payChannel;
+    }
+
+    public String getTransNo() {
+        return transNo;
+    }
+
+    public void setTransNo(String transNo) {
+        this.transNo = transNo;
+    }
+}

+ 23 - 7
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/OmsPortalOrderService.java

@@ -4,8 +4,9 @@ import com.yonge.cooleshow.mall.common.api.CommonPage;
 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;
@@ -77,16 +78,31 @@ public interface OmsPortalOrderService {
     /**
      * 订单拉起支付
      *
+     * @param payReq 支付信息
+     * @return
      */
     @Transactional
-    void orderCallback(String data, String type);
+    OrderPayRes orderPay(OrderPayReq payReq);
 
     /**
-     * 订单拉起支付
+     * 支付回调
      *
-     * @param payReq 支付信息
-     * @return
+     * @param data
      */
     @Transactional
-    OrderPayRes orderPay(OrderPayReq payReq);
+    void executePaymentCallBack(PaymentCallBack data);
+
+    /**
+     * 关闭订单
+     *
+     * @param data
+     */
+    void closePaymentCallBack(PaymentCallBack data);
+
+    /**
+     * 退款订单
+     *
+     * @param data
+     */
+    void refundPaymentCallBack(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);
 
     /**
      * 根据订单查询 订单支付信息

+ 169 - 96
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -2,11 +2,12 @@ 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.OrderStatusEnum;
-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;
@@ -18,12 +19,17 @@ 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.OrderCloseReq;
-import com.yonge.cooleshow.sdk.req.OrderPayReq;
-import com.yonge.cooleshow.sdk.res.OrderCloseRes;
-import com.yonge.cooleshow.sdk.res.OrderPayRes;
-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.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;
@@ -81,11 +87,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) {
@@ -462,73 +468,120 @@ 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);
+
+
+        // orderPayRes.
+        return orderPayRes;
+    }
+
+    private void saveOrderPayment(Payment payment, OmsOrderDetail detail) {
+        UserOrderPayment userOrderPayment;
         OmsOrder omsOrder = new OmsOrder();
         omsOrder.setId(detail.getId());
-        if (orderPayRes.getPayStatus().getCode().equals(OrderStatusEnum.PAYING.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
-    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);
         }
     }
 
+    @Override
+    public void refundPaymentCallBack(PaymentCallBack data) {
+
+    }
+
 
 
     /***
@@ -537,17 +590,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());
         }
     }
 
@@ -557,19 +611,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));
         }
     }
 
@@ -579,12 +638,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);
     }
@@ -595,22 +654,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) {
@@ -619,23 +675,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);
+    }
+
     /**
      * 订单完成
      *
@@ -643,27 +712,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);

+ 11 - 13
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/UserOrderPaymentServiceImpl.java

@@ -1,13 +1,11 @@
 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.payment.base.enums.PayChannelEnum;
+import com.yonge.toolset.payment.base.enums.TradeStatusEnum;
+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 +25,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 +48,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 +64,21 @@ 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();
+                ClosePayment orderCloseReq = new ClosePayment();
                 orderCloseReq.setPaymentId(orderPayment.getTransNo());
                 orderCloseReq.setReason(message);
-                OrderCloseRes closeRes = adapayPaymentService.orderClose(orderCloseReq);
+                OrderCloseRes closeRes = paymentClient.closePayment(orderCloseReq);
                 if (!closeRes.isStatus()) {
-                    orderPayment.setCloseStatus(PayStatusEnum.failed.getCode());
+                    orderPayment.setCloseStatus(TradeStatusEnum.failed.getCode());
                     orderPayment.setCloseFailMsg(closeRes.getFailMsg());
                 } else {
-                    orderPayment.setCloseStatus(PayStatusEnum.pending.getCode());
+                    orderPayment.setCloseStatus(TradeStatusEnum.pending.getCode());
                 }
             }
             userOrderPaymentMapper.updateByPrimaryKeySelective(orderPayment);