Stripe webhook
A vevő a Stripe Checkout oldalán fizet, a Stripe pedig checkout.session.completed eseményt küld a webhook végpontodra. A végpont ellenőrzi az aláírást, megkeresi a rendelést, és kiállítja a számlát. A Stripe addig küldi újra az eseményt, amíg 2xx választ nem kap, ezért a számlázásnak idempotensnek kell lennie.
A recept a Fizetett rendelés számlája recept szamlazFizetettRendelest() függvényét használja, amely kiállítás előtt rendelésszám alapján megkeresi a számlát.
Telepítés#
A Checkout munkamenet#
A webhook két dolgot vár a munkamenettől: a saját rendelésazonosítódat a metadata mezőben, és a vevő számlázási címét. A cím nélkül nem lehet számlát kiállítani. A stripeTetelek() a saját függvényed, amely a rendelés sorait a Stripe line_items formátumára alakítja.
A webhook#
A @/lib/rendelesek a saját adatbázis-réteged. A szamlazasiKiserlet() megnöveli és visszaadja a rendelés számlázási kísérleteinek számát, a kezelesreVar() pedig emberi ellenőrzésre jelöli a rendelést.
A válaszkódok szándékosak:
| Helyzet | Válasz | Mi történik |
|---|---|---|
| Hibás vagy hiányzó aláírás | 400 | A Stripe jelzi a hibát a Dashboardon. |
| Más esemény, fizetetlen munkamenet, már számlázott rendelés | 200 | Nincs teendő. |
| Hálózati hiba, időtúllépés vagy karbantartás, és a számla nem készült el | 503 | A Stripe később újraküldi az eseményt, és a függvény újra lekérdez a kiállítás előtt. |
| Validációs, fiók- vagy egyéb végleges hiba | 200 | A rendelés emberi ellenőrzésre vár, az újraküldés nem segítene. |
| Adatbázis- vagy egyéb nem kassza hiba | 500 | A Stripe újraküldi az eseményt. |