如何在 Rails 上的 Ruby 中创建 webhook

How to create a webhook in Ruby on Rails

我有一个项目,我在其中实现了不同类型的支付,我正在使用 Conekta API,现在我想做的是在我的项目中实现 webhook,但我是新手而且我不知道该怎么做

Webhooks Conekta

我的控制器中有一个方法并在我的 routes.rb

中指定了一个 post 路由

我的控制器:

class WebhooksController < ApplicationController
  skip_before_filter :verify_authenticity_token

  def receive
    data = JSON.parse(request.body.read)
    if data['type'] == 'charge.paid'
      @payment_method = data['charges']['data']['object']['payment_method']['type']
      msg = 'Tu pago con #{@payment_method} ha sido comprobado'
      ExampleMailer.email(data, msg)
    end
  end

  render status: 200
end

我的routes.rb:

post 'webhooks/receive'

根据文档,我需要将路由传递给 Conekta,但我的做法不正确:

http://localhost:3000/webhooks/receive

如何在 rails 上的 ruby 中正确创建 webhook?有什么例子吗?非常感谢!!

我认为您不能将 localhost 传递给 Conekta,因为它将无法通过 localhost 访问您的应用程序(这意味着只能在本地访问)。

有一个名为 ngrok 的工具可以将您的主机暴露在外部并提供一个 public 主机。您可以尝试使用它并再次测试您的 webhook。