我想要接收条纹网络挂钩,为了做到这一点,我必须使用初始化程序。使用Stripe_events gem。我不太熟悉初始化器,但我在这里学习!
- 我希望使用handler_method调用我的event
(webhook)。
我的初始值设定项/ 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做出操作。
答案 0 :(得分:1)
我想把它放在评论中,但它的评论太大了。在快速阅读文档here之后,我在下面写下了我对如何使用stripe_event
gem的理解。
所以,initializers/stripe.rb
你需要类似下面的代码块。您需要做的就是在配置块中使用事件名称和将处理该事件的类实例调用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