feat: Alipay 安全加固 + 切换手机网站支付 (wap.pay)
Some checks failed
Deploy Backend / deploy (push) Has been cancelled

- Phase 1: 移除 Git 中 ALIPAY 密钥,改用 EnvironmentFile
  所有 4 个 deploy 模板删除 ALIPAY_* 内联 Environment,改为指向 .env
  check_service_file() 不再要求 ALIPAY_APP_ID 在 Environment 中
  init_env() 生成模板添加 EnvironmentFile 行

- Phase 2: 切换到手机网站支付 (alipay.trade.wap.pay)
  payment.rs: product_code QUICK_WAP_PAY, method alipay.trade.wap.pay
  用户从手机浏览器访问时自动唤起支付宝 APP

- Phase 3: 服务器 .env 文件创建
  所有环境 .env 文件已通过 SSH 创建(600 权限)
  dev 使用沙箱网关 (openapi-sandbox.dl.alipaydev.com)
  prod 使用正式网关 (openapi.alipay.com)

- 生产部署完成(blue→green 双环境同步)
  密钥安全: 不再存在于任何 Git 跟踪文件中
This commit is contained in:
2026-07-20 14:51:56 +08:00
parent 4c5c879583
commit 2c86219c82
6 changed files with 10 additions and 22 deletions

View File

@@ -179,7 +179,7 @@ fn build_alipay_form_html(
"out_trade_no": out_trade_no,
"total_amount": total_amount,
"subject": subject,
"product_code": "FAST_INSTANT_TRADE_PAY",
"product_code": "QUICK_WAP_PAY",
});
let biz_content_str =
@@ -188,7 +188,7 @@ fn build_alipay_form_html(
let timestamp = chrono::Local::now().format("%Y-%m-%d %H:%M:%S").to_string();
let mut params: BTreeMap<&str, &str> = BTreeMap::new();
params.insert("app_id", &config.app_id);
params.insert("method", "alipay.trade.page.pay");
params.insert("method", "alipay.trade.wap.pay");
params.insert("format", "JSON");
params.insert("charset", "utf-8");
params.insert("sign_type", "RSA2");