feat: 完整重构小程序匹配功能 + 修复UI对齐 + 文章数据API
主要更新: 1. 按H5网页端完全重构匹配功能(match页面) - 4种匹配类型: 创业合伙/资源对接/导师顾问/团队招募 - 资源对接等类型弹出手机号/微信号输入框 - 去掉重新匹配按钮,改为返回按钮 2. 修复所有卡片对齐和宽度问题 - 目录页附录卡片居中 - 首页阅读进度卡片满宽度 - 我的页面菜单卡片对齐 - 推广中心分享卡片统一宽度 3. 修复目录页图标和文字对齐 - section-icon固定40rpx宽高 - section-title与图标垂直居中 4. 更新真实完整文章标题(62篇) - 从book目录读取真实markdown文件名 - 替换之前的简化标题 5. 新增文章数据API - /api/db/chapters - 获取完整书籍结构 - 支持按ID获取单篇文章内容
This commit is contained in:
126
lib/payment/config.ts
Normal file
126
lib/payment/config.ts
Normal file
@@ -0,0 +1,126 @@
|
||||
/**
|
||||
* 支付配置管理 (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;
|
||||
}
|
||||
Reference in New Issue
Block a user