本地测试Rails中Stripe webhooks的事件处理程序



我正在使用 stripe_event gem 为 Stripe webhooks 设置事件处理程序。我想发送一封电子邮件,通知客户是否订阅未续订。其中一个设置如下:

# config/initializers/stripe.rb
StripeEvent.setup do
  subscribe 'customer.subscription.updated' do |event|
    subscription = event.data.object
    customer_id = subscription.customer
    user = User.find_by_customer_id(customer_id)
    UserMailer.delay.past_due_email(user) if subscription.status == 'past_due'
  end
end

现在我的目标是在本地测试上面的事件处理程序(不依赖 ngrok 或 ultrahook 等)。

在我的规范中,我构建了一个 "customer.subscription.updated" 类型的假 Stripe webhook 事件。它还包含一个 POST 请求以localhost:3000/stripe

RestClient.post('localhost:3000/stripe', fake_webhook_event)

我在本地启动 rails 服务器并运行规范。服务器正在接收 POST 请求,并且事件处理程序正在运行,但请求中包含的订阅对象的状态为 active 而不是 past_due 。其他属性,例如事件 ID,与我编写的假 webhook 相同。很奇怪。

有一种感觉,我不应该将请求发送到开发服务器,但也许在其他地方?有什么建议吗?提前谢谢你!

享受使用这个宝石 https://github.com/stripe-ruby-mock/stripe-ruby-mock

特征

  • 无需条带服务器访问
  • 轻松测试条带错误
  • 模拟和自定义条纹网络钩子
  • 拨动开关,针对 Stripe 的实时测试服务器运行测试

最新更新