【问题标题】:Rails: Stripe on Heroku Stuck on Test ModeRails:Heroku 上的 Stripe 卡在测试模式
【发布时间】:2018-01-04 22:58:58
【问题描述】:

我在我的应用程序上设置了 Stripe,以便它在测试模式下在 localhost 和 Heroku 上完美运行。我已经在 Stripe 上切换到实时模式,并使用Stripe documentation 中的这些步骤更新我的stripe_api_keystripe_publishable_key

heroku config:set PUBLISHABLE_KEY=pk_live_... SECRET_KEY=sk_live_...

我也对 stripe_api_keystripe_publishable_key 进行了此操作,正如我在其他文档中看到的那样,并希望涵盖我的基础。

我的application.example.yml 中有以下内容:

stripe_api_key:
stripe_publishable_key:

production:
  stripe_api_key:
  stripe_publishable_key:

SENDGRID_USERNAME:
SENDGRID_PASSWORD:

AWS_ACCESS_KEY_ID:
AWS_REGION:
AWS_SECRET_ACCESS_KEY:
S3_BUCKET_NAME:

application.yml有对应的信息。我的stripe.rb 看起来像这样:

Rails.configuration.stripe = {
  :publishable_key => Rails.application.secrets.publishable_key,
  :secret_key      => Rails.application.secrets.secret_key
}

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

谁能看到为什么 Stripe 仍在 Heroku 的生产服务器上以测试模式运行?

【问题讨论】:

  • 您在设置这些密钥后是否重新启动了服务器? heroku restart -a your-app
  • @AbM,是的。我多次重新启动整个应用程序。

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


【解决方案1】:

我最终完全摆脱了 Figaro/application.yml 并重组了我的 secrets.yml 文件以具有以下暂存/生产结构:

# Do not keep production secrets in the repository,
# instead read values from the environment.
staging:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  stripe_api_key: <%= ENV["STRIPE_API_KEY"] %>
  stripe_publishable_key: <%= ENV["STRIPE_PUBLISHABLE_KEY"] %>
  sendgrid_username: <%= ENV["SENDGRID_USERNAME"] %>
  sendgrid_password: <%= ENV["SENDGRID_PASSWORD"] %>

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  stripe_api_key: <%= ENV["STRIPE_API_KEY"] %>
  stripe_publishable_key: <%= ENV["STRIPE_PUBLISHABLE_KEY"] %>
  sendgrid_username: <%= ENV["SENDGRID_USERNAME"] %>
  sendgrid_password: <%= ENV["SENDGRID_PASSWORD"] %>

在此之后一切正常。

【讨论】:

    【解决方案2】:

    当你这样做时:

    heroku config:set PUBLISHABLE_KEY=pk_live_... SECRET_KEY=sk_live_...

    您在 Heroku 环境中设置了两个 ENV 变量,它们可以在 Rails 中以 ENV['PUBLISHABLE_KEY']ENV['SECRET_KEY'] 的形式访问。

    您还可以通过访问您的 heroku 仪表板、您的应用程序,然后点击Settings 并单击Reveal Config Vars,查看您已设置、访问、删除或更改其值的 ENV 变量。

    你只需要在stripe.rb中定义它们

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

    或者如果你想使用你的秘密,在你的 secrets.yml 上改变它

    production:
      stripe_api_key: <%= ENV['PUBLISHABLE_KEY'] %>
      stripe_publishable_key: <%= ENV['SECRET_KEY'] %>
    

    让你的 stripe.rb 和以前一样。

    我仍然会将您的 ENV 变量名称更改为更具体,例如 STRIPE_PUBLISHABLE_KEY & STRIPE_SECRET_KEY.

    【讨论】:

    • 我在“secrets.yml”的生产部分有stripe_api_key: &lt;%= ENV["stripe_api_key"] %&gt;stripe_publishable_key: &lt;%= ENV["stripe_publishable_key"] %&gt;,并通过heroku 仪表板验证了这些相同的名称与我在Heroku 上的实时密钥配对。仍处于测试模式。
    • 尝试只更改您的stripe.rb。并确保在设置 Stripe.api_key 时正确加载(只是 puts 的内容)。还可以通过检查源来检查呈现页面上设置的可发布密钥。
    • 不幸的是,这也没有改变任何东西。 :(
    • 那么这些键设置了什么?如果你发现了,那么你可以做一个全局搜索(假设你的文本编辑器允许它)并查看你在哪里设置这些值,最终找出你在哪里做错了
    猜你喜欢
    • 2015-11-01
    • 2014-08-23
    • 2017-10-12
    • 2018-08-30
    • 2014-07-14
    • 2019-07-11
    • 2018-01-02
    • 1970-01-01
    • 2017-09-03
    相关资源
    最近更新 更多