Ruby on rails - Stripe:"你没有设置有效的可发布密钥"

时间:2018-05-08 11:12:52

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

我有一个问题我在本教程中一步一步地将gem条带包含到我的rails应用程序中:https://stripe.com/docs/checkout/rails

但是,当我启动付款时,我遇到了一个问题:

  

您没有设置有效的可发布密钥。使用您的可发布密钥致电Stripe.setPublishableKey()

我所关注的教程并没有使用这种方法Stripe.setPublishableKey(),而且看起来效果也很好......

我使用.env文件来获取API密钥,并使用教程中的测试密钥。

对解决方案有任何想法吗?!

非常感谢:)如果您需要更多信息,请告诉我

我的实际代码是我使用的教程的复制/粘贴。

编辑1

我不明白为什么但是当我在Heroku上推动项目时它正在工作......但我仍然不明白为什么它在本地失败

3 个答案:

答案 0 :(得分:0)

从您链接的指南:

  

该应用程序使用您的可发布和秘密API密钥   与Stripe交互。初始化程序是设置这些的好地方   值,将在应用程序启动时提供。

     

将以下内容添加到config / initializers / stripe.rb:

Rails.configuration.stripe = {
  :publishable_key => ENV['PUBLISHABLE_KEY'],
  :secret_key      => ENV['SECRET_KEY']
}

Stripe.api_key = Rails.configuration.stripe[:secret_key]
     

这些键值是从环境变量中提取出来的   硬编码。最好不要在您的API中编写API密钥   代码,它们可以轻松地在源代码管理存储库中结束   和其他非私人目的地。

您是否已将该数据添加到config / initializers / stripe.rb?

如果是这样,您可能需要重新启动服务器,因为config / initializers中的文件仅在服务器启动时加载

答案 1 :(得分:0)

  

我正在使用.env文件来获取API密钥,并使用教程中的测试密钥。

Rails不会从.env文件自动加载环境变量。因此,在教程中,作者在服务器启动之前从控制台设置所需的变量,但是使用.env文件。 要修复使用gem dotenv-rails:只需添加你的Gemfile(不需要添加与gem描述中相同的行)

答案 2 :(得分:0)

通过将stripe.rb文件的最后一行更改为:

,我能够在另一个教程中克服相同类型的错误

Stripe.api_key = Rails.application.credentials.stripe[:secret_key]

密钥已保存在rails 5.2的certificate.yml.enc文件中