如何在初始化程序中调用处理程序方法?创建webhooks

时间:2016-10-04 20:50:18

标签: ruby-on-rails ruby model controller event-handling

我想要接收条纹网络挂钩,为了做到这一点,我必须使用初始化程序。使用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做出操作。

1 个答案:

答案 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