Ruby on Rails - Stripe - 没有提供API密钥

时间:2018-04-02 15:00:14

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

我正在为我的网上商店尝试Stripe快速结帐,表单显示正常,但在重定向并运行费用#create 时,我收到错误消息未提供API密钥。设置您的API密钥使用“Stripe.api_key =”。据我所知,我已经在 stripe.rb

中进行了设置
  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

错误来自 charges_controller.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

以下是我设置 secrets.yml

的方法
 shared:
   stripe_api_key: sk_test_####################
   stripe_publishable_key: pk_test_###############
   secret_key_base: ##############################

这是一个gif,显示在条形码付款会话中点击付款时会发生什么:imgur gif

2 个答案:

答案 0 :(得分:1)

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]

我使用过的其他内容

您需要设置条带STRIPE_PUBLISHABLE_KEY & STRIPE_SECRET_KEY以安全地设置这些密钥,您可以在安装Figaro gem之后使用figaro gem,然后在config目录中创建一个名为application.yml的文件你可以像这样设置你的钥匙

STRIPE_PUBLISHABLE_KEY: pk_xxxxxxxxxxxxxxxxxxxx
STRIPE_SECRET_KEY: sk_xxxxxxxxxxxxxxxxxxxxxxx

然后更新stripe.rb内的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]

就是这样,你做到了。

答案 1 :(得分:0)

为什么不把API密钥放在初始化程序中?更好的是,将其存储为环境变量并引用它。使用以下内容创建config/initializers/stripe.rb Stripe.api_key = ENV['STRIPE_SECRET'] STRIPE_PUBLIC_KEY = ENV['STRIPE_PUBLIC_KEY']