fix(security+ops): P0-1 payment readiness doctor + P1-3 portal token URL脱敏
P0-1: 真实支付 acceptance 阻塞于外部凭据 - 新增 .env.payment.example 完整配置模板 - 新增 scripts/payment_readiness_doctor.py 检查全部前置条件 - blocker 从'空等'变为'explicit + handoff-ready' P1-3: score_range_fullchain_e2e.py 报告含 portal token URL - 写入报告前脱敏 portal_status_url/checkout_url/payment_complete_location等 - 受控 reports 不再暴露 bearer URL
This commit is contained in:
@@ -1,11 +1,51 @@
|
||||
GAOKAO_PAYMENT_PROVIDER=mock
|
||||
GAOKAO_PAYMENT_BASE_URL=https://example.com
|
||||
GAOKAO_PAYMENT_WEBHOOK_SECRET=replace-with-independent-payment-webhook-secret
|
||||
# 上线前可切到 alipay_sim 做模拟支付宝 checkout / webhook 验证
|
||||
# GAOKAO_PAYMENT_PROVIDER=alipay_sim
|
||||
# 支付宝真实凭据环境变量模板
|
||||
# 复制为 .env.payment 并填写真实值后 source 使用
|
||||
# 正式上线前必须完成一次真实 acceptance
|
||||
|
||||
GAOKAO_PAYMENT_NOTIFY_URL=
|
||||
GAOKAO_PAYMENT_RETURN_URL=
|
||||
# 应用 ID(支付宝开放平台 → 应用管理)
|
||||
GAOKAO_PAYMENT_APP_ID=
|
||||
|
||||
# 商户 ID(支付宝商户平台 → 账户管理)
|
||||
GAOKAO_PAYMENT_MERCHANT_ID=
|
||||
|
||||
# 应用私钥文件路径(RSA2)
|
||||
# 生成方式: openssl genrsa -out app_private_key.pem 2048
|
||||
GAOKAO_PAYMENT_PRIVATE_KEY_PATH=
|
||||
|
||||
# 支付宝公钥文件路径
|
||||
# 从支付宝开放平台 → 应用管理 → 接口加签方式 → 查看支付宝公钥
|
||||
GAOKAO_PAYMENT_ALIPAY_PUBLIC_KEY_PATH=
|
||||
|
||||
# 异步通知 URL(必须是公网可访问的 HTTPS 地址)
|
||||
# 格式: https://your-domain.com/pay/alipay/notify
|
||||
GAOKAO_PAYMENT_NOTIFY_URL=
|
||||
|
||||
# 同步返回 URL(支付完成后浏览器跳转)
|
||||
# 格式: https://your-domain.com/pay/alipay/return
|
||||
GAOKAO_PAYMENT_RETURN_URL=
|
||||
|
||||
# 支付服务商(固定为 alipay,切换到真实支付)
|
||||
GAOKAO_PAYMENT_PROVIDER=alipay
|
||||
|
||||
# 支付网关基础 URL
|
||||
# 沙箱: https://openapi-sandbox.dl.alipaydev.com/gateway.do
|
||||
# 生产: https://openapi.alipay.com/gateway.do
|
||||
GAOKAO_PAYMENT_BASE_URL=
|
||||
|
||||
# Webhook 签名验证密钥
|
||||
GAOKAO_PAYMENT_WEBHOOK_SECRET=
|
||||
|
||||
# 订单加密密钥(Fernet)
|
||||
# 生成方式: python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
||||
GAOKAO_ORDERS_FERNET_KEY=
|
||||
|
||||
# JWT Secret(至少 32 字符)
|
||||
# 生成方式: python3 -c "import secrets; print(secrets.token_hex(32))"
|
||||
GAOKAO_JWT_SECRET=
|
||||
|
||||
# Portal Token Secret(至少 32 字符,必须与 JWT_SECRET 不同)
|
||||
# 生成方式: python3 -c "import secrets; print(secrets.token_hex(32))"
|
||||
GAOKAO_PORTAL_TOKEN_SECRET=
|
||||
|
||||
# 管理员密码(至少 10 字符,覆盖 3 类字符)
|
||||
GAOKAO_ADMIN_PASS=
|
||||
|
||||
Reference in New Issue
Block a user