首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >条带-未提供API密钥?

条带-未提供API密钥?
EN

Stack Overflow用户
提问于 2014-12-13 05:54:44
回答 1查看 10.7K关注 0票数 9

我正在与这个错误作斗争没有提供API密钥。使用"Stripe.api_key =“设置您的API密钥。你可以在一步一步的Stripe's guide之后,从Rails应用程序中的条纹web界面生成API。

在我看来,一切看起来都很好,但它一直在返回通知。有什么建议吗?

费用控制器:

代码语言:javascript
复制
  class ChargesController < ApplicationController

    def new
    end

    def create
      # Amount in cents
      @amount = 500

      customer = Stripe::Customer.create(
        :email => 'example@stripe.com',
        :card  => params[:stripeToken]
      )

      charge = Stripe::Charge.create(
        :customer    => customer.id,
        :amount      => @amount,
        :description => 'Rails Stripe customer',
        :currency    => 'usd'
      )

    rescue Stripe::CardError => e
      flash[:error] = e.message
      redirect_to charges_path
    end

  end

config/initializers/stripe.rb

代码语言:javascript
复制
    Rails.configuration.stripe = {
      :publishable_key => ENV['pk_test_KEY'],
      :secret_key      => ENV['sk_test_KEY']
    }

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

终端跟踪在2014-12-12 22:15:08 +0100启动了127.0.0.1的POST "/charges“

代码语言:javascript
复制
    Processing by ChargesController#create as HTML

      Parameters: {"utf8"=>"✓", "authenticity_token"=>"XXX", "stripeToken"=>"tok_1590kf2NNSl5uX0kXE9XXX", "stripeTokenType"=>"card", "stripeEmail"=>"USER@gmail.com"}

    Completed 500 Internal Server Error in 2ms



    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.:

       () Users/javier/.rvm/gems/ruby-2.1.2/bundler/gems/stripe-ruby-9c7ebd21c973/lib/stripe.rb:71:in `request'

       () Users/javier/.rvm/gems/ruby-2.1.2/bundler/gems/stripe-ruby-9c7ebd21c973/lib/stripe/api_operations/create.rb:6:in `create'

       () Users/javier/Desktop/definitive/app/controllers/charges_controller.rb:10:in `create'

按照@sealocal在评论中的建议,测试了在secrets.yml中包含密钥,但仍然存在相同的问题:

代码语言:javascript
复制
development:
 secret_key_base: key
 publishable_key: anotherkey
 secret_key: anotherkey

test:
 secret_key_base:key
production:
 secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
 publishable_key: <%= ENV["publishable_key"] %>
 secret_key: <%= ENV["secret_key"] %>
EN

回答 1

Stack Overflow用户

发布于 2014-12-14 04:54:55

您需要将条带密钥存储在环境变量中,以便config/initializers/stripe.rb可以读取它们。

在Rails 4.1+中,您可以使用secrets.yml

代码语言:javascript
复制
development:
  secret_key_base: key
  publishable_key: pk_test_lkasjdflkajsd
  secret_key: sk_test_lkasjdflkajsd

注意:在YAML中定义嵌套的键值对时,只能使用两个空格。也就是说,development下的键应该缩进两个空格,而不是制表符。这是因为YAML文件严格依赖于缩进。

config/initializers/stripe.rb

代码语言:javascript
复制
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]
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27452731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档