【发布时间】:2016-10-05 07:08:41
【问题描述】:
我想实时接收条纹网络挂钩,为此我必须使用初始化程序。使用 Stripe_events 宝石。我对初始化程序不太熟悉,但我是来学习的!
-我希望我的event(webhook) 被 handler_method 调用。
我的初始化器/stripe.rb
Rails.configuration.stripe = {
:publishable_key => ENV['STRIPE_PUBLISHABLE_KEY'],
:secret_key => ENV['STRIPE_SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
StripeEvent.configure do |events|
events.subscribe 'charge.succeeded', ReservationsController.new
events.all = AllEvents.new
end
如您所见,我设置了 events.all = AllEvents.new
我想将所有事件都调用到这个 stripe_handler 中。基于 event.type 是什么 Ex.'charge.succeeded'
if event.type == 'charge.succeeded'
etc........
end
在 app/stripe_handlers/all_events.rb 中
class AllEvents
def call(event)
if event.type == 'charge.succeeded'
reservation = Reservation.find_by_transaction_id(event.object.id)
reservation.update_attributes pay_completed: true
# reservation = Reservation.find_by_transaction_id
elsif event.type == 'customer.created'
elsif event.type == 'account.application.deauthorized'
# look out for account.updated and check if the account ID is unknown
end
end
end
总而言之,我想将 events.all 值发送到 handler_methods,我可以在其中为每个 webhook 执行操作。
【问题讨论】:
-
hmm,当您说“handle_method 的所有值”时,您的意思是像处理各种事件的单个方法一样吗?如果是这样的话,那么我不明白是什么阻止你制作个人“handler_methods”。
-
是的!像这样
def call(event)假设接收事件,然后在里面我使用事件值,这是刚刚作为 webhook 发送的特定事件
标签: ruby-on-rails ruby model controller event-handling