Rails:不能多次使用条带标记 - [Stripe :: InvalidRequestError]

时间:2016-02-05 06:19:43

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

我在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

customer record on stripe subscription success

1 个答案:

答案 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?允许创建方法完成,发送电子邮件并重定向。