flowerpig 6 месяцев назад
Родитель
Сommit
25fe187320

+ 55 - 7
webServer/src/channels/handlers/MiniappChannelHandler.ts

@@ -4,7 +4,7 @@ import {ChannelHandler, LoginResult, PaymentResult,} from "../interfaces/Channel
 import {ChannelConfig} from "../../config/channelConfig";
 import {ChannelConfigManager} from "../../utils/ChannelConfigManager";
 import {formatDate, getServerList} from "../../utils/common";
-import {Account} from "../../config/thirdParams";
+import {Account, MINI_APP_PRIVATE_KEY, MINI_APP_GAME_ID, DOUYIN_MINI_APP_PRIVATE_KEY, DOUYIN_MINI_APP_GAME_ID, MINI_APP_DOMAIN, MINI_APP_API_KEY, MINI_APP_STAT_API_KEY} from "../../config/thirdParams";
 import {PaymentHelper} from "../../utils/PaymentHelper";
 
 import Msg from "../../utils/msg";
@@ -15,6 +15,43 @@ const CryptoJS = require("crypto-js");
 const logger = require("../../utils/log");
 
 export class MiniappChannelHandler implements ChannelHandler {
+    /**
+     * 根据platform参数获取渠道11的配置
+     * @param platform 平台参数:miniapp(小程序)或 ttminiapp(抖音小程序)
+     * @returns 渠道配置对象
+     */
+    private getChannel11Config(platform: string): ChannelConfig {
+        const baseConfig = ChannelConfigManager.getConfig(11);
+        if (!baseConfig) {
+            throw new Error("渠道11配置不存在");
+        }
+
+        // 如果是抖音小程序,使用抖音的参数
+        if (platform === 'ttminiapp') {
+            return {
+                ...baseConfig,
+                platform: 'ttminiapp',
+                name: '抖音小程序',
+                paymentConfig: {
+                    ...baseConfig.paymentConfig,
+                    signKey: DOUYIN_MINI_APP_PRIVATE_KEY,
+                    gameId: DOUYIN_MINI_APP_GAME_ID,
+                }
+            };
+        } else {
+            // 默认使用小程序的参数
+            return {
+                ...baseConfig,
+                platform: 'miniapp',
+                name: '小程序',
+                paymentConfig: {
+                    ...baseConfig.paymentConfig,
+                    signKey: MINI_APP_PRIVATE_KEY,
+                    gameId: MINI_APP_GAME_ID,
+                }
+            };
+        }
+    }
     /**
      * 获取HTTPS代理配置
      * @returns HTTPS代理配置
@@ -48,7 +85,7 @@ export class MiniappChannelHandler implements ChannelHandler {
     async handleLogin(ctx: Context, config: ChannelConfig): Promise<LoginResult> {
         try {
             const data = ctx.request.body as any;
-            const platform = data.platform; // 平台参数:ios、Android、miniapp、h5
+            const platform = data.platform; // 平台参数:ios、Android、miniapp、ttminiapp、h5
 
             logger.info("统一登录请求", { platform, data });
 
@@ -56,8 +93,14 @@ export class MiniappChannelHandler implements ChannelHandler {
             if (platform === 'ios') {
                 return await this.handleIOSLogin(data, config);
             } else {
+                // 对于渠道11,根据platform参数动态获取配置
+                let actualConfig = config;
+                if (config.channelId === 11) {
+                    actualConfig = this.getChannel11Config(platform || 'miniapp');
+                    logger.info("渠道11动态配置", { platform, config: actualConfig });
+                }
                 // 默认使用小程序登录方式
-                return await this.handleMiniappLogin(data, config);
+                return await this.handleMiniappLogin(data, actualConfig);
             }
         } catch (error) {
             logger.error('统一登录错误:', error);
@@ -217,9 +260,11 @@ export class MiniappChannelHandler implements ChannelHandler {
     async handlePayment(ctx: Context, config: ChannelConfig): Promise<PaymentResult> {
         try {
             // 获取请求参数 - 支持GET和POST请求
-            const params = ctx.request.query as any;
+            const queryParams = ctx.request.query as any;
+            const bodyParams = ctx.request.body as any;
+            const params = { ...queryParams, ...bodyParams }; // 合并query和body参数,body优先
 
-            const platform = params.platform || 'miniapp'; // 平台参数:ios、Android、miniapp、h5,默认为miniapp
+            const platform = params.platform || 'miniapp'; // 平台参数:ios、Android、miniapp、ttminiapp、h5,默认为miniapp
             
             logger.info("统一支付回调请求", { platform, url: ctx.href, params: params });
 
@@ -238,8 +283,8 @@ export class MiniappChannelHandler implements ChannelHandler {
                 return await this.handleIOSPayment(params, iosConfig);
             } else {
                 // 默认使用小程序支付方式和渠道11的配置
-                const miniappConfig = ChannelConfigManager.getConfig(11);
-                if (!miniappConfig) {
+                const baseConfig = ChannelConfigManager.getConfig(11);
+                if (!baseConfig) {
                     logger.error("未找到小程序渠道配置");
                     return {
                         code: -1,
@@ -247,6 +292,9 @@ export class MiniappChannelHandler implements ChannelHandler {
                         data: null
                     };
                 }
+                // 根据platform参数动态获取配置
+                const miniappConfig = this.getChannel11Config(platform || 'miniapp');
+                logger.info("渠道11支付动态配置", { platform, config: miniappConfig });
                 return await this.handleMiniappPayment(params, miniappConfig);
             }
         } catch (error) {

+ 3 - 10
webServer/src/config/channelConfig.ts

@@ -22,11 +22,8 @@ import {
     QIAI_QUICK_H5_CALLBACK_KEY,
     QIAI_QUICK_H5_PRODUCT_CODE,
     QIAI_QUICK_H5_MD5_KEY,
-    MINI_APP_DOMAIN,
     MINI_APP_PRIVATE_KEY,
     MINI_APP_GAME_ID,
-    MINI_APP_API_KEY,
-    MINI_APP_STAT_API_KEY,
     SY_IOS_PRIVATE_KEY, 
     SY_IOS_GAME_ID,
     MIANYOU_LOGIN_KEY,
@@ -203,19 +200,15 @@ export const channelConfigs: Record<number, ChannelConfig> = {
         },
     },
     11: {
-        // 小程序
+        // 小程序/抖音小程序(根据platform参数动态选择配置)
+        // platform="miniapp" 使用小程序参数,platform="ttminiapp" 使用抖音参数
         channelId: 11,
         name: "小程序",
         platform: "miniapp",
         paymentConfig: {
             signKey: MINI_APP_PRIVATE_KEY,
-            apiUrl: MINI_APP_DOMAIN,
             gameId: MINI_APP_GAME_ID,
-        },
-        loginConfig: {
-            apiKey: MINI_APP_API_KEY,
-            statApiKey: MINI_APP_STAT_API_KEY,
-        },
+        }
     },
     12: {
         // ios

+ 5 - 1
webServer/src/config/thirdParams.ts

@@ -93,12 +93,16 @@ export const QIAI_QUICK_H5_PRODUCT_CODE = "80939198711722706880933346971719";
 
 //小程序
 
-export const MINI_APP_DOMAIN = "wefunol.com";
 export const MINI_APP_PRIVATE_KEY = "lxq05Tka0pXR8IxK5Imz61qF1XZVwhEj";
 export const MINI_APP_GAME_ID = "1540";
+export const MINI_APP_DOMAIN = "wefunol.com";
 export const MINI_APP_API_KEY = "your_api_key_here";
 export const MINI_APP_STAT_API_KEY = "your_stat_api_key_here";
 
+//抖音小程序
+export const DOUYIN_MINI_APP_PRIVATE_KEY = "wihLo5EXGq0Toc8Qftzkcnz7EBHB4hvg";
+export const DOUYIN_MINI_APP_GAME_ID = "1577";
+
 //圣扬ios
 export const SY_IOS_PRIVATE_KEY = "rDfOG8nq4y9dH0oXfUwghcBQqllmJwrR";
 export const SY_IOS_GAME_ID = "1550";

+ 2 - 1
webServer/src/controller/MiniAppController.ts

@@ -11,7 +11,8 @@ import {
   MINI_APP_PRIVATE_KEY,
   MINI_APP_GAME_ID,
   MINI_APP_API_KEY,
-  MINI_APP_STAT_API_KEY, Account
+  MINI_APP_STAT_API_KEY,
+  Account
 } from "../config/thirdParams";
 
 // 导入渠道处理器和配置