~90% de tasa de error con webhooks de Stripe, respuesta impredecible. ¿Problema del servidor?

~90% de tasa de error con webhooks de Stripe, respuesta impredecible. ¿Problema del servidor?

Estoy configurando webhooks de Stripe por primera vez. Hice cientos de solicitudes de prueba y tuve una tasa de error de alrededor del 90%. Es impredecible por qué ocurren las fallas.

Las respuestas de error en el panel de Stripe son:

Timed out connecting to remote host

o

Failed to connect to remote host

Mi webhook (lo he simplificado para realizar pruebas). Aproximadamente el 10% de las veces, obtengo una respuesta 200 con {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});
})

He probado estas dos formas de definir el gancho, y también con y sin asíncrono:

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

Me puse en contacto con el soporte de Stripe y probé todas sus sugerencias. Me dejaron las siguientes posibilidades:

Es posible que haya una red lenta involucrada o algún otro problema con el enrutamiento.

Es posible que el proveedor de alojamiento también deba permitir la dirección IP de entrega de Stripe; para su información, es posible que se bloqueen antes de llegar a su servidor.

He agregado las IP de Stripe a iptables, por ejemplo:

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

Estoy ejecutando mi servidor Hostinger VPS con Caddy en Ubuntu 18.04. ¿Podría ser esto un problema con la configuración de mi servidor? Cualquier consejo es muy apreciado.

Respuesta1

Parece que lo tengo funcionando.

Instalé ngrok a través de apt (https://ngrok.com/download)

Luego siguió esto: youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio y configuró ngrok para reenviar a localhost:4000:

ngrok http 4000

Acabo de enviar un montón de solicitudes y todas tuvieron éxito. No estoy seguro de cómo funciona esto ni de por qué lo necesitaba, pero estoy muy feliz de que funcione. Si alguien puede explicar por qué no funcionaba sin esto, ¡hágamelo saber!

información relacionada