Forráskód Böngészése

-fix : 本次提交解决以下问题
1. 安卓APP直投回传, 解决订单金额小于1元回传成0的问题
2. 久梦对接, 在小程序登录返回信息种添加字段返回accessToken字段
3. 久梦对接, 支付回调参数中新增参数orderId2
4. 久梦对接, 提供新街口, 根据gameAppId获取小程序accessToken
5. 久梦对接, 增加日志调试安卓APP鸿蒙系统无法识别gameId的问题

bilingfeng 9 hónapja
szülő
commit
e210a21cfd

+ 1 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/SDKApplication.java

@@ -23,7 +23,7 @@ public class SDKApplication {
 
     public static void main(String[] args) {
         SpringApplication.run(SDKApplication.class, args);
-        System.out.println("赞象SDK服务启动成功 <斗罗归因判断问题解决01> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <解决久梦对接相关问题, 解决订单回传小1元得问题> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

+ 2 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/adapter/WebHandlerAdapter.java

@@ -70,7 +70,8 @@ public class WebHandlerAdapter implements HandlerInterceptor {
         //签名验证
         GameExt gameExt = gameExtService.getByGameAppId(gameId);
         if (gameExt == null || Strings.isBlank(gameExt.getAppKey())) {
-            log.error("非法参数, 游戏id对应的前端密钥appKey不存在");
+            log.error("非法参数, 游戏id对应的前端密钥appKey不存在, gameId : {}, sign : {}, timestamp : {}, os : {}, deviceType : {}",
+                    gameId, sign, timestamp, os, deviceType);
             throw new BaseException(HttpStatusEnum.INVALID_PARAMS.getMsg());
         }
         String str = "appKey=" + gameExt.getAppKey() + "&gameId=" + gameId + "&timestamp=" + timestamp;

+ 10 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/controller/AppletController.java

@@ -1,5 +1,6 @@
 package com.zanxiang.game.module.sdk.controller;
 
+import com.zanxiang.game.module.sdk.annotation.PushDataCheck;
 import com.zanxiang.game.module.sdk.annotation.UnSignCheck;
 import com.zanxiang.game.module.sdk.pojo.param.MiniAppPayParam;
 import com.zanxiang.game.module.sdk.pojo.param.UserData;
@@ -43,6 +44,15 @@ public class AppletController {
     @Autowired
     private IPayApplicationService payApplicationService;
 
+    @UnSignCheck
+    @PushDataCheck
+    @ApiOperation(value = "获取微信小游戏token")
+    @GetMapping("/get/applet/accessToken")
+    @ApiResponses(value = {@ApiResponse(code = 200, message = "成功", response = String.class)})
+    public ResultVO<Map<String, String>> getAppletToken(@RequestParam String gameId) {
+        return ResultVO.ok(gameAppletService.getAppletToken(gameId));
+    }
+
     @UnSignCheck
     @ApiOperation(value = "小程序客服消息认证")
     @GetMapping("/applet/custom/msg/{appId}")

+ 6 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/pojo/vo/UserLoginVO.java

@@ -94,4 +94,10 @@ public class UserLoginVO {
      */
     @ApiModelProperty(notes = "是否注册用户")
     private Boolean regUser;
+
+    /**
+     * 微信小游戏的accessToken
+     */
+    @ApiModelProperty(notes = "微信小游戏的accessToken")
+    private String accessToken;
 }

+ 10 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/IGameAppletService.java

@@ -6,6 +6,8 @@ import com.zanxiang.game.module.sdk.pojo.dto.GameAppletDTO;
 import com.zanxiang.game.module.sdk.pojo.param.UserData;
 import com.zanxiang.game.module.sdk.pojo.vo.GameInitVO;
 
+import java.util.Map;
+
 /**
  * @author : lingfeng
  * @time : 2022-07-08
@@ -13,6 +15,14 @@ import com.zanxiang.game.module.sdk.pojo.vo.GameInitVO;
  */
 public interface IGameAppletService extends IService<GameApplet> {
 
+    /**
+     * 根据游戏外部唯一标志获取微信小游戏token
+     *
+     * @param gameAppId : CP游戏包唯一标识
+     * @return : 微信小游戏 appId, token
+     */
+    Map<String, String> getAppletToken(String gameAppId);
+
     /**
      * applet味精检查
      *

+ 2 - 1
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/CallBackServiceImpl.java

@@ -26,6 +26,7 @@ import org.apache.logging.log4j.util.Strings;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -477,7 +478,7 @@ public class CallBackServiceImpl implements ICallBackService {
                 .orderId(platformOrderDTO.getOrderId())
                 .agentKey(agent.getAgentKey())
                 .backPolicyId(agent.getBackPolicyId())
-                .rechargeMoney(platformOrderDTO.getAmount().longValue() * 100)
+                .rechargeMoney(platformOrderDTO.getAmount().multiply(new BigDecimal(100)).longValue())
                 .orderStatus(platformOrderDTO.getStatus())
                 .regTime(user.getCreateTime())
                 .createTime(platformOrderDTO.getCreateTime())

+ 24 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/GameAppletServiceImpl.java

@@ -17,6 +17,7 @@ import com.zanxiang.game.module.sdk.pojo.vo.GameInitVO;
 import com.zanxiang.game.module.sdk.service.IGameAppletService;
 import com.zanxiang.game.module.sdk.service.IGameExtService;
 import com.zanxiang.game.module.sdk.service.IGameService;
+import com.zanxiang.game.module.sdk.service.api.WxApiService;
 import com.zanxiang.game.module.sdk.service.pay.MiPayService;
 import com.zanxiang.game.module.sdk.util.SignUtil;
 import com.zanxiang.module.util.JsonUtil;
@@ -58,6 +59,29 @@ public class GameAppletServiceImpl extends ServiceImpl<GameAppletMapper, GameApp
     @Autowired
     private MiPayService miPayService;
 
+    @Autowired
+    private WxApiService wxApiService;
+
+    @Autowired
+    private IGameAppletService gameAppletService;
+
+    @Override
+    public Map<String, String> getAppletToken(String gameAppId) {
+        GameExt gameExt = gameExtService.getByGameAppId(gameAppId);
+        if (gameExt == null) {
+            throw new BaseException("参数错误, 游戏配置信息不存在");
+        }
+        GameAppletDTO gameAppletDTO = gameAppletService.getByGameId(gameExt.getGameId());
+        if (gameAppletDTO == null) {
+            throw new BaseException("参数错误, 微信小游戏配置信息不存在");
+        }
+        String accessToken = wxApiService.getAccessToken(gameAppletDTO.getAppId(), gameAppletDTO.getAppSecret());
+        Map<String, String> resultMap = new HashMap<>(2);
+        resultMap.put("appId", gameAppletDTO.getAppId());
+        resultMap.put("accessToken", accessToken);
+        return resultMap;
+    }
+
     @Override
     public String appletMsgCheck(String appId, String signature, String timestamp, String nonce, String echoStr) throws Exception {
         log.error("appId : {}, signature : {}, timestamp : {}, nonce : {}, echoStr : {}", appId, signature, timestamp, nonce, echoStr);

+ 2 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/LoginServiceImpl.java

@@ -145,6 +145,7 @@ public class LoginServiceImpl implements IRegisterLoginService {
             //返回登录信息
             UserLoginVO userLoginVO = this.createUserLoginVO(user, userData);
             userLoginVO.setAppletShellSwitch(gameAppletShellService.getUserShellSwitch(user, Boolean.FALSE, request));
+            userLoginVO.setAccessToken(wxApiService.getAccessToken(gameAppletDTO.getAppId(), gameAppletDTO.getAppSecret()));
             log.error("返回用户登录信息, userLoginVO : {}", JsonUtil.toString(userLoginVO));
             return ResultVO.ok(userLoginVO);
         }
@@ -153,6 +154,7 @@ public class LoginServiceImpl implements IRegisterLoginService {
         //返回登录信息
         UserLoginVO userLoginVO = this.createUserLoginVO(user, userData);
         userLoginVO.setAppletShellSwitch(gameAppletShellService.getUserShellSwitch(user, Boolean.TRUE, request));
+        userLoginVO.setAccessToken(wxApiService.getAccessToken(gameAppletDTO.getAppId(), gameAppletDTO.getAppSecret()));
         log.error("返回用户登录信息, userLoginVO : {}", JsonUtil.toString(userLoginVO));
         return ResultVO.ok(userLoginVO);
     }

+ 1 - 0
game-module/game-module-sdk/src/main/java/com/zanxiang/game/module/sdk/service/impl/PerformOrderServiceImpl.java

@@ -113,6 +113,7 @@ public class PerformOrderServiceImpl implements IPerformOrderService {
         map.put("orderId", orderInfo.getCpOrderId());
         map.put("ext", URIUtil.encodeURIComponent(orderInfo.getExt()));
         map.put("sign", this.paySign(orderInfo.getGameId(), map));
+        map.put("orderId2", orderInfo.getOrderId());
         //url
         String url = URIUtil.fillUrlParams(cpPaybackUrl, map, false);
         String resultStr;