我在Rails 4x应用程序中使用条带检查。我的目标是提供每月订阅。我收到了以下内容。
Stripe :: InvalidRequestError不能多次使用stripeToken。在create_stripe_subscription
中调用subscriptions_controller#create
时会发生这种情况。
尽管出现此错误消息,但我的客户已在我的条带信息中心中显示费用。
我想知道我在哪里复制这个一次性使用令牌,并了解这个订阅需要什么条带。
以下是相关文件&这些图片展示了我迄今为止的实施工作。
初始化/ stripe.rb:
Rails.configuration.stripe = {
publishable_key: ENV["STRIPE_PUBLISHABLE_KEY"],
secret_key: ENV["STRIPE_SECRET_KEY"]
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
subscriptions / new(“小”计划的条纹结帐按钮)
<script src="https://checkout.stripe.com/checkout.js"
class="stripe-button",
data-key="<%= ENV["STRIPE_PUBLISHABLE_KEY"] %>",
data-email="<%= current_employee.email %>",
data-image="app/assets/images/mascot_favicon.ico",
data-name="Small Group Home",
data-description="Monthly subcription plan",
data-amount="<%= @small_plan.amount %>",
data-id="<%= @small_plan.id %>",
data-label="Subscribe!">
</script>
subscriptions_controller.rb
def create
create_stripe_subscription
if create_stripe_subscription.valid?
AdminMailer.welcome_email(@admin).deliver_now
flash[:success] = "#{ @admin.full_name.pluralize } created!"
redirect_to root_path
else
flash.now[:notice] = "There was a problem with the form"
render :new
end
end
.
.
.
def create_stripe_subscription
plan_id = params[:plan_id]
plan = Stripe::Plan.retrieve(plan_id)
token = params[:stripeToken]
email = params[:stripeEmail]
customer = Stripe::Customer.create(
source: token,
email: email,
plan: plan
)
subscription = Subscription.new
subscription.stripe_card_token = customer.id
same_customer = Stripe::Customer.retrieve(subscription.stripe_card_token)
same_customer.subscriptions.create(plan: params[:plan_id])
end
stipe dash
答案 0 :(得分:1)
我通过处理Stripe::InvalidRequestError
中的create_stripe_subscription method
来解决这个问题:
subscriptions_controller.rb
def create_stripe_subscription
.
.
.
rescue Stripe::InvalidRequestError => e
logger.error "Stripe error: #{e.message}"
end
这让我从我的应用程序中找到了noMethodError。然后错误来自我的subscriptions_controller的create方法中的这一行。
if create_stripe_subscription.valid?
删除valid?
允许创建方法完成,发送电子邮件并重定向。