Estou configurando webhooks do Stripe pela primeira vez. Fiz centenas de solicitações de teste e tive uma taxa de erro em torno de 90%. É imprevisível o motivo das falhas ocorrerem.
As respostas de falha no painel do Stripe são:
Timed out connecting to remote host
ou
Failed to connect to remote host
Meu webhook (simplifiquei para teste). Aproximadamente 10% das vezes, recebo uma resposta 200 com {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});
})
Eu tentei essas duas maneiras de definir o gancho, e também com e sem assíncrono:
expressRouter.route('/hooks').post( async (req, res) => {
...
})
// and
app.post("/hooks", async (req, res) => {
...
})
Entrei em contato com o suporte do Stripe e tentei todas as sugestões. Eles me deixaram com as seguintes possibilidades:
É possível que haja uma rede lenta envolvida ou algum outro problema de roteamento.
O provedor de host também pode precisar permitir o endereço IP de entrega do Stripe. Para sua informação, eles podem estar sendo bloqueados antes de chegar ao seu servidor
Adicionei os IPs do Stripe ao iptables, por exemplo:
iptables -I INPUT -p tcp -s 3.18.12.63 -j ACCEPT
Estou executando meu servidor Hostinger VPS com Caddy no Ubuntu 18.04. Isso pode ser um problema com a configuração do meu servidor? Qualquer conselho é muito apreciado.
Responder1
Parece que está funcionando.
Eu instalei o ngrok via apt (https://ngrok.com/download)
Em seguida, siga isto: youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio e configure o ngrok para encaminhar para localhost:4000:
ngrok http 4000
Acabei de enviar uma série de solicitações e todas foram bem-sucedidas. Não tenho certeza de como isso funciona/por que precisei disso, mas estou muito feliz por ter funcionado. Se alguém puder explicar por que não estava funcionando sem isso, por favor me avise!