主要更新: 1. 按H5网页端完全重构匹配功能(match页面) - 4种匹配类型: 创业合伙/资源对接/导师顾问/团队招募 - 资源对接等类型弹出手机号/微信号输入框 - 去掉重新匹配按钮,改为返回按钮 2. 修复所有卡片对齐和宽度问题 - 目录页附录卡片居中 - 首页阅读进度卡片满宽度 - 我的页面菜单卡片对齐 - 推广中心分享卡片统一宽度 3. 修复目录页图标和文字对齐 - section-icon固定40rpx宽高 - section-title与图标垂直居中 4. 更新真实完整文章标题(62篇) - 从book目录读取真实markdown文件名 - 替换之前的简化标题 5. 新增文章数据API - /api/db/chapters - 获取完整书籍结构 - 支持按ID获取单篇文章内容
127 lines
4.3 KiB
TypeScript
127 lines
4.3 KiB
TypeScript
/**
|
||
* 支付配置管理 (Payment Configuration)
|
||
* 从环境变量读取支付配置
|
||
*
|
||
* 作者: 卡若
|
||
* 版本: v4.0
|
||
*/
|
||
|
||
import { AlipayConfig } from './alipay';
|
||
import { WechatPayConfig } from './wechat';
|
||
|
||
// 应用基础配置
|
||
export interface AppConfig {
|
||
env: 'development' | 'production';
|
||
name: string;
|
||
url: string;
|
||
currency: 'CNY' | 'USD' | 'EUR';
|
||
}
|
||
|
||
// 完整支付配置
|
||
export interface PaymentConfig {
|
||
app: AppConfig;
|
||
alipay: AlipayConfig;
|
||
wechat: WechatPayConfig;
|
||
paypal: {
|
||
enabled: boolean;
|
||
mode: 'sandbox' | 'production';
|
||
clientId: string;
|
||
clientSecret: string;
|
||
};
|
||
stripe: {
|
||
enabled: boolean;
|
||
mode: 'test' | 'production';
|
||
publicKey: string;
|
||
secretKey: string;
|
||
webhookSecret: string;
|
||
};
|
||
usdt: {
|
||
enabled: boolean;
|
||
gatewayType: string;
|
||
apiKey: string;
|
||
ipnSecret: string;
|
||
};
|
||
order: {
|
||
expireMinutes: number;
|
||
tradeSnPrefix: string;
|
||
};
|
||
}
|
||
|
||
/**
|
||
* 获取支付配置
|
||
*/
|
||
export function getPaymentConfig(): PaymentConfig {
|
||
return {
|
||
app: {
|
||
env: (process.env.NODE_ENV || 'development') as 'development' | 'production',
|
||
name: process.env.APP_NAME || 'Soul创业实验',
|
||
url: process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000',
|
||
currency: (process.env.APP_CURRENCY || 'CNY') as 'CNY',
|
||
},
|
||
alipay: {
|
||
enabled: process.env.ALIPAY_ENABLED === 'true' || true, // 默认启用
|
||
mode: (process.env.ALIPAY_MODE || 'production') as 'production',
|
||
// 支付宝新版接口需要 app_id,如果没有配置则使用 pid(旧版兼容)
|
||
appId: process.env.ALIPAY_APP_ID || process.env.ALIPAY_PID || '2088511801157159',
|
||
pid: process.env.ALIPAY_PID || '2088511801157159',
|
||
sellerEmail: process.env.ALIPAY_SELLER_EMAIL || 'zhengzhiqun@vip.qq.com',
|
||
privateKey: process.env.ALIPAY_PRIVATE_KEY || '',
|
||
publicKey: process.env.ALIPAY_PUBLIC_KEY || '',
|
||
md5Key: process.env.ALIPAY_MD5_KEY || 'lz6ey1h3kl9zqkgtjz3avb5gk37wzbrp',
|
||
},
|
||
wechat: {
|
||
enabled: process.env.WECHAT_ENABLED === 'true' || true, // 默认启用
|
||
mode: (process.env.WECHAT_MODE || 'production') as 'production',
|
||
// 微信支付需要使用绑定了支付功能的服务号AppID
|
||
appId: process.env.WECHAT_APPID || 'wx7c0dbf34ddba300d', // 服务号AppID(已绑定商户号)
|
||
appSecret: process.env.WECHAT_APP_SECRET || 'f865ef18c43dfea6cbe3b1f1aebdb82e',
|
||
serviceAppId: process.env.WECHAT_SERVICE_APPID || 'wx7c0dbf34ddba300d',
|
||
serviceSecret: process.env.WECHAT_SERVICE_SECRET || 'f865ef18c43dfea6cbe3b1f1aebdb82e',
|
||
mchId: process.env.WECHAT_MCH_ID || '1318592501',
|
||
mchKey: process.env.WECHAT_MCH_KEY || 'wx3e31b068be59ddc131b068be59ddc2',
|
||
certPath: process.env.WECHAT_CERT_PATH || '',
|
||
keyPath: process.env.WECHAT_KEY_PATH || '',
|
||
},
|
||
paypal: {
|
||
enabled: process.env.PAYPAL_ENABLED === 'true',
|
||
mode: (process.env.PAYPAL_MODE || 'sandbox') as 'sandbox',
|
||
clientId: process.env.PAYPAL_CLIENT_ID || '',
|
||
clientSecret: process.env.PAYPAL_CLIENT_SECRET || '',
|
||
},
|
||
stripe: {
|
||
enabled: process.env.STRIPE_ENABLED === 'true',
|
||
mode: (process.env.STRIPE_MODE || 'test') as 'test',
|
||
publicKey: process.env.STRIPE_PUBLIC_KEY || '',
|
||
secretKey: process.env.STRIPE_SECRET_KEY || '',
|
||
webhookSecret: process.env.STRIPE_WEBHOOK_SECRET || '',
|
||
},
|
||
usdt: {
|
||
enabled: process.env.USDT_ENABLED === 'true',
|
||
gatewayType: process.env.USDT_GATEWAY_TYPE || 'nowpayments',
|
||
apiKey: process.env.NOWPAYMENTS_API_KEY || '',
|
||
ipnSecret: process.env.NOWPAYMENTS_IPN_SECRET || '',
|
||
},
|
||
order: {
|
||
expireMinutes: parseInt(process.env.ORDER_EXPIRE_MINUTES || '30', 10),
|
||
tradeSnPrefix: process.env.TRADE_SN_PREFIX || 'T',
|
||
},
|
||
};
|
||
}
|
||
|
||
/**
|
||
* 获取回调通知URL
|
||
*/
|
||
export function getNotifyUrl(gateway: 'alipay' | 'wechat' | 'paypal' | 'stripe'): string {
|
||
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000';
|
||
return `${baseUrl}/api/payment/${gateway}/notify`;
|
||
}
|
||
|
||
/**
|
||
* 获取支付成功返回URL
|
||
*/
|
||
export function getReturnUrl(orderId?: string): string {
|
||
const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || 'http://localhost:3000';
|
||
const url = `${baseUrl}/payment/success`;
|
||
return orderId ? `${url}?orderId=${orderId}` : url;
|
||
}
|