Puncte:-1

Rată de eroare de ~90% cu webhook-uri Stripe, răspuns imprevizibil. Problema cu serverul?

drapel dz

Configurez webhook-uri Stripe pentru prima dată. Am făcut sute de solicitări de testare și am avut o rată de eroare de aproximativ 90%. Este imprevizibil de ce apar eșecurile.

Răspunsurile de eșec de pe tabloul de bord Stripe sunt:

Conexiunea la gazda de la distanță a expirat

sau

Nu s-a putut conecta la gazda de la distanță

Webhook-ul meu (l-am simplificat pentru testare). Aproximativ 10% din timp, primesc un răspuns de 200 cu {primit: adevărat}:

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

  const event = req.body;

  console.log("Eveniment:");
  console.log(eveniment);

  // Gestionează evenimentul
  comutare (event.type) {
    cazul „payment_intent.succeeded”:
      const paymentIntent = event.data.object;
      // Apoi definiți și apelați o metodă pentru a gestiona intenția de plată cu succes.
      // handlePaymentIntentSucceeded(paymentIntent);
      pauză;
    cazul „payment_method.attached”:
      const paymentMethod = event.data.object;
      // Apoi definiți și apelați o metodă pentru a gestiona atașarea cu succes a unui PaymentMethod.
      // handlePaymentMethodAttached(paymentMethod);
      pauză;
    // ... gestionează alte tipuri de evenimente
    Mod implicit:
      console.log(`Tipul de eveniment netratat ${event.type}`);
  }

  // Returnează un răspuns pentru a confirma primirea evenimentului
  res.json({primit: adevărat});
})

Am încercat aceste două moduri de a defini cârligul și, de asemenea, cu și fără asincron:

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

Am fost în contact cu asistența Stripe și am încercat toate sugestiile lor. Mi-au lăsat următoarele posibilități:

Este posibil să existe o rețea lentă implicată sau o altă problemă cu rutarea.

Furnizorul de gazdă poate avea nevoie să permită și adresa IP de livrare a lui Stripe, FYI acestea pot fi blocate înainte de a ajunge la serverul dvs

Am adăugat IP-urile lui Stripe la iptables, de exemplu:

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

Îmi rulez serverul Hostinger VPS cu Caddy pe Ubuntu 18.04. Ar putea fi aceasta o problemă cu serverul meu configurat? Orice sfat este foarte apreciat.

paladin avatar
drapel id
100 de cereri de testare? În ce interval de timp? Conexiunile TCP au o latență, trebuie să fii conștient de asta.
Joseph avatar
drapel dz
@paladin, am făcut 100 de solicitări în ultimele 24 de ore. În mod normal, trimit 10 în succesiune rapidă. Uneori 5 ar putea reuși, alteori 0 reușesc. În prezent, la o rată de eroare de 84%.
paladin avatar
drapel id
Ce înseamnă rapid? Dacă scrieți o buclă, care declanșează 10 solicitări fără întârziere, nu este de mirare de ce obțineți o rată de eroare atât de mare.
Joseph avatar
drapel dz
În cea mai mare parte, am declanșat manual solicitări cu curl, la câteva secunde distanță, dar le-am declanșat și făcând vânzări de test adecvate prin intermediul Stripe checkout și am primit aceleași erori. De asemenea, am încercat acest lucru trimițând o singură solicitare, dar am primit totuși o rată de eroare. Deci, nu cred că aceasta este problema pe care o am, dar puteți explica de ce trimiterea mai multor solicitări poate cauza o eroare?
paladin avatar
drapel id
De exemplu, aveți un client și un server. Serverul este capabil să gestioneze 2 solicitări client pe secundă în același timp, nu mai mult. Acum aveți un client care face 2 solicitări într-o secundă, serverul este în regulă. Acum același client încearcă să facă 3 solicitări într-o secundă. 2 din 3 solicitări pot fi răspuns la timp de către server, a 3-a solicitări expiră.
paladin avatar
drapel id
Același lucru este valabil și pentru pachetele IP, nu pot exista pachete IP nelimitate pe linie, doar 1 (UN) pachet IP poate fi pe linie, dacă sosește și un alt pachet IP, unul dintre acele pachete „moare”, care este aleatoriu.
Joseph avatar
drapel dz
Ah, am inteles, multumesc pentru explicatii. Cred că tocmai am remediat, după o zi+ în care am încercat diverse lucruri! Am găsit asta: https://www.youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio și am configurat ngrok pentru a redirecționa către localhost:4000. Am trimis o mulțime de solicitări și toate au avut succes. Nu sunt foarte sigur cum funcționează acest lucru / de ce am avut nevoie de el, dar sunt foarte fericit că funcționează. Raspund si acum la intrebare.
Puncte:-1
drapel dz

Se pare că funcționează.

Am instalat ngrok prin apt (https://ngrok.com/download)

Apoi a urmat: youtube.com/watch?v=S1uExj7mMgM&ab_channel=Twilio, și configurați ngrok pentru a redirecționa către localhost:4000:

ngrok http 4000

Am trimis o mulțime de solicitări și toate au avut succes. Nu sunt foarte sigur cum funcționează acest lucru / de ce am avut nevoie de el, dar sunt foarte fericit că funcționează. Dacă cineva poate explica de ce nu a funcționat fără acest lucru, vă rog să-mi spuneți!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.