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

Ruby on Rails集成Stripe报错:未提供API密钥

解决Stripe快速结账重定向到charges#create时的API密钥错误

我之前在Rails项目集成Stripe时也碰到过一模一样的问题——表单显示正常,但创建charge时突然弹出"No API key provided"的报错,明明初始化文件里已经配置好密钥了对吧?别慌,咱们一步步排查:

  • 先确认初始化文件的位置和加载时机:你的stripe.rb是不是放在config/initializers目录下?Rails只会自动加载这个目录下的初始化文件,如果放错了位置,那里面的Stripe.api_key = ...代码根本没执行。改完位置一定要重启服务器!

  • 验证密钥是否真的被读取到了:在charges#create动作开头加几行调试代码,看看实际拿到的密钥是什么:

    puts "当前Stripe API密钥: #{Stripe.api_key.inspect}"
    puts "Secrets里的密钥: #{Rails.application.secrets.stripe_secret_key.inspect}"
    

    然后查看服务器日志,如果输出是nil,那问题出在密钥加载环节——要么是secrets.yml里对应环境(比如development/production)的密钥没配置,要么是部署时环境变量没传对(比如用了Figaro或dotenv但变量名写错了)。

  • 临时应急+排查覆盖问题:如果着急解决,可以先在charges#create动作开头手动设置一次密钥:

    Stripe.api_key = Rails.application.secrets.stripe_secret_key
    # 再执行Stripe::Charge.create的逻辑
    

    如果这样就正常了,说明之前的初始化代码没生效,或者某个地方把Stripe.api_key给覆盖成nil了,比如有没有其他控制器/初始化文件不小心修改了这个值?

  • 检查Stripe SDK版本:有些较老的Stripe Ruby版本对密钥加载逻辑有差异,试试把Gemfile里的stripe gem更新到最新稳定版,执行bundle update stripe后重启服务器再测试。

内容的提问来源于stack exchange,提问作者albin persson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:34:49