Ruby on rails 条带-未提供API密钥?
我正在努力解决这个错误,没有提供API密钥。使用“Stripe.API_key=”设置API密钥。您可以在Rails应用程序中通过Stripe web界面一步一步地生成API密钥 从我看来,一切看起来都很好,但它一直在回复那个通知。有什么建议吗 收费主任:Ruby on rails 条带-未提供API密钥?,ruby-on-rails,stripe-payments,Ruby On Rails,Stripe Payments,我正在努力解决这个错误,没有提供API密钥。使用“Stripe.API_key=”设置API密钥。您可以在Rails应用程序中通过Stripe web界面一步一步地生成API密钥 从我看来,一切看起来都很好,但它一直在回复那个通知。有什么建议吗 收费主任: class ChargesController < ApplicationController def new end def create # Amount in cents @
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
终端轨迹
于2014-12-12 22:15:08+0100开始127.0.0.1的邮政“/收费”
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'
由ChargesController处理#创建为HTML
参数:{“utf8”=>“✓", "真实性令牌“=>”XXX“、”stripeToken“=>”tok_1590kf2NNSl5uX0kXE9XXX“、”stripeTokenType“=>”卡片“、”stripeEmail“=>”USER@gmail.com"}
在2ms内完成500个内部服务器错误
Stripe::AuthenticationError-未提供API密钥。使用“Stripe.API_key=”设置API密钥。您可以从Stripe web界面生成API密钥。看见https://stripe.com/api 如需了解详细信息,请发送电子邮件support@stripe.com如果您有任何问题:
()Users/javier/.rvm/gems/ruby-2.1.2/bundler/gems/stripe-ruby-9c7ebd21c973/lib/stripe.rb:71:在“请求”中
()Users/javier/.rvm/gems/ruby-2.1.2/bundler/gems/stripe-ruby-9c7ebd21c973/lib/stripe/api_operations/create.rb:6:in'create'
()用户/javier/Desktop/definal/app/controllers/charges_controller.rb:10:in'create'
测试包括secrets.yml中的密钥,正如@sealocal在评论中所建议的,但仍然是相同的问题:
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"] %>
开发:
秘密密钥库:密钥
可发布密钥:另一个密钥
密钥:另一个密钥
测试:
秘密密钥库:密钥
制作:
机密密钥库:
可发布密钥:
密钥:
您需要将条带键存储在环境变量中,以便config/initializers/Stripe.rb
可以读取它们
在Rails 4.1+中,您可以使用:
注意:在YAML中定义嵌套键值对时,请正好使用两个空格。也就是说,development
下的键应该缩进两个空格,而不是制表符。这是因为YAML文件严格依赖缩进
在config/initializers/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支持部门回复了我的电子邮件,他们的解决方案运行良好: config/initializers/stripe.rb
Rails.configuration.stripe = {
:publishable_key => 'pk_test_thekey',
:secret_key => 'sk_test_thekey'
}
在他们的回答中,您似乎正在尝试将API密钥设置为以密钥命名的ENV变量,该变量可能不是有效的密钥。您需要将其更改为ENV['NAME_OF_ENV_VAR_HERE'],或直接访问密钥,如上面包含的行这些是您的真实密钥吗?我认为您不需要
ENV['pk\u test\u NYW7gGgMYnx4HznUXLyti5r3']
。如果您正在对值进行硬编码,只需将'pk\u test\u NYW7gGgMYnx4HznUXLyti5r3'
。以前的键,不再使用。经过测试,但它始终返回相同的通知。您的条带密钥存储在哪里?您应该有一个设置环境变量的文件。它看起来像什么?@config/initializers/stripe.rb中的@sealocal,这不对吗?@malditojavi我认为你做得不对。我想我的答案可能会对你有所帮助。经过测试,在注释中用我包含的代码进行了更新,但仍然是同一个问题。如果你使用的是secrets.yml
,你必须使用以下语法访问你的秘密:Rails.application.secrets.publishible\u key
。更新了答案,以显示您的条带.rb
应该是什么样子。问题中的代码没有显示您使用了该语法。这有帮助吗?如果我理解得很好,您建议在我的secrets.yml中包含可发布的密钥:Rails.application.secrets.publishable\u key?这也不起作用。不,该调用应该放在您的stripe.rb
文件中。我想说的一点是,在你的条带.rb
中有一行是这样的::publishable\u key=>ENV['pk\u test\u key']
,但是你应该使用Rails.application.secrets.pk\u test\u key
来代替ENV['pk\u test\u key']
。无论您使用的是名称pk\u test\u key
还是publishible\u key
,只要它们在stripe.rb
和secrets.yml
之间匹配就行了。如果这仍然不能解决问题,请尝试停止本地服务器,运行$spring stop
,然后$rails
重新启动。
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]
Rails.configuration.stripe = {
:publishable_key => 'pk_test_thekey',
:secret_key => 'sk_test_thekey'
}