You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 5.1部署Heroku后Stripe BillingPortal调用密钥错误问题

问题排查与解决方案

1. 检查Stripe SDK初始化逻辑

虽然你通过控制台确认了Rails.application.secrets里的密钥是生产环境的,但stripe-rails可能在初始化Billing Portal相关模块时没正确加载生产密钥:

  • 打开config/initializers/stripe.rb,确认配置代码没有被错误的环境条件限制,比如:
    Rails.configuration.stripe = {
      publishable_key: Rails.application.secrets.STRIPE_PUBLISHABLE_KEY,
      secret_key: Rails.application.secrets.STRIPE_SECRET_KEY
    }
    
    Stripe.api_key = Rails.configuration.stripe[:secret_key]
    
    确保这段代码不会只在测试/开发环境执行,生产环境下必须正确设置Stripe.api_key。

2. 验证Heroku环境下的实际密钥加载

有时候Heroku的配置加载可能存在缓存,或者密钥没有被正确读取:

  • 在Heroku控制台直接执行Stripe.api_key,查看输出是否为sk_Live_***************,而非测试密钥sk_test_xxx。
  • 如果输出是测试密钥,重新设置环境变量并重启应用:
    heroku config:set STRIPE_SECRET_KEY=sk_Live_*************** STRIPE_PUBLISHABLE_KEY=pk_Live_************** --remote heroku
    heroku restart --remote heroku
    

3. 排查Billing Portal调用的上下文差异

其他Stripe操作正常,说明基础密钥配置没问题,但Billing Portal的调用可能存在特殊情况:

  • 检查调用Stripe::BillingPortal::Session.create的代码,有没有临时覆盖Stripe.api_key的逻辑,比如之前测试时硬编码了测试密钥,上线后未移除。
  • 确认是否使用了多Stripe客户端实例,某些实例可能没配置生产密钥。

4. 确认Stripe API版本兼容性

stripe-rails依赖的Stripe SDK版本可能过低,导致Billing Portal的生产环境调用出现密钥识别异常:

  • 查看Gemfile.lock里的stripe gem版本,确保它支持Billing Portal(该功能要求Stripe API版本2019-03-14及以上)。
  • 如果版本过低,更新gem后重新部署:
    # Gemfile中更新
    gem 'stripe', '~> 7.0' # 或更高兼容版本
    
    bundle install
    git add Gemfile.lock
    git commit -m "Update stripe gem version"
    git push heroku master
    

内容的提问来源于stack exchange,提问作者Linda Keating

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 20:46:04