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



我想接收条纹网钩活,为了做到这一点,我必须使用初始化器。使用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

相关内容

  • 没有找到相关文章