Browse Source

feat : 支付管理修改

bilingfeng 2 years ago
parent
commit
e5a605572f
16 changed files with 322 additions and 55 deletions
  1. 3 3
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/controller/PayController.java
  2. 62 0
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/dto/GamePayWayDTO.java
  3. 42 0
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/dto/PayApplicationDTO.java
  4. 42 0
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/dto/PayMerchantDTO.java
  5. 3 3
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/enums/PayTypeEnum.java
  6. 11 0
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/GamePayWayService.java
  7. 18 2
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/GamePayWayServiceImpl.java
  8. 4 3
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/OrderPayServiceImpl.java
  9. 7 1
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/OrderServiceImpl.java
  10. 53 30
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PayApplicationServiceImpl.java
  11. 14 0
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PayMerchantServiceImpl.java
  12. 14 9
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PerformOrderServiceImpl.java
  13. 9 0
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/PayApplicationService.java
  14. 8 0
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/PayMerchantService.java
  15. 15 0
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/pay/PayBaseService.java
  16. 17 4
      game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/pay/WxPayService.java

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

@@ -74,14 +74,14 @@ public class PayController {
     @ApiOperation(value = "支付宝支付异步回调(二维码、H5、网站)")
     @RequestMapping(value = "/notify", method = RequestMethod.POST)
     public String aliPayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        return orderPayService.notify(request, response, PayWayEnum.ALIPAY.getNum());
+        return orderPayService.notify(request, response, PayWayEnum.ALI_PAY.getPayWayId());
     }
 
     @UnSignCheck
     @ApiOperation(value = "微信支付回调")
     @RequestMapping(value = "/wxPayNotify", method = RequestMethod.POST)
     public String wxPayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        return orderPayService.notify(request, response, PayWayEnum.WXPAY.getNum());
+        return orderPayService.notify(request, response, PayWayEnum.WX_PAY.getPayWayId());
     }
 
     @UnSignCheck
