我有一个问题我在本教程中一步一步地将gem条带包含到我的rails应用程序中:https://stripe.com/docs/checkout/rails
但是,当我启动付款时,我遇到了一个问题:
您没有设置有效的可发布密钥。使用您的可发布密钥致电
Stripe.setPublishableKey()
。
我所关注的教程并没有使用这种方法Stripe.setPublishableKey()
,而且看起来效果也很好......
我使用.env
文件来获取API密钥,并使用教程中的测试密钥。
对解决方案有任何想法吗?!
非常感谢:)如果您需要更多信息,请告诉我
我的实际代码是我使用的教程的复制/粘贴。
我不明白为什么但是当我在Heroku上推动项目时它正在工作......但我仍然不明白为什么它在本地失败
答案 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文件中