Explorar el Código

超级会员发布支付init

chao hace 3 años
padre
commit
770d35886c

+ 108 - 26
src/main/java/com/caimei365/order/controller/PayNonOrderApi.java

@@ -2,7 +2,8 @@ package com.caimei365.order.controller;
 
 import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.model.ResponseJson;
-import com.caimei365.order.model.dto.SecondPayDto;
+import com.caimei365.order.model.dto.PaySecondDto;
+import com.caimei365.order.model.dto.PayVipDto;
 import com.caimei365.order.service.PayNonOrderService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -29,76 +30,76 @@ public class PayNonOrderApi {
     private final PayNonOrderService payNonOrderService;
 
     /**
-     * 二手发布微信线上支付
-     * @param secondPayDto {
+     * 二手发布-微信线上支付
+     * @param paySecondDto {
      *               productId      二手发布商品id
      *               returnUrl     页面回调地址
      *               code          微信小程序code
      *               state         微信公众号state参数
      * }
      */
-    @ApiOperation("二手发布微信线上支付(旧:/PayOrder/appletsSecondHandPay)(/PayOrder/secondHandPay[WEIXIN])")
+    @ApiOperation("二手发布-微信线上支付(旧:/PayOrder/appletsSecondHandPay)(/PayOrder/secondHandPay[WEIXIN])")
     @PostMapping("/second/wechat")
-    public ResponseJson<JSONObject> paySecondByWeChat(SecondPayDto secondPayDto, @RequestHeader HttpHeaders headers){
-        if (null == secondPayDto.getProductId()) {
+    public ResponseJson<JSONObject> paySecondByWeChat(PaySecondDto paySecondDto, @RequestHeader HttpHeaders headers){
+        if (null == paySecondDto.getProductId()) {
             return ResponseJson.error("二手商品Id不能为空!", null);
         }
-        if (StringUtils.isEmpty(secondPayDto.getCode())) {
+        if (StringUtils.isEmpty(paySecondDto.getCode())) {
             return ResponseJson.error("微信code不能为空!", null);
         }
-        return payNonOrderService.paySecondByWeChat(secondPayDto, headers);
+        return payNonOrderService.paySecondByWeChat(paySecondDto, headers);
     }
 
     /**
-     * 二手发布支付宝线上支付
-     * @param secondPayDto {
+     * 二手发布-支付宝线上支付
+     * @param paySecondDto {
      *               productId      二手发布商品id
      *               returnUrl     页面回调地址
      * }
      */
-    @ApiOperation("二手发布支付宝线上支付(旧:/PayOrder/secondHandPay[ALIPAY])")
+    @ApiOperation("二手发布-支付宝线上支付(旧:/PayOrder/secondHandPay[ALIPAY])")
     @PostMapping("/second/alipay")
-    public ResponseJson<JSONObject> paySecondByAlipay(SecondPayDto secondPayDto, @RequestHeader HttpHeaders headers){
-        if (null == secondPayDto.getProductId()) {
+    public ResponseJson<JSONObject> paySecondByAlipay(PaySecondDto paySecondDto, @RequestHeader HttpHeaders headers){
+        if (null == paySecondDto.getProductId()) {
             return ResponseJson.error("二手商品Id不能为空!", null);
         }
-        if (StringUtils.isEmpty(secondPayDto.getReturnUrl())) {
+        if (StringUtils.isEmpty(paySecondDto.getReturnUrl())) {
             return ResponseJson.error("回调地址不能为空!", null);
         }
-        return payNonOrderService.paySecondByAlipay(secondPayDto, headers);
+        return payNonOrderService.paySecondByAlipay(paySecondDto, headers);
     }
 
     /**
-     * 二手发布银联线上支付
-     * @param secondPayDto {
+     * 二手发布-银联线上支付
+     * @param paySecondDto {
      *               productId     二手发布商品id
      *               returnUrl     页面回调地址
      *               bankCode      银行编码(银联支付使用)
      *               userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
      * }
      */
-    @ApiOperation("二手发布银联线上支付(旧:/PayOrder/secondHandPay[UNIONPAY])")
+    @ApiOperation("二手发布-银联线上支付(旧:/PayOrder/secondHandPay[UNIONPAY])")
     @PostMapping("/second/union")
-    public ResponseJson<JSONObject> paySecondByUnionPay(SecondPayDto secondPayDto, @RequestHeader HttpHeaders headers){
-        if (null == secondPayDto.getProductId()) {
+    public ResponseJson<JSONObject> paySecondByUnionPay(PaySecondDto paySecondDto, @RequestHeader HttpHeaders headers){
+        if (null == paySecondDto.getProductId()) {
             return ResponseJson.error("二手商品Id不能为空!", null);
         }
-        if (StringUtils.isEmpty(secondPayDto.getReturnUrl())) {
+        if (StringUtils.isEmpty(paySecondDto.getReturnUrl())) {
             return ResponseJson.error("回调地址不能为空!", null);
         }
-        if (StringUtils.isEmpty(secondPayDto.getBankCode())) {
+        if (StringUtils.isEmpty(paySecondDto.getBankCode())) {
             return ResponseJson.error("银行编码不能为空!", null);
         }
-        if (StringUtils.isEmpty(secondPayDto.getUserType())) {
+        if (StringUtils.isEmpty(paySecondDto.getUserType())) {
             return ResponseJson.error("银行用户类型不能为空!", null);
         }
-        return payNonOrderService.paySecondByUnionPay(secondPayDto, headers);
+        return payNonOrderService.paySecondByUnionPay(paySecondDto, headers);
     }
 
     /**
-     * 二手发布支付回调
+     * 二手发布-支付回调
      */
-    @ApiOperation("二手发布支付回调(旧:/PayOrder/secondHandPayCallBack)")
+    @ApiOperation("二手发布-支付回调(旧:/PayOrder/secondHandPayCallBack)")
     @GetMapping("/second/callback")
     public String paymentSecondCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException {
         if (StringUtils.isBlank(data)) {
@@ -107,4 +108,85 @@ public class PayNonOrderApi {
         return payNonOrderService.paymentSecondCallback(data);
     }
 
+    /**
+     * 升级超级会员-微信线上支付
+     * @param payVipDto {
+     *                  userId        用户Id
+     *                  vipId         会员套餐Id
+     *                  returnUrl     页面回调地址
+     *                  code          微信小程序code
+     *                  state         微信公众号state参数
+     * }
+     */
+    @ApiOperation("升级超级会员-微信线上支付")
+    @PostMapping("/vip/wechat")
+    public ResponseJson<JSONObject> paySuperVipByWeChat(PayVipDto payVipDto, @RequestHeader HttpHeaders headers){
+        if (null == payVipDto.getUserId()) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        if (StringUtils.isEmpty(payVipDto.getCode())) {
+            return ResponseJson.error("微信code不能为空!", null);
+        }
+        return payNonOrderService.paySuperVipByWeChat(payVipDto, headers);
+    }
+
+    /**
+     * 升级超级会员-支付宝线上支付
+     * @param payVipDto {
+     *                  userId        用户Id
+     *                  vipId         会员套餐Id
+     *                  returnUrl     页面回调地址
+     * }
+     */
+    @ApiOperation("升级超级会员-支付宝线上支付")
+    @PostMapping("/vip/alipay")
+    public ResponseJson<JSONObject> paySuperVipByAlipay(PayVipDto payVipDto, @RequestHeader HttpHeaders headers){
+        if (null == payVipDto.getUserId()) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        if (StringUtils.isEmpty(payVipDto.getReturnUrl())) {
+            return ResponseJson.error("回调地址不能为空!", null);
+        }
+        return payNonOrderService.paySuperVipByAlipay(payVipDto, headers);
+    }
+
+    /**
+     * 升级超级会员-银联线上支付
+     * @param payVipDto {
+     *               userId        用户Id
+     *               vipId         会员套餐Id
+     *               returnUrl     页面回调地址
+     *               bankCode      银行编码(银联支付使用)
+     *               userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
+     * }
+     */
+    @ApiOperation("升级超级会员-银联线上支付(旧:/PayOrder/secondHandPay[UNIONPAY])")
+    @PostMapping("/vip/union")
+    public ResponseJson<JSONObject> paySuperVipByUnionPay(PayVipDto payVipDto, @RequestHeader HttpHeaders headers){
+        if (null == payVipDto.getUserId()) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        if (StringUtils.isEmpty(payVipDto.getReturnUrl())) {
+            return ResponseJson.error("回调地址不能为空!", null);
+        }
+        if (StringUtils.isEmpty(payVipDto.getBankCode())) {
+            return ResponseJson.error("银行编码不能为空!", null);
+        }
+        if (StringUtils.isEmpty(payVipDto.getUserType())) {
+            return ResponseJson.error("银行用户类型不能为空!", null);
+        }
+        return payNonOrderService.paySuperVipByUnionPay(payVipDto, headers);
+    }
+
+    /**
+     * 升级超级会员-支付回调
+     */
+    @ApiOperation("升级超级会员-支付回调(旧:/PayOrder/secondHandPayCallBack)")
+    @GetMapping("/vip/callback")
+    public String paymentSuperVipCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException {
+        if (StringUtils.isBlank(data)) {
+            return "回调参数失败";
+        }
+        return payNonOrderService.paymentSuperVipCallback(data);
+    }
 }

+ 4 - 1
src/main/java/com/caimei365/order/model/bo/PayParamBo.java

@@ -14,7 +14,10 @@ import java.io.Serializable;
 @Data
 public class PayParamBo implements Serializable {
     private static final long serialVersionUID = 1L;
-
+    /**
+     * 用户Id
+     */
+    private Integer userId;
     /**
      * 订单Id
      */

+ 1 - 1
src/main/java/com/caimei365/order/model/dto/SecondPayDto.java → src/main/java/com/caimei365/order/model/dto/PaySecondDto.java

@@ -12,7 +12,7 @@ import java.io.Serializable;
  * @date : 2021/7/30
  */
 @Data
-public class SecondPayDto implements Serializable {
+public class PaySecondDto implements Serializable {
     private static final long serialVersionUID = 1L;
     /**
      * 二手发布商品id

+ 55 - 0
src/main/java/com/caimei365/order/model/dto/PayVipDto.java

@@ -0,0 +1,55 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/9/27
+ */
+@Data
+public class PayVipDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 用户id
+     */
+    @ApiModelProperty("用户id")
+    private Integer userId;
+    /**
+     * 会员套餐id
+     */
+    @ApiModelProperty("会员套餐Id")
+    private Integer vipId;
+    /**
+     * 页面回调地址
+     */
+    @ApiModelProperty("页面回调地址")
+    private String returnUrl;
+    /**
+     * 微信小程序code,微信小程序支付使用
+     */
+    @ApiModelProperty("微信小程序code")
+    private String code;
+    /**
+     * 微信公众号state参数
+     */
+    @ApiModelProperty("微信公众号state参数")
+    private String state;
+    /**
+     * 银行编码(银联支付使用)
+     */
+    @ApiModelProperty("银行编码(银联支付使用)")
+    private String bankCode;
+    /**
+     * 用户类型(银联支付使用)
+     * 企业:ENTERPRISE
+     * 个人:USER
+     */
+    @ApiModelProperty("用户类型(银联支付使用)企业:ENTERPRISE,个人:USER")
+    private String userType;
+}
+

+ 43 - 7
src/main/java/com/caimei365/order/service/PayNonOrderService.java

@@ -2,7 +2,8 @@ package com.caimei365.order.service;
 
 import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.model.ResponseJson;
-import com.caimei365.order.model.dto.SecondPayDto;
+import com.caimei365.order.model.dto.PaySecondDto;
+import com.caimei365.order.model.dto.PayVipDto;
 import org.springframework.http.HttpHeaders;
 
 import java.security.NoSuchAlgorithmException;
@@ -17,35 +18,70 @@ import java.security.spec.InvalidKeySpecException;
 public interface PayNonOrderService {
     /**
      * 二手发布微信线上支付
-     * @param secondPayDto {
+     * @param paySecondDto {
      *               productId      二手发布商品id
      *               returnUrl     页面回调地址
      *               code          微信小程序code
      *               state         微信公众号state参数
      * }
      */
-    ResponseJson<JSONObject> paySecondByWeChat(SecondPayDto secondPayDto, HttpHeaders headers);
+    ResponseJson<JSONObject> paySecondByWeChat(PaySecondDto paySecondDto, HttpHeaders headers);
     /**
      * 二手发布支付宝线上支付
-     * @param secondPayDto {
+     * @param paySecondDto {
      *               productId      二手发布商品id
      *               returnUrl     页面回调地址
      * }
      */
-    ResponseJson<JSONObject> paySecondByAlipay(SecondPayDto secondPayDto, HttpHeaders headers);
+    ResponseJson<JSONObject> paySecondByAlipay(PaySecondDto paySecondDto, HttpHeaders headers);
     /**
      * 二手发布银联线上支付
-     * @param secondPayDto {
+     * @param paySecondDto {
      *               productId       二手发布商品id
      *               returnUrl     页面回调地址
      *               bankCode      银行编码(银联支付使用)
      *               userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
      * }
      */
-    ResponseJson<JSONObject> paySecondByUnionPay(SecondPayDto secondPayDto, HttpHeaders headers);
+    ResponseJson<JSONObject> paySecondByUnionPay(PaySecondDto paySecondDto, HttpHeaders headers);
     /**
      * 二手发布支付回调
      */
     String paymentSecondCallback(String data) throws NoSuchAlgorithmException, InvalidKeySpecException;
 
+    /**
+     * 升级超级会员-微信线上支付
+     * @param payVipDto {
+     *               userId        用户Id
+     *               vipId         会员套餐Id
+     *               returnUrl     页面回调地址
+     *               code          微信小程序code
+     *               state         微信公众号state参数
+     * }
+     */
+    ResponseJson<JSONObject> paySuperVipByWeChat(PayVipDto payVipDto, HttpHeaders headers);
+    /**
+     * 升级超级会员-支付宝线上支付
+     * @param payVipDto {
+     *               userId        用户Id
+     *               vipId         会员套餐Id
+     *               returnUrl     页面回调地址
+     * }
+     */
+    ResponseJson<JSONObject> paySuperVipByAlipay(PayVipDto payVipDto, HttpHeaders headers);
+    /**
+     * 升级超级会员-银联线上支付
+     * @param payVipDto {
+     *               userId        用户Id
+     *               vipId         会员套餐Id
+     *               returnUrl     页面回调地址
+     *               bankCode      银行编码(银联支付使用)
+     *               userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
+     * }
+     */
+    ResponseJson<JSONObject> paySuperVipByUnionPay(PayVipDto payVipDto, HttpHeaders headers);
+    /**
+     * 升级超级会员-支付回调
+     */
+    String paymentSuperVipCallback(String data);
 }

+ 92 - 16
src/main/java/com/caimei365/order/service/impl/PayNonOrderServiceImpl.java

@@ -5,7 +5,8 @@ import com.caimei365.order.components.WeChatService;
 import com.caimei365.order.mapper.PayOrderMapper;
 import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.bo.PayParamBo;
-import com.caimei365.order.model.dto.SecondPayDto;
+import com.caimei365.order.model.dto.PaySecondDto;
+import com.caimei365.order.model.dto.PayVipDto;
 import com.caimei365.order.model.po.SplitAccountPo;
 import com.caimei365.order.service.PayNonOrderService;
 import com.caimei365.order.utils.PayUtil;
@@ -44,7 +45,7 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
     /**
      * 二手发布微信线上支付
      *
-     * @param secondPayDto {
+     * @param paySecondDto {
      *                     productId      二手发布商品id
      *                     returnUrl     页面回调地址
      *                     code          微信小程序code
@@ -53,10 +54,30 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
      * @param headers
      */
     @Override
-    public ResponseJson<JSONObject> paySecondByWeChat(SecondPayDto secondPayDto, HttpHeaders headers) {
-        PayParamBo payParam = new PayParamBo();
+    public ResponseJson<JSONObject> paySecondByWeChat(PaySecondDto paySecondDto, HttpHeaders headers) {
+        PayParamBo tempParam = new PayParamBo();
         // payDto -> payParam
-        BeanUtils.copyProperties(secondPayDto, payParam);
+        BeanUtils.copyProperties(paySecondDto, tempParam);
+        ResponseJson<PayParamBo> jsonParam = getJsonObjectResponseJson(tempParam, headers);
+        if (-1 == jsonParam.getCode()){
+            return ResponseJson.error(jsonParam.getMsg(), null);
+        }
+        PayParamBo payParam = jsonParam.getData();
+        // 二手发布默认100元
+        payParam.setPayAmount(10000);
+        payParam.setNotifyUrl(secondHandUrl);
+        log.info("【二手发布微信支付】>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>获取openId:" + payParam.getOpenId());
+        return toPaySecond(payParam, headers);
+    }
+
+    /**
+     * 微信线上支付-获取微信支付信息
+     *
+     * @param payParam 支付参数
+     * @param headers  HttpHeaders
+     * @return payParam获取微信支付信息
+     */
+    private ResponseJson<PayParamBo> getJsonObjectResponseJson(PayParamBo payParam, HttpHeaders headers) {
         // 微信线上支付
         payParam.setPayWay("WEIXIN");
         String openId = null;
@@ -88,27 +109,23 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
             payParam.setPayType("JSAPI_WEIXIN");
         }
         payParam.setOpenId(openId);
-        // 二手发布默认100元
-        payParam.setPayAmount(10000);
-        payParam.setNotifyUrl(secondHandUrl);
-        log.info("【二手发布微信支付】>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>获取openId:" + openId);
-        return toPaySecond(payParam, headers);
+        return ResponseJson.success(payParam);
     }
 
     /**
      * 二手发布支付宝线上支付
      *
-     * @param secondPayDto {
+     * @param paySecondDto {
      *                     productId      二手发布商品id
      *                     returnUrl     页面回调地址
      *                     }
      * @param headers HttpHeaders
      */
     @Override
-    public ResponseJson<JSONObject> paySecondByAlipay(SecondPayDto secondPayDto, HttpHeaders headers) {
+    public ResponseJson<JSONObject> paySecondByAlipay(PaySecondDto paySecondDto, HttpHeaders headers) {
         PayParamBo payParam = new PayParamBo();
         // payDto -> payParam
-        BeanUtils.copyProperties(secondPayDto, payParam);
+        BeanUtils.copyProperties(paySecondDto, payParam);
         //支付宝支付
         payParam.setPayWay("ALIPAY");
         payParam.setPayType("ALIPAY_H5");
@@ -122,7 +139,7 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
     /**
      * 二手发布银联线上支付
      *
-     * @param secondPayDto {
+     * @param paySecondDto {
      *                     productId       二手发布商品id
      *                     returnUrl     页面回调地址
      *                     bankCode      银行编码(银联支付使用)
@@ -131,10 +148,10 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
      * @param headers HttpHeaders
      */
     @Override
-    public ResponseJson<JSONObject> paySecondByUnionPay(SecondPayDto secondPayDto, HttpHeaders headers) {
+    public ResponseJson<JSONObject> paySecondByUnionPay(PaySecondDto paySecondDto, HttpHeaders headers) {
         PayParamBo payParam = new PayParamBo();
         // payDto -> payParam
-        BeanUtils.copyProperties(secondPayDto, payParam);
+        BeanUtils.copyProperties(paySecondDto, payParam);
         //支付宝支付
         payParam.setPayWay("UNIONPAY");
         payParam.setPayType("GATEWAY_UNIONPAY");
@@ -279,4 +296,63 @@ public class PayNonOrderServiceImpl implements PayNonOrderService {
         return "SUCCESS";
     }
 
+    /**
+     * 升级超级会员-微信线上支付
+     *
+     * @param payVipDto {
+     *                  userId        用户Id
+     *                  vipId         会员套餐Id
+     *                  returnUrl     页面回调地址
+     *                  code          微信小程序code
+     *                  state         微信公众号state参数
+     *                  }
+     * @param headers
+     */
+    @Override
+    public ResponseJson<JSONObject> paySuperVipByWeChat(PayVipDto payVipDto, HttpHeaders headers) {
+        return null;
+    }
+
+    /**
+     * 升级超级会员-支付宝线上支付
+     *
+     * @param payVipDto {
+     *                  userId        用户Id
+     *                  vipId         会员套餐Id
+     *                  returnUrl     页面回调地址
+     *                  }
+     * @param headers
+     */
+    @Override
+    public ResponseJson<JSONObject> paySuperVipByAlipay(PayVipDto payVipDto, HttpHeaders headers) {
+        return null;
+    }
+
+    /**
+     * 升级超级会员-银联线上支付
+     *
+     * @param payVipDto {
+     *                  userId        用户Id
+     *                  vipId         会员套餐Id
+     *                  returnUrl     页面回调地址
+     *                  bankCode      银行编码(银联支付使用)
+     *                  userType      用户类型(银联支付使用)企业:ENTERPRISE,个人:USER
+     *                  }
+     * @param headers
+     */
+    @Override
+    public ResponseJson<JSONObject> paySuperVipByUnionPay(PayVipDto payVipDto, HttpHeaders headers) {
+        return null;
+    }
+
+    /**
+     * 升级超级会员-支付回调
+     *
+     * @param data
+     */
+    @Override
+    public String paymentSuperVipCallback(String data) {
+        return null;
+    }
+
 }