@@ -95,7 +95,7 @@ public class PayController {
     @ApiOperation(value = "支付宝支付同步回调(二维码、H5、网站)")
     @RequestMapping(value = "/alipaySynNotify", method = RequestMethod.GET)
     public ResultMap synNotify(HttpServletRequest request) {
-        return orderPayService.synNotify(request, PayWayEnum.ALIPAY.getNum());
+        return orderPayService.synNotify(request, PayWayEnum.ALI_PAY.getPayWayId());
     }
 
     @ApiOperation(value = "获取订单支付结果")

+ 62 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/dto/GamePayWayDTO.java

@@ -0,0 +1,62 @@
+package com.zanxiang.sdk.domain.dto;
+
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-01-12
+ * @description : 游戏支付配置
+ */
+@Data
+public class GamePayWayDTO {
+
+    /**
+     * 主键id
+     */
+    private Long id;
+
+    /**
+     * 游戏id
+     */
+    private Long gameId;
+
+    /**
+     * 支付渠道id
+     */
+    private Long payWayId;
+
+    /**
+     * 支付方式id
+     */
+    private Long payDeviceId;
+
+    /**
+     * 支付名称
+     */
+    private String payName;
+
+    /**
+     * 支付盒子id
+     */
+    private Long payBoxId;
+
+    /**
+     * 应用appId
+     */
+    private String appId;
+
+    /**
+     * 应用名称
+     */
+    private String appName;
+
+    /**
+     * 商户号
+     */
+    private String merchantNo;
+
+    /**
+     * 支付配置(米大师)
+     */
+    private String payConfig;
+}

+ 42 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/dto/PayApplicationDTO.java

@@ -0,0 +1,42 @@
+package com.zanxiang.sdk.domain.dto;
+
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-01-12
+ * @description : 支付商城小程序
+ */
+@Data
+public class PayApplicationDTO {
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 应用appId
+     */
+    private String appId;
+
+    /**
+     * 应用原始id
+     */
+    private String ghId;
+
+    /**
+     * 应用名称
+     */
+    private String appName;
+
+    /**
+     * 类型,1 : 微信商城小程序, 2: 微信公众号
+     */
+    private Integer type;
+
+    /**
+     * 应用密钥
+     */
+    private String appSecret;
+}

+ 42 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/dto/PayMerchantDTO.java

@@ -0,0 +1,42 @@
+package com.zanxiang.sdk.domain.dto;
+
+import lombok.Data;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-01-12
+ * @description : 商户号信息
+ */
+@Data
+public class PayMerchantDTO {
+
+    /**
+     * 主键id
+     */
+    private Long id;
+
+    /**
+     * 商户号
+     */
+    private String merchantNo;
+
+    /**
+     * 商户名称
+     */
+    private String merchantName;
+
+    /**
+     * 支付渠道id
+     */
+    private Long payWayId;
+
+    /**
+     * 支付渠道名称
+     */
+    private String payWayName;
+
+    /**
+     * 支付配置
+     */
+    private String payConfig;
+}

+ 3 - 3
game-module/game-sdk/src/main/java/com/zanxiang/sdk/enums/PayTypeEnum.java

@@ -21,17 +21,17 @@ public enum PayTypeEnum {
     /**
      * 支付宝
      */
-    ALI_PAY(1, "AliPay", AliPayService.class),
+    ALI_PAY(1, "ALI_PAY", AliPayService.class),
 
     /**
      * 微信支付
      */
-    WX_PAY(2, "WxPay", WxPayService.class),
+    WX_PAY(2, "WX_PAY", WxPayService.class),
 
     /**
      * 米大师支付
      */
-    MI_PAY(3, "MiPay", MiPayService.class);
+    MI_PAY(3, "MI_PAY", MiPayService.class);
 
     /**
      * 支付方式

+ 11 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/GamePayWayService.java

@@ -2,6 +2,7 @@ package com.zanxiang.sdk.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.mybatis.entity.GamePayWay;
+import com.zanxiang.sdk.domain.dto.GamePayWayDTO;
 import org.springframework.stereotype.Component;
 
 /**
@@ -26,4 +27,14 @@ public interface GamePayWayService extends IService<GamePayWay> {
      * @return
      */
     GamePayWay getPayWayToOrderPay(String gameId, Integer payType);
+
+    /**
+     * 获取游戏支付配置
+     *
+     * @param gameId      游戏id
+     * @param payWayId    支付方式id
+     * @param payDeviceId 支付设备id
+     * @return {@link GamePayWayDTO}
+     */
+    GamePayWayDTO getGamePayWay(String gameId, Long payWayId, Long payDeviceId);
 }

+ 18 - 2
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/GamePayWayServiceImpl.java

@@ -3,11 +3,13 @@ package com.zanxiang.sdk.service.Impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zanxiang.common.enums.DeleteEnum;
-import com.zanxiang.common.enums.MaxPayLock;
 import com.zanxiang.common.enums.StatusEnum;
+import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.common.utils.StringUtils;
+import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.mybatis.entity.GamePayWay;
 import com.zanxiang.mybatis.mapper.GamePayWayMapper;
+import com.zanxiang.sdk.domain.dto.GamePayWayDTO;
 import com.zanxiang.sdk.service.GamePayWayService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -32,7 +34,6 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
                 .eq(GamePayWay::getPayWayId, payType)
                 .eq(GamePayWay::getIsDelete, DeleteEnum.NO.getCode())
                 .eq(GamePayWay::getStatus, StatusEnum.YES.getCode())
-                .eq(GamePayWay::getMaxPayLock, MaxPayLock.UNLOCK.getCode())
                 .last("limit 1")
                 .orderByDesc(GamePayWay::getCreateTime));
         if (payInfo == null) {
@@ -43,4 +44,19 @@ public class GamePayWayServiceImpl extends ServiceImpl<GamePayWayMapper, GamePay
         }
         return payInfo;
     }
