86 lines
2.5 KiB
TypeScript
86 lines
2.5 KiB
TypeScript
/**
|
||
* 服务配置 - 参考 desktop digital 项目
|
||
* PocketBase、支付(ZPAY)、MinIO 可通过环境变量覆盖
|
||
*/
|
||
|
||
const isDev = process.env.NODE_ENV === "development";
|
||
|
||
/** 站点标识,用于 VIP 按站点隔离 */
|
||
export const SITE_ID = process.env.NEXT_PUBLIC_SITE_ID || "vip";
|
||
|
||
export interface PocketBaseConfig {
|
||
url: string;
|
||
}
|
||
|
||
export interface PaymentConfig {
|
||
apiUrl: string;
|
||
provider: "zpay" | "xorpay";
|
||
zpaySubmitUrl: string;
|
||
/** 默认金额(分),88元=8800分 */
|
||
defaultAmount?: number;
|
||
/** nomadvip 专用接口路径 */
|
||
nomadvipPayPath: string;
|
||
}
|
||
|
||
export interface MinioConfig {
|
||
endPoint: string;
|
||
port: number;
|
||
useSSL: boolean;
|
||
bucket: string;
|
||
publicUrl: string;
|
||
}
|
||
|
||
export function getPocketBaseConfig(): PocketBaseConfig {
|
||
return {
|
||
url:
|
||
process.env.NEXT_PUBLIC_POCKETBASE_URL ||
|
||
process.env.POCKETBASE_URL ||
|
||
"https://pocketbase.hackrobot.cn",
|
||
};
|
||
}
|
||
|
||
const PAYJSAPI_PORT = process.env.PAYJSAPI_PORT || "8007";
|
||
|
||
/**
|
||
* 根据请求 Host 推断 payjsapi 地址(同主机:8007)
|
||
* 访问 192.168.41.222:3000 时自动用 192.168.41.222:8007
|
||
*/
|
||
export function getApiUrlFromRequest(hostHeader: string | null): string {
|
||
if (!hostHeader) return isDev ? `http://127.0.0.1:${PAYJSAPI_PORT}` : "https://api.hackrobot.cn";
|
||
const hostname = hostHeader.split(":")[0];
|
||
return isDev ? `http://${hostname}:${PAYJSAPI_PORT}` : "https://api.hackrobot.cn";
|
||
}
|
||
|
||
export function getPaymentConfig(): PaymentConfig {
|
||
const apiUrl =
|
||
process.env.PAYMENT_API_URL ||
|
||
process.env.NEXT_PUBLIC_API_URL ||
|
||
(isDev ? `http://127.0.0.1:${PAYJSAPI_PORT}` : "https://api.hackrobot.cn");
|
||
return {
|
||
apiUrl,
|
||
provider: (process.env.PAYMENT_PROVIDER as "zpay" | "xorpay") || "zpay",
|
||
zpaySubmitUrl:
|
||
process.env.ZPAY_SUBMIT_URL || "https://zpayz.cn/submit.php",
|
||
/** 支付测试价格 1 元(生产可改 PAYMENT_DEFAULT_AMOUNT=8800) */
|
||
defaultAmount: Number(process.env.PAYMENT_DEFAULT_AMOUNT) || 100,
|
||
nomadvipPayPath: "/nomadvip/payh5",
|
||
};
|
||
}
|
||
|
||
export function getMinioConfig(): MinioConfig {
|
||
const endPoint = process.env.MINIO_ENDPOINT || "minioweb.hackrobot.cn";
|
||
const port = parseInt(process.env.MINIO_PORT || "9035", 10);
|
||
const useSSL = process.env.MINIO_USE_SSL === "true";
|
||
const bucket = process.env.MINIO_BUCKET || "hackrobot";
|
||
const publicUrl =
|
||
process.env.MINIO_PUBLIC_URL || `https://${endPoint}/${bucket}`;
|
||
|
||
return {
|
||
endPoint,
|
||
port,
|
||
useSSL,
|
||
bucket,
|
||
publicUrl: publicUrl.replace(/\/$/, ""),
|
||
};
|
||
}
|