gpt4 book ai didi

ruby-on-rails - 在 Rails 中本地测试 Stripe webhooks 的事件处理程序

转载 作者:行者123 更新时间:2023-12-03 21:40:15 25 4
gpt4 key购买 nike

我正在使用 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 事件。 .它还包含对 localhost:3000/stripe 的 POST 请求。 :
RestClient.post('localhost:3000/stripe', fake_webhook_event)

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

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

最佳答案

享受使用这颗 gem https://github.com/stripe-ruby-mock/stripe-ruby-mock

Features

  • No stripe server access required
  • Easily test against stripe errors
  • Mock and customize stripe webhooks
  • Flip a switch to run your tests against Stripe's live test servers

关于ruby-on-rails - 在 Rails 中本地测试 Stripe webhooks 的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20755403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com