我想接收条纹网钩活,为了做到这一点,我必须使用初始化器。使用Stripe_events gem。我不太熟悉初始化器,但我在这里学习!
-我想我的event
(webhook)得到调用与handler_method。
我的初始化/条纹。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
可以看到,我设置了事件。all = AllEvents.new
我想把所有的事件调用到这个stripe_handler中。基于什么事件。类型为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
总之,我想发送事件。所有的值到handler_methods中,我可以为每个webhook做动作。
我想把这个放在注释中,但是它太大了,不适合注释。在快速阅读了这里的文档后,我写下了我对如何使用stripe_event
gem的理解。
所以,initializers/stripe.rb
你需要类似下面的代码块。你所需要做的就是在configure块中调用events.subscribe
,其中包含事件的名称和处理该事件的类的实例。您不需要仅使用一个对象来处理所有事件。
StripeEvent.configure do |events|
events.subscribe 'charge.succeeded', ChargeSucceeded.new
event.subscribe 'customer.created', CustomerCreated.new
event.subscribe 'account.application.deauthorized', Deauthorised.new
end
处理事件的类看起来像这样:
class ChargeSucceeded
def call(event)
#Code to handle event 'charge.succeeded'
end
end
class CustomerCreated
def call(event)
#Code to handle event 'customer.created'
end
end
class Deauthorised
def call(event)
#Code to handle event 'account.application.deauthorized'
end
end