""" 应用配置 支付渠道可通过 PAYMENT_PROVIDER 切换:xorpay | zpay """ import os from pathlib import Path from typing import Literal from dotenv import load_dotenv # 强制从 payjsapi 项目根目录加载 .env、.env.local,避免 cwd 不同导致加载失败 _root = Path(__file__).resolve().parent.parent load_dotenv(_root / ".env") load_dotenv(_root / ".env.local", override=True) PaymentChannel = Literal["xorpay", "zpay"] # 当前使用的支付渠道(zpay 替代 xorpay,payjs2 接口业务保留) PAYMENT_PROVIDER: PaymentChannel = os.getenv("PAYMENT_PROVIDER", "zpay").lower() # XorPay 配置 XORPAY_AID = os.getenv("XORPAY_AID", "8220") XORPAY_SECRET = os.getenv("XORPAY_SECRET", "afcacd99570945f88de62624aaa3578e") XORPAY_CASHIER_URL = os.getenv("XORPAY_CASHIER_URL", "https://xorpay.com/api/cashier") # ZPAY 配置(网关: https://zpayz.cn/) ZPAY_PID = os.getenv("ZPAY_PID", "2025121809351743") ZPAY_KEY = os.getenv("ZPAY_KEY", "tpEi7wWIWI2kXiYVTpIG6j7it0mjVW89") # PocketBase(支持 PB_ADMIN_* 或 POCKETBASE_*,空值时用默认) PB_URL = os.getenv("PB_URL") or os.getenv("POCKETBASE_URL") or "https://pocketbase.hackrobot.cn" PB_ADMIN_EMAIL = ( os.getenv("PB_ADMIN_EMAIL") or os.getenv("POCKETBASE_EMAIL") or "xiaoshuang.eric@gmail.com" ) PB_ADMIN_PASSWORD = ( os.getenv("PB_ADMIN_PASSWORD") or os.getenv("POCKETBASE_PASSWORD") or "Xiao4669805@" ) # Memos MEMOS_API = os.getenv("MEMOS_API", "https://qun.hackrobot.cn/api/v1/users") MEMOS_TOKEN = os.getenv( "MEMOS_TOKEN", "eyJhbGciOiJIUzI1NiIsImtpZCI6InYxIiwidHlwIjoiSldUIn0.eyJuYW1lIjoiaGFja3JvYm90IiwiaXNzIjoibWVtb3MiLCJzdWIiOiIxIiwiYXVkIjpbInVzZXIuYWNjZXNzLXRva2VuIl0sImlhdCI6MTc1NzQwNTE0OX0.Idn7kBlxE-CoSOXwWuZ1tHGIRKHAIeDyXSafGS5OHsg", ) # 回调地址(用于生成 notify_url)。线上 https://salonapi.hackrobot.cn BASE_URL = os.getenv("BASE_URL", "https://salonapi.hackrobot.cn") # MinIO 对象存储 MINIO_ENDPOINT = os.getenv("MINIO_ENDPOINT", "minioweb.hackrobot.cn") MINIO_PORT = int(os.getenv("MINIO_PORT", "443")) MINIO_ACCESS_KEY = os.getenv("MINIO_ACCESS_KEY", "") MINIO_SECRET_KEY = os.getenv("MINIO_SECRET_KEY", "") MINIO_BUCKET = os.getenv("MINIO_BUCKET", "hackrobot") MINIO_USE_SSL = os.getenv("MINIO_USE_SSL", "true").lower() == "true" _minio_ep = os.getenv("MINIO_ENDPOINT", "minioweb.hackrobot.cn") _minio_bucket = os.getenv("MINIO_BUCKET", "hackrobot") MINIO_PUBLIC_URL = os.getenv("MINIO_PUBLIC_URL", f"https://{_minio_ep}/{_minio_bucket}") MINIO_UPLOAD_PREFIX = os.getenv("MINIO_UPLOAD_PREFIX", "joins")