+
+    @Override
+    public GamePayWayDTO getGamePayWay(String gameId, Long payWayId, Long payDeviceId) {
+        GamePayWay gamePayWay = getOne(new LambdaQueryWrapper<GamePayWay>()
+                .eq(GamePayWay::getGameId, gameId)
+                .eq(GamePayWay::getPayWayId, payWayId)
+                .eq(GamePayWay::getPayDeviceId, payDeviceId)
+                .eq(GamePayWay::getIsDelete, DeleteEnum.NO.getCode())
+                .eq(GamePayWay::getStatus, StatusEnum.YES.getCode()));
+        if (gamePayWay == null) {
+            log.error("参数错误, 游戏支付配置信息不存在, gameId : {}, payWayId : {}, payDeviceId : {}", gameId, payWayId, payDeviceId);
+            throw new BaseException("参数错误, 游戏支付配置信息不存在");
+        }
+        return BeanUtil.copy(gamePayWay, GamePayWayDTO.class);
+    }
 }

+ 4 - 3
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/OrderPayServiceImpl.java

@@ -5,6 +5,7 @@ import com.zanxiang.common.domain.ResultMap;
 import com.zanxiang.common.enums.HttpStatusEnum;
 import com.zanxiang.common.enums.OrderStateEnum;
 import com.zanxiang.common.enums.PayDeviceEnum;
+import com.zanxiang.common.enums.PayWayEnum;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.common.utils.SpringUtils;
 import com.zanxiang.module.util.JsonUtil;
