Webhooken
Vad den gör, hur ni skapar den, och varför en betalning aldrig blir en order utan den.
På den här sidan
Webhooken är Stripes sätt att berätta för Printlo att pengarna gått igenom. Utan den betalar kunden, men ingen order dyker upp hos er.
Det är den enskilt vanligaste orsaken till att en uppsättning ser klar ut men inte fungerar.
Varför den behövs
Kundens webbläsare kan inte tillåtas säga "betalningen gick igenom". Vem som helst kan påstå det. Beskedet måste komma från Stripe direkt till vår server, signerat, så att det går att lita på.
Därför skapas ordern av webhooken, inte av kundens sida.
Skapa den
1. Gå till webhooks hos Stripe
2. Lägg till en endpoint
Adressen är densamma för alla tryckerier:
https://admin.printlo.app/api/webhooks/stripe
Kopiera den härifrån, skriv den inte för hand. Printlo läser ut vilket tryckeri en betalning hör till ur själva betalningen.
3. Välj händelse
Prenumerera bara på payment_intent.succeeded.
Fler händelser behövs inte. De skapar bara trafik som vi ändå ignorerar.
4. Kopiera hemligheten
Den visas när endpointen sparats och börjar på whsec_. Klistra in den i
Webhook-hemlighet (whsec_...) under Inställningar → Betalning och klicka
Spara ändringar.
Testläge och skarpt läge har var sin
Det här missas ofta. Webhooks är separata mellan lägena, precis som nycklarna.
Skapar ni en webhook i testläget och byter sedan till skarpa nycklar, finns ingen webhook i det skarpa läget. Betalningarna går igenom och ordrarna uteblir.
Kontrollera att ni står i rätt läge när ni skapar endpointen.
Vad Printlo gör med händelsen
- Läser ut vilket tryckeri händelsen gäller.
- Hämtar det tryckeriets webhook-hemlighet och verifierar signaturen. Först därefter litar vi på något i innehållet.
- Räknar om priset mot er prislista och jämför med det betalda beloppet.
- Skapar ordern, stänger korgen och skickar orderbekräftelsen.
Steg två är skälet till att varje tryckeri har en egen hemlighet: vi kan inte verifiera en signatur förrän vi vet vems nyckel som gäller.
Dubbla ordrar kan inte uppstå
Stripe skickar om händelser som inte kvitterats, ibland i flera dygn. Om samma betalning kommer fram två gånger återanvänds den order som redan finns i stället för att en ny skapas.
Ni får alltså aldrig två ordrar för en betalning, även om Stripe försöker flera gånger.
En läxa som ligger i koden
Under en period i augusti stängde Stripe av vår endpoint efter nio dygn av misslyckade leveranser.
Orsaken var att vi svarade med ett fel på händelser vi inte kände igen, till exempel en testbetalning någon gjort i Stripes egen panel. Stripe räknar allt utom ett godkänt svar som ett misslyckande, gör om försöket, och stänger till slut av slutpunkten. Då slutade även de riktiga orderhändelserna komma fram.
Numera kvitterar vi allt vi inte bryr oss om, och loggar det.
Vad det betyder för er: ser ni i Stripe att endpointen är avstängd eller har misslyckade leveranser, hör av er. Det är inte något ni ska försöka reda ut själva.
Se även Stripes dokumentation om webhooks.