Преглед на файлове

feat : 小游戏h5支付参数接口

bilingfeng преди 2 години
родител
ревизия
109a056b70

+ 8 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/controller/PayController.java

@@ -8,6 +8,7 @@ import com.zanxiang.sdk.annotation.UnSignCheck;
 import com.zanxiang.sdk.annotation.ValidLogin;
 import com.zanxiang.sdk.domain.params.ProductPayParam;
 import com.zanxiang.sdk.domain.params.UserData;
+import com.zanxiang.sdk.domain.vo.PayParamVO;
 import com.zanxiang.sdk.service.OrderPayService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -35,6 +36,13 @@ public class PayController {
     @Resource
     private OrderPayService orderPayService;
 
+    @UnSignCheck
+    @ApiOperation(value = "获取小游戏H5支付参数")
+    @GetMapping(value = "/param/applet")
+    public ResultVO<PayParamVO> getPayParam(@RequestParam Long orderId) {
+        return ResultVO.ok(orderPayService.getPayParam(orderId));
+    }
+
     @ApiOperation(value = "获取小游戏支付方式")
     @GetMapping(value = "/device/applet")
     public ResultVO<Integer> getAppletPayDevice(@ValidLogin UserData userData) {

+ 41 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/vo/PayParamVO.java

@@ -0,0 +1,41 @@
+package com.zanxiang.sdk.domain.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-01-05
+ * @description : 支付参数
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class PayParamVO {
+
+    /**
+     * 订单id
+     */
+    private String orderId;
+
+    /**
+     * 货物总价
+     */
+    private BigDecimal amount;
+
+    /**
+     * 描述
+     */
+    private String describe;
+
+    /**
+     * 下单支付参数
+     */
+    private String payParam;
+
+}

+ 1 - 1
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/GameAppletServiceImpl.java

@@ -117,7 +117,7 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
         Map<String, Object> linkMap = new HashMap<>(4);
         linkMap.put("title", "点我充值");
         linkMap.put("description", "点我充值" + order.getAmount() + "元,用于购买" + order.getAmount() + "元档充值");
-        linkMap.put("url", "http://gg.84game.cn/wechatPay/index.html?userId=" + user.getId() + "&orderId=" + order.getId());
+        linkMap.put("url", "http://gg.84game.cn/wechatPay/index.html?orderId=" + order.getId());
         //linkMap.put("thumb_url", "图片地址");
 
         paramMap.put("link", linkMap);

+ 15 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/OrderPayServiceImpl.java

@@ -9,6 +9,7 @@ import com.zanxiang.mybatis.entity.Order;
 import com.zanxiang.sdk.domain.bo.ProductPayParamBO;
 import com.zanxiang.sdk.domain.params.ProductPayParam;
 import com.zanxiang.sdk.domain.params.UserData;
+import com.zanxiang.sdk.domain.vo.PayParamVO;
 import com.zanxiang.sdk.enums.PayTypeEnum;
 import com.zanxiang.sdk.service.GamePayWayService;
 import com.zanxiang.sdk.service.OrderPayService;
@@ -38,6 +39,20 @@ public class OrderPayServiceImpl implements OrderPayService {
     @Autowired
     public GamePayWayService gamePayWayService;
 
+    @Override
+    public PayParamVO getPayParam(Long orderId) {
+        Order order = orderService.getById(orderId);
+        if (order == null) {
+            throw new BaseException("参数错误, 订单信息不存在");
+        }
+        return PayParamVO.builder()
+                .orderId(order.getOrderId())
+                .amount(order.getAmount())
+                .describe("购买" + order.getAmount() + "元档充值")
+                .payParam(order.getPayParam())
+                .build();
+    }
+
     @Override
     public Integer getAppletPayDevice(UserData userData) {
         return 2;

+ 3 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/OrderPayService.java

@@ -3,6 +3,7 @@ package com.zanxiang.sdk.service;
 import com.zanxiang.common.domain.ResultMap;
 import com.zanxiang.sdk.domain.params.ProductPayParam;
 import com.zanxiang.sdk.domain.params.UserData;
+import com.zanxiang.sdk.domain.vo.PayParamVO;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -14,6 +15,8 @@ import java.io.IOException;
  */
 public interface OrderPayService {
 
+    PayParamVO getPayParam(Long orderId);
+
     /**
      * 获取小游戏支付方式
      *

+ 9 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/pay/WxPayService.java

@@ -1,15 +1,18 @@
 package com.zanxiang.sdk.service.pay;
 
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zanxiang.common.constant.Constants;
 import com.zanxiang.common.domain.ResultMap;
 import com.zanxiang.common.enums.HttpStatusEnum;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.common.utils.URIUtil;
 import com.zanxiang.module.util.JsonUtil;
+import com.zanxiang.mybatis.entity.Order;
 import com.zanxiang.sdk.constant.WxPayConstants;
 import com.zanxiang.sdk.domain.bo.ProductPayAttachParamBO;
 import com.zanxiang.sdk.domain.bo.ProductPayParamBO;
 import com.zanxiang.sdk.domain.bo.WxPayConfigBO;
+import com.zanxiang.sdk.service.OrderService;
 import com.zanxiang.sdk.util.HttpUtil;
 import com.zanxiang.sdk.util.WxPayUtil;
 import com.zanxiang.sdk.util.XmlUtil;
@@ -74,6 +77,9 @@ public class WxPayService extends PayBaseService {
     @Autowired
     private RestTemplate restTemplate;
 
+    @Autowired
+    private OrderService orderService;
+
     @Override
     public ResultMap create(ProductPayParamBO product) {
         this.attach = product.getAttach();
@@ -175,6 +181,9 @@ public class WxPayService extends PayBaseService {
             log.error("微信h5支付urlCode转deepLink异常, urlCode:{}", urlCode);
             throw new BaseException("微信h5支付urlCode转deepLink异常");
         }
+        orderService.update(new LambdaUpdateWrapper<Order>()
+                .set(Order::getPayParam, deepLink)
+                .eq(Order::getOrderId, product.getOutTradeNo()));
         //返回结果
         return ResultMap.ok(product.getPayDevice(), deepLink, product.getOutTradeNo());
     }