Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails-条带-未提供API密钥_Ruby On Rails_Ruby_Stripe Payments - Fatal编程技术网

Ruby on rails RubyonRails-条带-未提供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 =

我正在为我的网店尝试此条带快速签出,表单看起来很好,但是当重定向并运行费用时#create我收到一个错误,说没有提供API密钥。使用“Stripe.API_key=”设置API密钥。据我所知,我已在Stripe.rb中设置了API密钥

  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]