我正在使用 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 的实时测试服务器运行测试