我正在为我的网上商店尝试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
答案 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']