Files
gitlab-instance-0a899031_no…/config/services.config.ts
2026-03-12 19:52:34 -05:00

86 lines
2.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 服务配置 - 参考 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(/\/$/, ""),
};
}