使用Stripe for rails检查是否成功充电

时间:2014-11-18 03:12:03

标签: ruby-on-rails ruby stripe-payments payment-processing webhooks

上下文:

我正在使用条纹结帐来接受铁路中的一次性付款。 我有一个充电控制器,如下所示。 我最初使用条带webhook来收听charge.succeeded,但由于webhooks的异步特性而遇到了一些问题。 我已将业务逻辑移至控制器。 如果客户费用成功,那么我将客户和其他一些细节保存到数据库。

我的问题:

此检查是否足以确保收费成功?

if charge["paid"] == true

Stripe :: Charge.create的Stripe文档指出,“ 如果充电成功,则返回充电对象。如果出现问题,会引发错误。常见的错误来源是无效或过期的卡,或可用余额不足的有效卡。“

我的ChargesController:

class ChargesController < ApplicationController

  def new

  end

  def create
    # Amount in cents

    @amount = 100
    temp_job_id = cookies[:temp_job_id]
    customer_email =  TempJobPost.find_by(id: temp_job_id).company[:email]
    customer = Stripe::Customer.create(
      :email => customer_email,
      :card  => params[:stripeToken]
    )

    charge = Stripe::Charge.create(
      :customer    => customer.id,
      :amount      => @amount,
      :description => 'Rails Stripe customer',
      :currency    => 'usd',
      :metadata => {"job_id"=> temp_job_id}
    )
    # TODO: charge.paid or charge["paid"]
    if charge["paid"] == true
     #Save customer to the db
    end

    # need to test this and refactor this using begin-->rescue--->end
    rescue Stripe::CardError => e
      flash[:error] = e.message
      redirect_to charges_path

  end
end

1 个答案:

答案 0 :(得分:12)

是的,这就是你需要做的。如果充电成功,Stripe将返回Charge对象,您可以检查其paid参数。如果收费失败,我们会抛出异常。

干杯, 拉里

PS我在Stripe的支持工作。