语境:
我正在使用条纹结帐来接受铁路一次性付款.
我有一个充电控制器,如下所示.
我最初使用条带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
解决方法
是的,这就是你需要做的.如果充电成功,Stripe将返回Charge对象,您可以检查其付费参数.如果收费失败,我们会抛出异常.
干杯,
拉里
PS我在Stripe的支持工作.