【发布时间】:2013-11-26 05:47:18
【问题描述】:
我刚刚开始使用 Stripe,并按照他们的指南设置checkout with Rails
就我而言,我让用户能够升级事件列表。
在我的事件模型中,我有一个 make_premium 方法:
def make_premium
self.update_attribute(:premium_event, true)
end
我的 event_controller 的升级操作基于 Stripe 的创建示例,除了我添加了一个 repond_to 块以将用户带回他们升级的事件并调用 make_premium 方法。
def upgrade
@event = Event.find_by_slug(params[:id])
# Amount in pence
@amount = 299
customer = Stripe::Customer.create(
:email => current_user.email,
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
:description => 'Premium Event Upgrade',
:currency => 'gbp',
:metadata => {'event_id' => @event.id, 'event_headline' => @event.headline}
)
respond_to do |format|
format.html { redirect_to @event, :notice => 'Event was successfully upgraded.' }
@event.make_premium
end
rescue Stripe::CardError => e
flash[:error] = e.message
redirect_to event_path(@event)
end
我想知道的是,a) 考虑到随后的救援情况,在这里可以使用对块的响应,并且 b) 可以从该块中调用我的 make_premium 方法吗?
我已经尝试过使用 Stripe 的 webhook,虽然charge.suceeded 钩子运行良好,但如果上述方法足够,我可以避免额外的步骤。
如果对 Stripe 有更多经验的人提供任何见解,我们将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 stripe-payments