【问题标题】:Stripe API key missing Rails条带 API 密钥缺少 Rails
【发布时间】:2016-04-25 12:12:33
【问题描述】:

我们遇到了 Stripe API 密钥的问题。到目前为止我所做的是:

  • 设置 environment/*.rb 以使用常量使用适当的 Stripe 键
  • 使用Stripe.api_key = STRIPE_SECRET 行创建了config/initializers/stripe.rb
  • 使用rails 控制台,STRIPE_PUBLICSTRIPE_SECRET 常量都被设置并且可见。 STRIPE_PUBLIC => "pk_test_xxxxxxxxx"

但是,一旦这些事情都到位,使用浏览器调用 Stripe 的 API 会导致:

Stripe::AuthenticationError in some_controller#some_action

No API key provided. Set your API key using "Stripe.api_key = <API-KEY>". You can generate API keys from the Stripe web interface. See https://stripe.com/api for details, or email support@stripe.com if you have any questions.

使用 web-console gem,我们可以看出 STRIPE_SECRETSTRIPE_PUBLIC 在网站中是 nil。但是每次我们运行 rails console 时,我们都会从常量中获取密钥。

【问题讨论】:

  • 你们在同一个环境中运行吗?也许您已将密钥添加到“environments/development.rb”而不是“environments/production.rb”?
  • environments/production.rbSTRIPE_SECRET = ENV['LIVE_STRIPE_SECRET'] 和一个 _PUBLIC 版本。 environments/development.rbenvironements/test.rb 都有 STRIPE_SECRET = ENV['TEST_STRIPE_SECRET'] 和 _PUBLIC 版本。

标签: ruby-on-rails ruby api stripe-payments


【解决方案1】:

我解决了我的问题。在设置环境变量之前,终端运行 rails 服务器已经打开。

因此,运行 source ~/.bashrc(对我而言)或使用新终端对我有用。

真诚地感谢所有试图提供帮助的人!

【讨论】:

    【解决方案2】:

    我认为您遇到的问题正在发生,因为如果您设置密钥的方式。

    您不能期望您使用 rails 控制台设置的内容可用于 Web 应用程序。 Rails 控制台作为其自己的独特进程启动,不与浏览器启动和访问的 Web 进程共享任何内容。

    如果您希望 Web 应用程序可以使用密钥,请尝试将其设置为环境变量并在您的 stripe.rb 文件中相应地读取它

    【讨论】:

    • 我们没有通过rails console 设置API 密钥。设置 api 密钥的行是Stripe.api_key = STRIPE_SECRET,设置 STRIPE_SECRET 的行将取决于环境。所以environments/development.rbSTRIPE_SECRET = ENV['TEST_STRIPE_SECRET']这一行
    猜你喜欢
    • 2017-03-09
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2019-02-11
    • 2021-03-06
    • 2020-10-31
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多