# ── Database ── DB_HOST=localhost DB_PORT=5432 DB_USERNAME=genex DB_PASSWORD=genex_dev_password DB_NAME=genex # ── Redis ── REDIS_HOST=localhost REDIS_PORT=6379 # ── JWT ── JWT_ACCESS_SECRET=dev-access-secret-change-in-production JWT_ACCESS_EXPIRY=15m JWT_REFRESH_SECRET=dev-refresh-secret-change-in-production JWT_REFRESH_EXPIRY=7d # ── SMS ── SMS_ENABLED=false SMS_CODE_EXPIRE_SECONDS=300 SMS_DAILY_LIMIT=10 SMS_MAX_VERIFY_ATTEMPTS=5 # ── Aliyun SMS (only when SMS_ENABLED=true) ── # ALIYUN_ACCESS_KEY_ID= # ALIYUN_ACCESS_KEY_SECRET= # ALIYUN_SMS_SIGN_NAME=券金融 # ALIYUN_SMS_TEMPLATE_CODE=SMS_501745796 # ALIYUN_SMS_TPL_REGISTER=SMS_501745796 # ALIYUN_SMS_TPL_LOGIN=SMS_501720822 # ALIYUN_SMS_TPL_RESET_PASSWORD=SMS_501735781 # ALIYUN_SMS_TPL_CHANGE_PHONE=SMS_501925825 # ALIYUN_SMS_TPL_IDENTITY_VERIFY=SMS_501925825 # ALIYUN_SMS_TPL_TRANSACTION=SMS_501820752 # ALIYUN_SMS_TPL_PAYMENT=SMS_501855782 # ── Email (Gmail SMTP) ── # EMAIL_ENABLED=true 时使用 Gmail 真实发送; false 时验证码打印到控制台 EMAIL_ENABLED=false EMAIL_CODE_EXPIRE_SECONDS=300 EMAIL_DAILY_LIMIT=10 EMAIL_MAX_VERIFY_ATTEMPTS=5 # Gmail SMTP (only when EMAIL_ENABLED=true) # 步骤:Google 账号 → 安全性 → 开启两步验证 → 应用专用密码 → 选「邮件」→ 复制16位密码 # GMAIL_USER=noreply@gmail.com # GMAIL_APP_PASSWORD=xxxxxxxxxxxxxx (16位,填写时不含空格) # EMAIL_FROM_NAME=Genex # ── WeChat OAuth (微信开放平台移动应用) ────────────────────────────────────── # # 申请步骤(需企业资质,个人无法申请移动应用 OAuth): # # 1. 注册/登录微信开放平台 # https://open.weixin.qq.com # → 账号中心 → 开发者资质认证(年费 300 元,需营业执照/组织机构代码证) # # 2. 创建移动应用 # 管理中心 → 移动应用 → 创建移动应用 # 填写基本信息:应用名称、简介、图标(512×512 PNG,无圆角) # 填写平台信息: # Android — 应用包名: cn.gogenex.consumer # 应用签名: release keystore 的 MD5(32位小写,无冒号分隔) # 获取签名: keytool -exportcert -keystore release.jks \ # -alias release -storepass <密码> | md5sum # iOS — Bundle ID: cn.gogenex.consumer # 提交审核,等待 1-7 个工作日 # # 3. 审核通过后在「应用详情」页面获取: # AppID (16位,wx 开头) — 填入 WECHAT_APP_ID,客户端和服务端均需要 # AppSecret (32位) — 填入 WECHAT_APP_SECRET,仅服务端使用,严格保密 # # 4. 启用 unionid(强烈建议) # 开放平台 → 账号中心 → 公众号/小程序/移动应用 绑定到同一开放平台账号 # 绑定后,同一微信用户在所有绑定应用中 unionid 相同,可跨 App 识别用户 # 若不绑定,不同 App 下同一用户的 openid 不同,会注册出多个账号 # # 5. Flutter 构建时传入 AppID(在 Android Studio / Xcode / CI 脚本中配置): # flutter build apk --dart-define=WECHAT_APP_ID=wx0000000000000000 # flutter build ipa --dart-define=WECHAT_APP_ID=wx0000000000000000 # # 注意事项: # - AppSecret 严禁写入客户端代码或提交到 Git,只在服务端 .env 中配置 # - Android 发布正式版本时,签名 MD5 必须与申请时一致,否则微信授权失败 # - iOS Universal Links 需要在开放平台填写 https://www.gogenex.com/wechat/ # 并确保该 URL 可访问 apple-app-site-association 文件 # # WECHAT_APP_ID=wx0000000000000000 # WECHAT_APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # ── 支付宝 OAuth(移动应用) ───────────────────────────────────────────────── # # 申请步骤: # 1. 登录支付宝开放平台 https://open.alipay.com # → 控制台 → 创建应用 → 移动应用 → 填写 App 名称/图标/Bundle ID # # 2. 配置 RSA2 密钥对(SHA256WithRSA,推荐 2048 位) # 下载「支付宝开放平台密钥工具」生成密钥对: # https://opendocs.alipay.com/common/02kipl # - 将「应用公钥」上传到支付宝开放平台 # - 将「应用私钥(PKCS8 格式)」填入 ALIPAY_PRIVATE_KEY(Base64,无换行) # - 在开放平台获取「支付宝公钥」(非应用公钥),填入 ALIPAY_PUBLIC_KEY # # 3. 添加功能:获取会员信息(alipay.user.info.share) # 应用详情 → 添加功能 → 获取会员信息 → 签约(约1个工作日审核) # # 4. 获取 AppID(16位数字,如 2021003189xxxxxx) # # ALIPAY_APP_ID=2021003189xxxxxx # ALIPAY_PRIVATE_KEY=MIIEvAIBADANBgkqhkiG9w0BAQEFAASC...(PKCS8 Base64,无换行) # ALIPAY_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMI...(支付宝公钥,无换行) # ALIPAY_GATEWAY=openapi.alipay.com # 沙箱: openapi-sandbox.dl.alipaydev.com # ── Google Sign-In ──────────────────────────────────────────────────────────── # # 申请步骤: # 1. 登录 Google Cloud Console https://console.cloud.google.com # → 选择/创建项目 # # 2. 启用 API # API 和服务 → 库 → 搜索「Google Sign-In API」→ 启用 # # 3. 创建 OAuth 2.0 凭据 # API 和服务 → 凭据 → 创建凭据 → OAuth 2.0 客户端 ID # 分别创建: # Android 类型: 包名 cn.gogenex.consumer + SHA-1 指纹(debug/release 各一) # SHA-1 获取: keytool -exportcert -keystore debug.keystore \ # -alias androiddebugkey -storepass android | openssl sha1 -binary | xxd # iOS 类型: Bundle ID cn.gogenex.consumer # # 4. 服务端获取一个「Web 应用」类型的 Client ID(可选,用于验证 aud 字段) # 若不配置,GOOGLE_CLIENT_ID 可留空(跳过 aud 验证,安全性略降低) # # GOOGLE_CLIENT_ID=xxxxxxxxxx.apps.googleusercontent.com # ── Apple Sign In ───────────────────────────────────────────────────────────── # # 申请步骤: # 1. Apple Developer 账号(个人 $99/年)https://developer.apple.com # # 2. 开启 Sign In with Apple 能力 # Certificates, Identifiers & Profiles # → Identifiers → 选择 App ID (cn.gogenex.consumer) # → Capabilities → 勾选「Sign In with Apple」→ Save # # 3. iOS Xcode 配置 # Target → Signing & Capabilities → + Capability → Sign In with Apple # # APPLE_CLIENT_ID=cn.gogenex.consumer # 填 Bundle ID 即可 # ── Kafka (optional, events silently skipped if unavailable) ── KAFKA_BROKERS=localhost:9092 # ── Service ── PORT=3010