我正在尝试让用户填写表单,然后付费提交。一旦用户付费,我需要使用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
答案 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
无论如何,如果你想知道用户是否买了东西,我建议等待实际的转账通知,因为收费实际上并没有告诉你是否有钱。