@@ -81,7 +82,7 @@ public class OrderPayServiceImpl implements OrderPayService {
                 .deviceSystem(order.getDeviceSystem())
                 .spbillCreateIp(IpUtil.getRealIp(request))
                 .outTradeNo(order.getOrderId())
-                .payWay(2)
+                .payWay(PayWayEnum.WX_PAY.getPayWayId())
                 .code(code)
                 .build();
         //调起支付
@@ -111,8 +112,8 @@ public class OrderPayServiceImpl implements OrderPayService {
         //创建订单
         orderService.createOrder(product, userData);
         //判断游戏类型
-        if (Objects.equals(PayDeviceEnum.MINI_APP_PAY.getCode(), product.getPayDevice())
-                || Objects.equals(PayDeviceEnum.CUSTOM_PAY.getCode(), product.getPayDevice())) {
+        if (Objects.equals(PayDeviceEnum.APPLET_PAY.getPayDeviceId(), product.getPayDevice())
+                || Objects.equals(PayDeviceEnum.CUSTOM_PAY.getPayDeviceId(), product.getPayDevice())) {
             log.error("单独生成订单, 不下单");
             return ResultMap.ok(product.getOrderId());
         }

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

@@ -9,6 +9,7 @@ import com.zanxiang.common.utils.bean.BeanUtils;
 import com.zanxiang.mybatis.entity.*;
 import com.zanxiang.mybatis.mapper.OrderMapper;
 import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
+import com.zanxiang.sdk.domain.dto.PayMerchantDTO;
 import com.zanxiang.sdk.domain.dto.PlatformOrderDTO;
 import com.zanxiang.sdk.domain.params.ProductPayParam;
 import com.zanxiang.sdk.domain.params.UserData;
@@ -56,6 +57,9 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Autowired
     private GamePayWayService gamePayWayService;
 
+    @Autowired
+    private PayMerchantService payMerchantService;
+
     /**
      * 创建订单
      *
@@ -95,6 +99,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         }
         //游戏支付配置信息
         GamePayWay gamePayWay = gamePayWayService.getPayWayToOrderPay(String.valueOf(gameId), payParam.getPayWay());
+        //商户信息 todo : 盒子和小程序查询商户要根据盒子查询
+        PayMerchantDTO payMerchantDTO = payMerchantService.getByMerchantNo(gamePayWay.getMerchantNo());
         //生成订单id
         String orderNum = this.getOrderNum(userData.getUserId());
         //用户已有订单数
@@ -128,7 +134,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 .regTime(user.getCreateTime())
                 .deviceSystem(userData.getDeviceSystem())
                 .merchantNo(gamePayWay.getMerchantNo())
-                .merchantName(gamePayWay.getMerchantName())
+                .merchantName(payMerchantDTO.getMerchantName())
                 .payWayId(gamePayWay.getPayWayId())
                 .regGameId(user.getGameId())
                 .callBackStatus(CallBackEnum.UN_CALL_BACK.getCallBackStatus())

+ 53 - 30
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PayApplicationServiceImpl.java

@@ -6,11 +6,13 @@ import com.zanxiang.common.constant.Constants;
 import com.zanxiang.common.domain.ResultMap;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.module.util.JsonUtil;
+import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.module.web.util.IpUtil;
 import com.zanxiang.mybatis.entity.PayApplication;
 import com.zanxiang.mybatis.entity.PayMerchant;
 import com.zanxiang.mybatis.mapper.PayApplicationMapper;
 import com.zanxiang.sdk.constant.WxPayConstants;
+import com.zanxiang.sdk.domain.dto.PayApplicationDTO;
 import com.zanxiang.sdk.domain.params.MiniAppPayParam;
 import com.zanxiang.sdk.service.PayApplicationService;
 import com.zanxiang.sdk.service.PayMerchantService;
@@ -47,17 +49,24 @@ public class PayApplicationServiceImpl extends ServiceImpl<PayApplicationMapper,
     @Autowired
     private PayMerchantService payMerchantService;
 
-
     private static final String WX_PAY_JSAPI = "JSAPI";
 
     private static final String SIGN_TYPE = "MD5";
 
-    /**
-     * 微信回调接口
-     */
     @Value("${payConfig.wx.returnUrl}")
     private String notifyUrl;
 
+    @Override
+    public PayApplicationDTO getPayApplication(String appId) {
+        PayApplication payApplication = super.getOne(new LambdaQueryWrapper<PayApplication>()
+                .eq(PayApplication::getAppId, appId));
+        if (payApplication == null) {
+            log.error("参数错误, 支付商城小程序信息不存在, appId : {}", appId);
+            throw new BaseException("参数错误, 支付商城小程序信息不存在");
+        }
+        return BeanUtil.copy(payApplication, PayApplicationDTO.class);
+    }
+
     @Override
     public ResultMap miniAppPay(MiniAppPayParam payParam, HttpServletRequest request) {
         //查询商城小程序信息
@@ -67,7 +76,14 @@ public class PayApplicationServiceImpl extends ServiceImpl<PayApplicationMapper,
             throw new BaseException("参数错误, 支付商城小程序信息不存在");
         }
         //查询商户信息
-        PayMerchant payMerchant = payMerchantService.getById(4L);
+        PayMerchant payMerchant = payMerchantService.getById(3L);
+
+
+
+
+
+
+
         Map<String, String> payConfigMap = JsonUtil.toMap(payMerchant.getPayConfig(), Map.class, String.class);
         //获取用户openId
         String openId = wxApiService.getAppletOpenId(payParam.getCode(), payApplication.getAppId(), payApplication.getAppSecret());
@@ -84,7 +100,7 @@ public class PayApplicationServiceImpl extends ServiceImpl<PayApplicationMapper,
             paramMap.put("ip", IpUtil.getRealIp(request));
             paramMap.put("openId", openId);
             paramMap.put("apiKey", payConfigMap.get("apiKey"));
-            Map<String, String> attachMap = new HashMap<>(2);
+            Map<String, String> attachMap = new HashMap<>(3);
             attachMap.put("appId", payApplication.getAppId());
             attachMap.put("orderId", orderId);
             attachMap.put("merchantNo", payMerchant.getMerchantNo());
@@ -92,37 +108,44 @@ public class PayApplicationServiceImpl extends ServiceImpl<PayApplicationMapper,
             log.error("下单参数, paramMap : {}", JsonUtil.toString(paramMap));
             //下单
             Map<String, String> successMap = this.unifiedOrder(paramMap);
-            //支付id
-            String prepayId = successMap.get("prepay_id");
-            // 时间戳转化成字符串,否则前端wx.requestPayment方法会报签名错误
-            String createTime = String.valueOf(System.currentTimeMillis() / 1000);
-            // 随机字符串
-            String nonceStr = WxPayUtil.generateNonceStr();
-            // 获取统一下单回调结果, 二次签名
-            HashMap<String, String> map = new HashMap<>(5);
-            map.put("appId", payApplication.getAppId());
-            map.put("nonceStr", nonceStr);
-            map.put("timeStamp", createTime);
-            map.put("package", "prepay_id=" + prepayId);
-            map.put("signType", SIGN_TYPE);
-            // 再次签名sign,这个签名用于小程序端调用支付方法
-            String sign = WxPayUtil.generateSignature(map, payConfigMap.get("apiKey"));
-            //组装返回前端支付参数
-            Map<Object, Object> miniMap = new HashMap<>(5);
-            miniMap.put("paySign", sign);
-            miniMap.put("signType", SIGN_TYPE);
-            miniMap.put("timeStamp", createTime);
-            miniMap.put("package", successMap);
-            miniMap.put("nonceStr", nonceStr);
-            miniMap.put("orderId", orderId);
+            //构造支付参数
+            Map<Object, Object> payParamMap = this.payParamMap(orderId, payApplication.getAppId(), payConfigMap.get("apiKey"), successMap);
             //返回
-            return ResultMap.ok(miniMap);
+            return ResultMap.ok(payParamMap);
         } catch (Exception e) {
             log.error("微信小程序支付通信异常, 订单号:{}, e : {}", orderId, e.getMessage());
             return ResultMap.error();
         }
     }
 
+    private Map<Object, Object> payParamMap(String orderId, String appId, String apiKey, Map<String, String> successMap) {
+        //支付id
+        String prepayId = successMap.get("prepay_id");
+        // 时间戳转化成字符串,否则前端wx.requestPayment方法会报签名错误
+        String createTime = String.valueOf(System.currentTimeMillis() / 1000);
+        // 随机字符串
+        String nonceStr = WxPayUtil.generateNonceStr();
+        // 获取统一下单回调结果, 二次签名
+        HashMap<String, String> map = new HashMap<>(5);
+        map.put("appId", appId);
+        map.put("nonceStr", nonceStr);
+        map.put("timeStamp", createTime);
+        map.put("package", "prepay_id=" + prepayId);
+        map.put("signType", SIGN_TYPE);
+        // 再次签名sign,这个签名用于小程序端调用支付方法
+        String sign = WxPayUtil.generateSignature(map, apiKey);
+        //组装返回前端支付参数
+        Map<Object, Object> payParamMap = new HashMap<>(5);
+        payParamMap.put("paySign", sign);
+        payParamMap.put("signType", SIGN_TYPE);
+        payParamMap.put("timeStamp", createTime);
+        payParamMap.put("package", successMap);
+        payParamMap.put("nonceStr", nonceStr);
+        payParamMap.put("orderId", orderId);
+        //返回数据
+        return payParamMap;
+    }
+
     private String getOrderNum(String openId) {
         //时间(精确到毫秒)
         DateTimeFormatter ofPattern = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");

+ 14 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PayMerchantServiceImpl.java

@@ -1,8 +1,12 @@
 package com.zanxiang.sdk.service.Impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zanxiang.common.exception.BaseException;
+import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.mybatis.entity.PayMerchant;
 import com.zanxiang.mybatis.mapper.PayMerchantMapper;
+import com.zanxiang.sdk.domain.dto.PayMerchantDTO;
 import com.zanxiang.sdk.service.PayMerchantService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -17,4 +21,14 @@ import org.springframework.stereotype.Service;
 @Service
 public class PayMerchantServiceImpl extends ServiceImpl<PayMerchantMapper, PayMerchant> implements PayMerchantService {
 
+    @Override
+    public PayMerchantDTO getByMerchantNo(String merchantNo) {
+        PayMerchant payMerchant = super.getOne(new LambdaQueryWrapper<PayMerchant>()
+                .eq(PayMerchant::getMerchantNo, merchantNo));
+        if (payMerchant == null) {
+            log.error("参数错误, 商户信息不存在, merchantNo : {}", merchantNo);
+            throw new BaseException("参数错误, 商户信息不存在");
+        }
+        return BeanUtil.copy(payMerchant, PayMerchantDTO.class);
+    }
 }

+ 14 - 9
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/Impl/PerformOrderServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zanxiang.sdk.service.Impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -239,15 +240,19 @@ public class PerformOrderServiceImpl implements PerformOrderService {
                 log.error("订单:{} 更新商户号统计时,获取GamePayway表id:{}信息为空", orderInfo.getOrderId(), orderInfo.getGamePaywayId());
                 return false;
             }
-            if (gamePayWayInfo.getPayMerchantId() <= 0) {
-                log.error("订单:{} 更新商户号统计时,获取GamePayway表id:{}信息中PayMerchantId为空", orderInfo.getOrderId(), orderInfo.getGamePaywayId());
-                return false;
-            }
-            PayMerchant payMerchantInfo = payMerchantService.getById(gamePayWayInfo.getPayMerchantId());
-            if (Objects.isNull(payMerchantInfo)) {
-                log.error("订单:{} 更新商户号统计时,获取PayMerchant表id:{}信息为空", orderInfo.getOrderId(), gamePayWayInfo.getPayMerchantId());
-                return false;
-            }
+            //todo : 商户统计要修改
+//            if (gamePayWayInfo.getPayMerchantId() <= 0) {
+//                log.error("订单:{} 更新商户号统计时,获取GamePayway表id:{}信息中PayMerchantId为空", orderInfo.getOrderId(), orderInfo.getGamePaywayId());
+//                return false;
+//            }
+//            PayMerchant payMerchantInfo = payMerchantService.getById(gamePayWayInfo.getPayMerchantId());
+//            if (Objects.isNull(payMerchantInfo)) {
+//                log.error("订单:{} 更新商户号统计时,获取PayMerchant表id:{}信息为空", orderInfo.getOrderId(), gamePayWayInfo.getPayMerchantId());
+//                return false;
+//            }
+            PayMerchant payMerchantInfo = payMerchantService.getOne(new LambdaQueryWrapper<PayMerchant>()
+                    .eq(PayMerchant::getMerchantNo, gamePayWayInfo.getMerchantNo()));
+
             BigDecimal amount = orderInfo.getAmount();
             LocalDateTime updateTime = payMerchantInfo.getDayUpdateDate();
             Date date = new Date();

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

@@ -3,6 +3,7 @@ package com.zanxiang.sdk.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.common.domain.ResultMap;
 import com.zanxiang.mybatis.entity.PayApplication;
+import com.zanxiang.sdk.domain.dto.PayApplicationDTO;
 import com.zanxiang.sdk.domain.params.MiniAppPayParam;
 
 import javax.servlet.http.HttpServletRequest;
@@ -15,6 +16,14 @@ import javax.servlet.http.HttpServletRequest;
  */
 public interface PayApplicationService extends IService<PayApplication> {
 
+    /**
+     * 获得支付应用程序
+     *
+     * @param appId 应用程序id
+     * @return {@link PayApplicationDTO}
+     */
+    PayApplicationDTO getPayApplication(String appId);
+
     /**
      * 迷你应用程序支付
      *

+ 8 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/PayMerchantService.java

@@ -2,6 +2,7 @@ package com.zanxiang.sdk.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zanxiang.mybatis.entity.PayMerchant;
+import com.zanxiang.sdk.domain.dto.PayMerchantDTO;
 
 /**
  * 游戏支付商户配置表
@@ -11,4 +12,11 @@ import com.zanxiang.mybatis.entity.PayMerchant;
  */
 public interface PayMerchantService extends IService<PayMerchant> {
 
+    /**
+     * 由商户id查询
+     *
+     * @param merchantNo 商户id
+     * @return {@link PayMerchantDTO}
+     */
+    PayMerchantDTO getByMerchantNo(String merchantNo);
 }

+ 15 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/pay/PayBaseService.java

@@ -9,6 +9,7 @@ import com.zanxiang.mybatis.entity.Order;
 import com.zanxiang.sdk.domain.bo.PlatformOrderBO;
 import com.zanxiang.sdk.domain.bo.ProductPayAttachParamBO;
 import com.zanxiang.sdk.domain.bo.ProductPayParamBO;
+import com.zanxiang.sdk.domain.dto.GamePayWayDTO;
 import com.zanxiang.sdk.domain.dto.PlatformOrderDTO;
 import com.zanxiang.sdk.service.GamePayWayService;
 import com.zanxiang.sdk.service.OrderService;
@@ -118,6 +119,20 @@ public abstract class PayBaseService {
         return payInfo.getPayConfig();
     }
 
+    /**
+     * 获取游戏支付配置
+     *
+     * @param gameId      游戏id
+     * @param payWayId    支付方式id
+     * @param payDeviceId 支付设备id
+     * @return {@link GamePayWayDTO}
+     */
+    public GamePayWayDTO getPayConfig(String gameId, Long payWayId, Long payDeviceId) {
+        GamePayWayDTO gamePayWayDTO = gamePayWayService.getGamePayWay(gameId, payWayId, payDeviceId);
+        this.attach.setGamePayWayId(String.valueOf(gamePayWayDTO.getId()));
+        return gamePayWayDTO;
+    }
+
     /**
      * 获取支付配置
      *

+ 17 - 4
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/pay/WxPayService.java

@@ -6,12 +6,16 @@ import com.zanxiang.common.enums.DeleteEnum;
 import com.zanxiang.common.enums.HttpStatusEnum;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.module.util.JsonUtil;
+import com.zanxiang.module.util.bean.BeanUtil;
 import com.zanxiang.mybatis.entity.OrderPayParam;
 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.domain.dto.GamePayWayDTO;
+import com.zanxiang.sdk.domain.dto.PayMerchantDTO;
 import com.zanxiang.sdk.service.OrderPayParamService;
+import com.zanxiang.sdk.service.PayMerchantService;
 import com.zanxiang.sdk.service.api.WxApiService;
 import com.zanxiang.sdk.util.HttpUtil;
 import com.zanxiang.sdk.util.WxPayUtil;
@@ -22,7 +26,6 @@ import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import org.springframework.web.client.RestTemplate;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -76,15 +79,15 @@ public class WxPayService extends PayBaseService {
      */
     private WxPayConfigBO config;
 
-    @Autowired
-    private RestTemplate restTemplate;
-
     @Autowired
     private OrderPayParamService orderPayParamService;
 
     @Autowired
     private WxApiService wxApiService;
 
+    @Autowired
+    private PayMerchantService payMerchantService;
+
     @Override
     public ResultMap create(ProductPayParamBO product) {
         this.attach = product.getAttach();
@@ -289,6 +292,16 @@ public class WxPayService extends PayBaseService {
         this.config = JsonUtil.toObj(obj, WxPayConfigBO.class);
     }
 
+    /**
+     * 配置初始化
+     */
+    public void configInit(GamePayWayDTO gamePayWayDTO) {
+        PayMerchantDTO payMerchantDTO = payMerchantService.getByMerchantNo(gamePayWayDTO.getMerchantNo());
+        WxPayConfigBO payConfigBO = BeanUtil.copy(payMerchantDTO, WxPayConfigBO.class);
+        //todo :
+       // this.config = JsonUtil.toObj(obj, WxPayConfigBO.class);
+    }
+
     @Override
     public ResultMap synNotify(HttpServletRequest request) {
         return null;