瀏覽代碼

feat : 支付调试修改

bilingfeng 2 年之前
父節點
當前提交
d4e236beeb

+ 34 - 0
game-module/game-common/src/main/java/com/zanxiang/common/enums/AppletTypeEnum.java

@@ -0,0 +1,34 @@
+package com.zanxiang.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author : lingfeng
+ * @time : 2023-01-13
+ * @description : 微信应用类型
+ */
+@Getter
+@AllArgsConstructor
+public enum AppletTypeEnum {
+
+    /**
+     * 小程序
+     */
+    APPLET_MINI(1, "小程序"),
+
+    /**
+     * 公众号
+     */
+    APPLET_MP(2, "公众号");
+
+    /**
+     * 状态
+     */
+    private Integer type;
+
+    /**
+     * 描述
+     */
+    private String describe;
+}

+ 25 - 2
game-module/game-sdk/src/main/java/com/zanxiang/sdk/domain/bo/WxPayConfigBO.java

@@ -8,11 +8,34 @@ import lombok.Data;
  */
 @Data
 public class WxPayConfigBO {
+
+    /**
+     * 应用appId
+     */
     private String appId;
+
+    /**
+     * 应用密钥
+     */
     private String appSecret;
+
+    /**
+     * 应用类型
+     */
+    private Integer appletType;
+
+    /**
+     * 商户id
+     */
     private String mchId;
+
+    /**
+     * 商户api密钥
+     */
     private String apiKey;
+
+    /**
+     * 签名加密类型
+     */
     private String signType;
-    private String certPath;
-    private String notifyUrl;
 }

+ 22 - 0
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/api/WxApiService.java

@@ -1,5 +1,6 @@
 package com.zanxiang.sdk.service.api;
 
+import com.zanxiang.common.enums.AppletTypeEnum;
 import com.zanxiang.common.enums.ExpireTimeEnum;
 import com.zanxiang.common.exception.BaseException;
 import com.zanxiang.common.utils.URIUtil;
@@ -14,6 +15,7 @@ import org.springframework.web.client.RestTemplate;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Objects;
 
 /**
  * @author : lingfeng
@@ -30,6 +32,26 @@ public class WxApiService {
     @Autowired
     private RedisUtil<String> redisUtil;
 
+    /**
+     * 根据应用类型获取openId
+     *
+     * @param code   : 授权code
+     * @param appId  : 应用id
+     * @param secret : 应用密钥
+     * @param type   : 应用类型
+     * @return {@link String}
+     */
+    public String getOpenIdByType(String code, String appId, String secret, Integer type) {
+        if (Objects.equals(type, AppletTypeEnum.APPLET_MINI.getType())) {
+            return this.getAppletOpenId(code, appId, secret);
+        }
+        if (Objects.equals(type, AppletTypeEnum.APPLET_MP.getType())) {
+            return this.getMpOpenId(code, appId, secret);
+        }
+        log.error("应用类型不存在, 获取应用openId失败");
+        throw new BaseException("应用类型不存在, 获取应用openId失败");
+    }
+
     /**
      * 小程序/小游戏获取用户应用openId
      *

+ 2 - 1
game-module/game-sdk/src/main/java/com/zanxiang/sdk/service/pay/WxPayService.java

@@ -203,7 +203,7 @@ public class WxPayService extends PayBaseService {
     private ResultMap miniAppPay(ProductPayParamBO product) {
         try {
             //获取用户openId
-            String openId = wxApiService.getMpOpenId(product.getCode(), config.getAppId(), config.getAppSecret());
+            String openId = wxApiService.getOpenIdByType(product.getCode(), config.getAppId(), config.getAppSecret(), config.getAppletType());
             //下单
             Map<String, String> successMap = this.unifiedOrder(product, WX_PAY_JSAPI, openId);
             // 支付参数
@@ -296,6 +296,7 @@ public class WxPayService extends PayBaseService {
         PayApplicationDTO payApplicationDTO = payApplicationService.getPayApplication(gamePayWayDTO.getAppId());
         payConfigBO.setAppId(payApplicationDTO.getAppId());
         payConfigBO.setAppSecret(payApplicationDTO.getAppSecret());
+        payConfigBO.setAppletType(payApplicationDTO.getType());
         //赋值配置信息
         this.config = payConfigBO;
         log.error("初始化的支付配置信息, config : {}", JsonUtil.toString(this.config));