首页 文章

rails中的条带支付逻辑

提问于
浏览
1

我正在尝试让用户填写表单,然后付费提交 . 一旦用户付费,我需要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 回答

  • 2

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

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

    current_user.subscribed = true
    

    或者,假设您要在 Order 模型实例上设置 paid 布尔值,然后在您添加的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

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

相关问题