【发布时间】:2021-05-01 12:26:59
【问题描述】:
已提出此问题,但似乎使用 Stripe Checkout 的格式已更改,以及加密凭据的格式(secrets.yml 到 credentials.yml)
所以在开发中我们一直在使用测试密钥并且没有问题。但是现在我们已经部署到 Heroku,每次我们尝试导航到 Stripe Checkout 时它都会中断。 Heroku 日志中的错误似乎很简单:
021-01-27T15:41:02.784429+00:00 app[web.1]: I, [2021-01-27T15:41:02.784365 #4] INFO -- : [88208302-394a-4144-b0d7-61fc69369ce7] Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms | Allocations: 379)
2021-01-27T15:41:02.785456+00:00 app[web.1]: F, [2021-01-27T15:41:02.785380 #4] FATAL -- : [88208302-394a-4144-b0d7-61fc69369ce7]
2021-01-27T15:41:02.785459+00:00 app[web.1]: [88208302-394a-4144-b0d7-61fc69369ce7] Stripe::AuthenticationError (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.):
我运行 EDITOR=vim rails credentials:edit 来编辑 credentials.yml.enc
我有:
aws:
access_key_id: xxx
secret_access_key: xxx
stripe:
stripe_secret_key: sk_live_xxx
stripe_publishable_key: pk_live_xxx
secret_key_base: xxx
在我的 stripe.rb 文件中,我有:
Rails.configuration.stripe = {
:publishable_key => Rails.application.credentials.dig(:stripe, :stripe_publishable_key),
:secret_key => Rails.application.credentials.dig(:stripe, :stripe_secret_key)
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
当我进入 rails console 和 rails console --environment=production 并检查 Stripe.api_key 它完美地返回了确切的条带密钥。我不知道为什么错误说没有提供 Stripe API 密钥。我不明白什么?这是完成我的第一个“专业”网络应用程序(朋友的在线商店)的最后一步。
【问题讨论】:
-
您正在部署哪个版本的 Rails?加密凭证在 5 和 6 之间发生了变化。根本原因指向
Rails.application.credentials.dig(:stripe, :stripe_secret_key)未在生产中设置,或者主密钥设置不正确。这取决于 Rails 版本。如果您进入heroku console并查看Rails.application.credentials.stripe[:stripe_secret_key]返回什么,那将是调试的好东西(请注意语法差异,尽可能接近Rails 文档)。 -
@v3nkman 感谢您的回复!我在 Rails 6.0.3.4 上。我使用了 heroku 控制台并检查了返回 nil 的 Rails.application.credentials.stripe,而开发控制台中的相同命令返回了密钥。如何在生产中设置它们?
-
你在heroku中设置了RAIILS_MASTER_KEY配置了吗?那是
heroku config:set RAILS_MASTER_KEY=ABC123Rails 6,heroku 需要它来解密文件 -
我认为这是假设未将主密钥文件添加到不推荐的存储库中。
-
你可以检查环境。使用
heroku config进行 heroku 生产的 vars
标签: ruby-on-rails stripe-payments credentials