Stripe webhook 错误率约为 90%,响应不可预测。服务器问题?

Stripe webhook 错误率约为 90%,响应不可预测。服务器问题?

我第一次设置 Stripe webhook。我发出了数百个测试请求,错误率约为 90%。无法预测失败的原因。

Stripe 仪表板上的失败响应包括:

Timed out connecting to remote host

或者

Failed to connect to remote host

我的 webhook(我已将其简化以便进行测试)。大约 10% 的时间,我会收到 200 响应{received: true}

expressRouter.route('/hooks').post( async (req, res) => {

  const event = req.body;

  console.log("Event:");
  console.log(event);

  // Handle the event
  switch (event.type) {
    case 'payment_intent.succeeded':
      const paymentIntent = event.data.object;
      // Then define and call a method to handle the successful payment intent.
      // handlePaymentIntentSucceeded(paymentIntent);
      break;
    case 'payment_method.attached':
      const paymentMethod = event.data.object;
      // Then define and call a method to handle the successful attachment of a PaymentMethod.
      // handlePaymentMethodAttached(paymentMethod);
      break;
    // ... handle other event types
    default:
      console.log(`Unhandled event type ${event.type}`);
  }

  // Return a response to acknowledge receipt of the event
  res.json({received: true});
})

我尝试过以下两种定义钩子的方法,以及使用和不使用异步的方法:

expressRouter.route('/hooks').post( async (req, res) => {
  ...
})
// and 
app.post("/hooks", async (req, res) => {
  ...
})

我已经联系了 Stripe 支持人员,并尝试了他们提出的所有建议。他们给了我以下几种可能的解决方案:

这可能是由于网络速度较慢或路由存在其他问题。

主机提供商可能也需要允许 Stripe 的交付 IP 地址,请注意,它们可能会在到达你的服务器之前被阻止

我已将 Stripe 的 IP 添加到 iptables 中,例如:

iptables -I INPUT -p tcp -s 3.18.12.63 -j ACCEPT

我在 Ubuntu 18.04 上使用 Caddy 运行我的 Hostinger VPS 服务器。这可能是我的服务器设置问题吗?任何建议都非常感谢。

答案1

我似乎已经让它工作了。

我通过 apt 安装了 ngrok (https://ngrok.com/download

然后按照以下步骤操作:youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio,并设置 ngrok 转发到 localhost:4000:

ngrok http 4000

我刚刚发送了大量请求,它们都成功了。我不太清楚它是如何工作的/为什么我需要它,但我很高兴它能工作。如果有人能解释为什么没有这个它就无法工作,请告诉我!

相关内容