~90 % Fehlerrate mit Stripe-Webhooks, unvorhersehbare Antwort. Serverproblem?

~90 % Fehlerrate mit Stripe-Webhooks, unvorhersehbare Antwort. Serverproblem?

Ich richte Stripe-Webhooks zum ersten Mal ein. Ich habe Hunderte von Testanfragen gestellt und hatte eine Fehlerrate von etwa 90 %. Es ist unvorhersehbar, warum die Fehler auftreten.

Die Fehlerantworten auf dem Stripe-Dashboard sind entweder:

Timed out connecting to remote host

oder

Failed to connect to remote host

Mein Webhook (ich habe ihn zum Testen vereinfacht). Ungefähr 10 % der Zeit erhalte ich eine 200-Antwort mit {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});
})

Ich habe diese beiden Möglichkeiten zum Definieren des Hooks ausprobiert, auch mit und ohne Async:

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

Ich habe mit dem Stripe-Support Kontakt aufgenommen und alle Vorschläge ausprobiert. Es blieben mir nur die folgenden Möglichkeiten:

Möglicherweise liegt es an einem langsamen Netzwerk oder einem anderen Problem mit dem Routing.

Der Host-Provider muss möglicherweise auch die Liefer-IP-Adresse von Stripe zulassen. Zu Ihrer Information: Möglicherweise werden sie blockiert, bevor sie Ihren Server erreichen.

Ich habe die IPs von Stripe zu iptables hinzugefügt, zB:

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

Ich betreibe meinen Hostinger VPS-Server mit Caddy auf Ubuntu 18.04. Könnte dies ein Problem mit der Einrichtung meines Servers sein? Jeder Ratschlag ist sehr willkommen.

Antwort1

Bei mir scheint es zu funktionieren.

Ich habe ngrok über apt installiert (https://ngrok.com/download)

Dann folgte dies: youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio, und ngrok wurde so eingerichtet, dass es an localhost:4000 weiterleitet:

ngrok http 4000

Ich habe gerade eine Menge Anfragen gesendet und sie waren alle erfolgreich. Ich bin mir nicht ganz sicher, wie das funktioniert/warum ich es brauchte, aber ich bin sehr froh, dass es funktioniert. Wenn jemand erklären kann, warum es ohne das nicht funktioniert hat, lassen Sie es mich bitte wissen!

verwandte Informationen