rails中的条带支付逻辑

时间:2013-09-02 06:54:23

标签: ruby-on-rails stripe-payments

我正在尝试让用户填写表单,然后付费提交。一旦用户付费,我需要使用rails将布尔值从单独的模型更改为true。

这是我的费用控制器,完全来自文档。

class ChargesController < ApplicationController
def new
end

def create
  # Amount in cents
    @amount = 2900

    customer = Stripe::Customer.create(
      :email => current_user.email,
      :card  => params[:stripeToken]
    )

    charge = Stripe::Charge.create(
      :customer    => current_user.email,
      :amount      => @amount,
      :description => 'OneApp',
      :currency    => 'usd'
    )

  rescue Stripe::CardError => e
    flash[:error] = e.message
    redirect_to charges_path
  end

end 

1 个答案:

答案 0 :(得分:2)

如果Stripe::Charge的创建对您来说足够了,那么就像在create方法中检索要修改的模型实例并在那里设置布尔值一样简单。

例如,假设您要为当前用户设置subscribed布尔值,因此在您创建的方法中添加:

current_user.subscribed = true

或者,假设你想在paid模型实例上设置Order布尔值,然后在你添加的create方法中设置:

order = Order.find_by_some_way(:some_way => the_value_you_want)
order.paid = true unless order.nil?

如果您需要知道实际转移资金的时间,您必须询问Stripe。整合Stripe的webhooks是一个很好的宝石:

https://github.com/integrallis/stripe_event

无论如何,如果你想知道用户是否买了东西,我建议等待实际的转账通知,因为收费实际上并没有告诉你是否有钱。