为什么我的Stripe API key不能在生产中工作?



这个问题已经问过了,但似乎使用Stripe Checkout的格式已经改变,以及加密凭证(秘密)的格式。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

在我的条纹。我有:

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控制台以及rails控制台——environment=production并检查Stripe.api_key它完美地返回精确的条带密钥。我不知道为什么错误说没有提供Stripe API密钥。我有什么不明白的吗?这是完成我的第一个"专业"网络应用程序的最后一步(为朋友在线商店)。

我明白了!就像v3nkman建议的那样,我检查了Rails.application.credentials.stripe的英雄控制台。它没有返回任何内容,而开发控制台返回了密钥。当我们最初部署Heroku时,我设置了两个环境变量:PUBLISHABLE_KEYSECRET_KEY。而是条纹中的stripe.api_key。rb文件指向Rails.application.credentials.dig(:stripe, :stripe_secret_key)。这在Heroku是无效的。所以我改了条纹。rb

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

最初它没有工作,但这是因为来自前端的Javascript请求仍然使用测试键。一旦我将其更改为live键,它就工作了

相关内容

  • 没有找到相关文章

最新更新