Просмотр исходного кода

fix : 微信支付延迟到账的问题, 配置初始化修改

bilingfeng 1 год назад
Родитель
Сommit
7ebdcf0e28

+ 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服务启动成功 <消息转发到后台处理> ( ´・・)ノ(._.`) \n" +
+        System.out.println("赞象SDK服务启动成功 <微信支付延迟到账的问题, 配置初始化修改> ( ´・・)ノ(._.`) \n" +
                 " ___________ _   __\n" +
                 "/  ___|  _  \\ | / /\n" +
                 "\\ `--.| | | | |/ / \n" +

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

@@ -148,7 +148,13 @@ public class WxPayService extends PayBaseService {
             log.info("回调参数中attach值为空");
             return null;
         }
-        WxPayConfigDTO config = this.configInit(gamePayWayService.getById(attachBO.getGamePayWayId()));
+        //查询订单
+        PlatformOrderDTO platformOrderDTO = orderService.getByOrderId(packageParams.get("out_trade_no"));
+        if (platformOrderDTO == null) {
+            log.info("回调参数中订单id无法查询到订单信息");
+            return null;
+        }
+        WxPayConfigDTO config = this.notifyConfigInit(platformOrderDTO, gamePayWayService.getById(attachBO.getGamePayWayId()));
         // 账号信息
         String key = config.getApiKey();
         // 判断签名是否正确
@@ -282,7 +288,7 @@ public class WxPayService extends PayBaseService {
         GamePayWayDTO gamePayWayDTO = gamePayWayService.getGamePayWay(platformOrderDTO.getGameId(),
                 platformOrderDTO.getPayWayId(), platformOrderDTO.getPayDeviceId());
         //初始化配置
-        WxPayConfigDTO config = this.configInit(gamePayWayDTO);
+        WxPayConfigDTO config = this.notifyConfigInit(platformOrderDTO, gamePayWayDTO);
         try {
             Map<String, String> paramData = new HashMap<>(6);
             paramData.put("appid", config.getAppId());
@@ -379,4 +385,26 @@ public class WxPayService extends PayBaseService {
         //赋值配置信息
         return payConfigBO;
     }
+
+    private WxPayConfigDTO notifyConfigInit(PlatformOrderDTO platformOrderDTO, GamePayWayDTO gamePayWayDTO) {
+        //商户信息
+        PayMerchantDTO payMerchantDTO = payMerchantService.getByMerchantNo(platformOrderDTO.getMerchantNo());
+        //支付应用信息
+        PayApplicationDTO payApplicationDTO;
+        //小程序支付, 客服支付, 公众号支付, 关联了盒子
+        if (PayDeviceEnum.getByPayWayIdList().contains(gamePayWayDTO.getPayDeviceId())) {
+            payApplicationDTO = payApplicationService.getPayApplicationByPayBoxId(gamePayWayDTO.getPayBoxId());
+        } else {
+            payApplicationDTO = payApplicationService.getPayApplicationByAppId(gamePayWayDTO.getAppId());
+        }
+        //支付配置参数
+        WxPayConfigDTO payConfigBO = JsonUtil.toObj(payMerchantDTO.getPayConfig(), WxPayConfigDTO.class);
+        payConfigBO.setAppId(payApplicationDTO.getAppId());
+        payConfigBO.setAppSecret(payApplicationDTO.getAppSecret());
+        payConfigBO.setAppletType(payApplicationDTO.getType());
+        payConfigBO.setGamePayWayId(gamePayWayDTO.getId());
+        payConfigBO.setMachName(payMerchantDTO.getMerchantName());
+        //赋值配置信息
+        return payConfigBO;
+    }
 }