Skip to main content

Refunds & Notifications · Article 6.7

Odśwież status — synchronizacja pull gdy webhook Stripe nie dotarł

Webhooki nie są doskonałe. Gdy nota kredytowa wydaje się utknięta w `requested` pomimo tego, że Stripe przetworzył zwrot, kliknij `Odśwież status`, żeby pobrać bieżący stan bezpośrednio ze Stripe. Ta sama logika przejść co webhook; bez ryzyka podwójnego wystrzelenia efektów ubocznych.

Odśwież status to przycisk „sprawdź czy działa". Gdy wszystko działa, webhook dostarcza werdykt Stripe w sekundy i nie potrzebujesz tego przycisku. Gdy webhook jest opóźniony lub zgubiony (usterka sieci na Twoim endpoincie, kolejka webhooka Stripe z backlogiem, Twój endpoint zwrócił odpowiedź 5xx, która wyczerpała 3-dniowe okno ponowień Stripe), Odśwież pozwala ominąć kanał push i pobrać odpowiedź bezpośrednio. Wynik jest taki sam jakby webhook dotarł czysto.

Step by step

  1. Zauważ zablokowany status requested.

    Baner czyta „Zwrot w toku, spodziewany w 3–5 dniach roboczych" i pozostaje statyczny przez >24 godziny.

  2. Kliknij Odśwież status.

    Z banera Zwrot lub wiersza strony Not kredytowych.

  3. Poczekaj ~2 sekundy.

    Serwer wywołuje API Stripe na połączonym koncie; rozwiązuje kanoniczny stan.

  4. UI aktualizuje się w miejscu.

    Jeśli Stripe mówi succeeded → baner zmienia się na „Zwrot zakończony [data]"; e-mail „zwrot zakończony" jest wysyłany; oferta zamyka się jeśli dotyczy. Jeśli failed → baner oferuje opcje Ponów / Oznacz jako zwrócono. Jeśli nadal oczekuje po stronie Stripe → kopia banera odświeża się, żeby odzwierciedlać zgłoszony stan Stripe.

  5. Nie potrzeba dalszego działania jeśli stan się zmienił.

    Wszystkie downstream hooki odppalają się automatycznie.

Baner Zwrot z przyciskiem Odśwież status. Po kliknięciu, krótki spinner, a następnie albo brak zmiany (Stripe nadal oczekujące) albo aktualizacja banera do stanu terminalnego.

Why this works this way

Dlaczego ręczny przycisk zamiast codziennego crona synchronizacyjnego? Koszt i opóźnienie. Cron job odpytujący Stripe codziennie dla każdej requested noty kredytowej dodaje stałe obciążenie API do limitów szybkości Stripe ORAZ wprowadza opóźnienie do 24h przed aktualizacją UI. Ręczny przycisk kładzie koszt tam gdzie jest faktycznie potrzebny (freelancer zastanawia się dlaczego baner jest zablokowany) i daje niemal natychmiastowe rozwiązanie. Możemy dodać automatyczną synchronizację w przyszłości jeśli zgłoszenia do pomocy technicznej pokażą, że byłoby to cenne, ale ręczna ścieżka obejmuje ~95% przypadków.

Troubleshooting

Keep reading

Odśwież status — synchronizacja pull gdy webhook Stripe nie dotarł · Help · Clozo