|
|
@@ -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) {
|