Ruby on rails RubyonRails-条带-未提供API密钥
我正在为我的网店尝试此条带快速签出,表单看起来很好,但是当重定向并运行费用时#create我收到一个错误,说没有提供API密钥。使用“Stripe.API_key=”设置API密钥。据我所知,我已在Stripe.rb中设置了API密钥Ruby on rails RubyonRails-条带-未提供API密钥,ruby-on-rails,ruby,stripe-payments,Ruby On Rails,Ruby,Stripe Payments,我正在为我的网店尝试此条带快速签出,表单看起来很好,但是当重定向并运行费用时#create我收到一个错误,说没有提供API密钥。使用“Stripe.API_key=”设置API密钥。据我所知,我已在Stripe.rb中设置了API密钥 Rails.configuration.stripe = { :publishable_key => Rails.application.secrets.stripe_publishable_key, :secret_key =
Rails.configuration.stripe = {
:publishable_key => Rails.application.secrets.stripe_publishable_key,
:secret_key => Rails.application.secrets.stripe_secret_key
}
Stripe.api_key = Rails.application.secrets.stripe_secret_key
错误出现在充电\u控制器.rb
class ChargesController < ApplicationController
require 'stripe'
def index
render :new
end
def new
end
def create
# Amount in cents
@amount = 500
customer = Stripe::Customer.create(
:email => params[:stripeEmail],
:source => 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 new_charge_path
end
end
下面是一个gif,显示我在条带支付会话中单击“支付”时发生的情况:为什么不将API密钥放入初始值设定项中?更好的是,将其存储为环境变量并引用它。使用以下内容创建
config/initializers/stripe.rb
Stripe.api_key=ENV['Stripe_SECRET']
STRIPE\u PUBLIC\u KEY=ENV['STRIPE\u PUBLIC\u KEY']
尝试在stripe.rb中执行以下操作
Rails.configuration.stripe = {
:publishable_key => ENV['stripe_publishable_key'],
:secret_key => ENV['stripe_api_key']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
我使用过的附加信息
看,你需要设置安全设置这些密钥的条带,你可以在安装Figaro gem后使用,然后在config
目录中创建一个文件,该目录名为application.yml
,你可以这样设置密钥
STRIPE_PUBLISHABLE_KEY: pk_xxxxxxxxxxxxxxxxxxxx
STRIPE_SECRET_KEY: sk_xxxxxxxxxxxxxxxxxxxxxxx
然后在config/initializers/
Rails.configuration.stripe = {
:publishable_key => ENV['STRIPE_PUBLISHABLE_KEY'],
:secret_key => ENV['STRIPE_SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
就是这样,你已经这样做了。上面的第一个代码块来自config/initializers/stripe.rbSo现在我得到了这个:不知道我是否理解你的意思,但这里是我更改的Rails.configuration.stripe={:publishable_key=>ENV['pk_test\u RFAInQ536Y3Iy8KhryKoIThc'],:secret_key=>ENV['sk_test\u akgw9wejocwfb2pap98gr8']Stripe.api_key=Rails.configuration.Stripe[:secret_key]Ohh!看,如果您直接使用您尝试过的密钥,那么它将看起来像这样可发布的密钥=>'pk\u test\RFAInQ536Y3Iy8KhryKoIThc'
,并且密钥是相同的&您不需要ENV[]
,它将工作,但这不是安全的。啊,但我仍然得到与以前相同的错误。我的意思是,在尝试检索费用中的Stripe.api#u密钥时出现错误的原始问题。创建获取错误时未提供api密钥。使用“Stripe.API_key=”设置您的API密钥。使用Figaro测试了您建议的另一个API密钥,它的工作方式与我想要的一样,谢谢
Rails.configuration.stripe = {
:publishable_key => ENV['STRIPE_PUBLISHABLE_KEY'],
:secret_key => ENV['STRIPE_SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]