Bläddra i källkod

Merge branch 'dev/2024/0703/update-app-Y' of feifan/mall-backend-app into master

新增支付通道2
Yangzw 9 månader sedan
förälder
incheckning
43a0b20274

+ 3 - 0
feifan-framework/feifan-spring-boot-starter-biz-pay/src/main/java/cn/newfeifan/mall/framework/pay/core/client/impl/PayClientFactoryImpl.java

@@ -52,6 +52,9 @@ public class PayClientFactoryImpl implements PayClientFactory {
         clientClass.put(ALIPAY_BAR, AlipayBarPayClient.class);
         // Mock 支付客户端
         clientClass.put(MOCK, MockPayClient.class);
+
+        //富友支付
+        clientClass.put(JSAPI, WxPubPayClient.class);
     }
 
     @Override

+ 3 - 1
feifan-framework/feifan-spring-boot-starter-biz-pay/src/main/java/cn/newfeifan/mall/framework/pay/core/enums/channel/PayChannelEnum.java

@@ -30,7 +30,9 @@ public enum PayChannelEnum {
     ALIPAY_BAR("alipay_bar", "支付宝条码支付", AlipayPayClientConfig.class),
     MOCK("mock", "模拟支付", NonePayClientConfig.class),
 
-    WALLET("wallet", "钱包支付", NonePayClientConfig.class);
+    WALLET("wallet", "钱包支付", NonePayClientConfig.class),
+
+    JSAPI("JSAPI","富友微信公众号支付", NonePayClientConfig.class);
 
     /**
      * 编码

+ 44 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/app/order/AppTradeOrderController.java

@@ -72,9 +72,43 @@ public class AppTradeOrderController {
     @Operation(summary = "获得支付订单")
     @Parameter(name = "id", description = "支付订单编号", required = true, example = "1024")
     public CommonResult<PayOrderRespVO> getPayOrderByStatus(@RequestParam("id") Long id) {
+        log.info("getPayOrderByStatus:=========id:{}",id);
+        PayOrderDO oldPayOrderDO = payOrderMapper.selectById(id);
+        log.info("getPayOrderByStatus:oldPayOrderDO===========:{}",oldPayOrderDO);
+        PayOrderDO newPayOrderDO = payOrderService.getOrderByStatus(oldPayOrderDO);
+
+        CommonResult<PayOrderRespVO> success = success(PayOrderConvert.INSTANCE.convert(newPayOrderDO));
 
+//        boolean test = true;
+//        if(true)
+        //如果在上一行代码,把支付订单状态从“待支付”,改为“已支付”,则证明订单支付成功,则改trade_order表状态为待发货,并且分配积分
+        if(oldPayOrderDO.getStatus().equals(PayOrderStatusEnum.WAITING.getStatus())
+                &&
+                newPayOrderDO.getStatus().equals(PayOrderStatusEnum.SUCCESS.getStatus())
+        )
+        {
+            //只有支付订单id参数payOrderId是有用的。
+            List list = tradeOrderUpdateService.updateOrderPaid(id);
+            Object jfObj = list.get(0);
+            Object sjObj = list.get(1);
+
+            Long jf = (Long)jfObj;//待确权积分
+            Double sj = (Double)sjObj;//待确权身价
+
+            success.getData().setJf(jf);
+            success.getData().setSj(sj);
+        }
+
+        return success;
+    }
+
+    @GetMapping("/getPayOrderByStatus2")
+    @Operation(summary = "获得支付订单2")
+    @Parameter(name = "id", description = "支付订单编号", required = true, example = "1024")
+    public CommonResult<PayOrderRespVO> getPayOrderByStatus2(@RequestParam("id") Long id) {
+        log.info("getPayOrderByStatus2:=========id:{}",id);
         PayOrderDO oldPayOrderDO = payOrderMapper.selectById(id);
-        log.info("getPayOrderByStatus:oldPayOrderDO===========:{}=========id:{}",oldPayOrderDO,id);
+        log.info("getPayOrderByStatus2:oldPayOrderDO===========:{}",oldPayOrderDO);
         PayOrderDO newPayOrderDO = payOrderService.getOrderByStatus(oldPayOrderDO);
 
         CommonResult<PayOrderRespVO> success = success(PayOrderConvert.INSTANCE.convert(newPayOrderDO));
@@ -99,9 +133,18 @@ public class AppTradeOrderController {
             success.getData().setSj(sj);
         }
 
+        log.info("getPayOrderByStatus2:success===========:{}",success);
         return success;
     }
 
+    @GetMapping("/getPayOrderByStatus3")
+    @Operation(summary = "获得支付订单2")
+    @Parameter(name = "id", description = "支付订单编号", required = true, example = "1024")
+    public CommonResult<PayOrderRespVO> getPayOrderByStatus3(@RequestParam("id") Long id) {
+        log.info("getPayOrderByStatus3:=========id:{}",id);
+        return null;
+    }
+
 
 
     /**

+ 2 - 0
feifan-module-pay/feifan-module-pay-api/src/main/java/cn/newfeifan/mall/module/pay/enums/DictTypeConstants.java

@@ -23,6 +23,8 @@ public interface DictTypeConstants {
 
     public static final String FUYOU_TRADE_ORDER_NO_PREFIX = "16103-";
 
+    String ORDER_NO_PREFIX = "P";
+
 
     public static final String TRADE_NO = "trade_no:";
 

+ 9 - 0
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/controller/app/fuyouorder/NewPayOrderController.java

@@ -2,6 +2,7 @@ package cn.newfeifan.mall.module.pay.controller.app.fuyouorder;
 
 import cn.newfeifan.mall.framework.common.exception.ErrorCode;
 import cn.newfeifan.mall.framework.common.pojo.CommonResult;
+import cn.newfeifan.mall.module.pay.controller.admin.order.vo.PayOrderRespVO;
 import cn.newfeifan.mall.module.pay.fuiou.reqvo.SubmitOrderRequestVO;
 import cn.newfeifan.mall.module.pay.fuiou.respVO.FuYouPaymentResponseVO;
 import cn.newfeifan.mall.module.pay.fuiou.util.FuiouHttpPoster;
@@ -51,6 +52,14 @@ public class NewPayOrderController {
         return success("success");
     }
 
+    @PostMapping("/getPayOrderByStatus")
+    @Operation(summary = "富友支付订单回调")
+    public CommonResult<PayOrderRespVO> getPayOrderByStatus(@RequestParam("id") Long id) {
+
+
+        return null;
+    }
+
     @PostMapping("/afterSale")
     @Operation(summary = "向富友申请退款")
     public CommonResult<String> afterSaleFuYouPayOrder(Long afterSaleId) {

+ 7 - 3
feifan-module-pay/feifan-module-pay-biz/src/main/java/cn/newfeifan/mall/module/pay/service/fuyouorder/FiYouPayOrderServiceImpl.java

@@ -7,6 +7,7 @@ import cn.newfeifan.mall.module.pay.dal.dataobject.channel.PayChannelDO;
 import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderDO;
 import cn.newfeifan.mall.module.pay.dal.dataobject.order.PayOrderExtensionDO;
 import cn.newfeifan.mall.module.pay.dal.mysql.order.PayOrderExtensionMapper;
+import cn.newfeifan.mall.module.pay.enums.order.PayOrderStatusEnum;
 import cn.newfeifan.mall.module.pay.fuiou.reqvo.SubmitOrderRequestVO;
 import cn.newfeifan.mall.module.pay.fuiou.respVO.FuYouPayOrderSubmitRespVO;
 import cn.newfeifan.mall.module.pay.fuiou.respVO.FuYouPaymentResponseVO;
@@ -66,18 +67,21 @@ public class FiYouPayOrderServiceImpl implements FuYouPayOrderService {
 
         // 1.1 获得 PayOrderDO ,并校验其是否存在
         PayOrderDO payOrder = payOrderService.validateOrderCanSubmit(requestVO.getId());
-        payOrder.setPayOrderNo(generate());
+        payOrder.setPayOrderNo(generate(FUYOU_TRADE_ORDER_NO_PREFIX));
         payOrderService.updatePayOrder(payOrder);
 
         // 1.32 校验支付渠道是否有效
         PayChannelDO channel = validateChannelCanSubmit(payOrder.getAppId(), requestVO.getChannelCode());
 
         // 2. 插入 PayOrderExtensionDO
+        String no = generate(ORDER_NO_PREFIX);
         PayOrderExtensionDO orderExtension = PayOrderExtensionDO.builder()
                 .userIp(getClientIP())
                 .orderId(payOrder.getId())
                 .channelId(channel.getId())
                 .channelCode(channel.getCode())
+                .no(no)
+                .status(PayOrderStatusEnum.WAITING.getStatus())
                 .build();
         orderExtensionMapper.insert(orderExtension);
 
@@ -151,9 +155,9 @@ public class FiYouPayOrderServiceImpl implements FuYouPayOrderService {
         return channel;
     }
 
-    private String generate() {
+    private String generate(String prefix) {
         // 递增序号
-        String noPrefix = cn.newfeifan.mall.module.pay.enums.DictTypeConstants.FUYOU_TRADE_ORDER_NO_PREFIX + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_PATTERN);
+        String noPrefix = prefix + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATETIME_PATTERN);
         String key = TRADE_NO + noPrefix;
         Long no = stringRedisTemplate.opsForValue().increment(key);
         // 设置过期时间