𝗦𝘁𝗼𝗽 𝗥𝗲𝗳𝘂𝗻𝗱𝗶𝗻𝗴 𝗣𝗮𝘆𝗺𝗲𝗻𝘁𝘀 𝗬𝗼𝘂 𝗦𝗵𝗼𝘂𝗹𝗱 𝗡𝗲𝘃𝗲𝗿 𝗛𝗮𝘃𝗲 𝗖𝗵𝗮𝗿𝗴𝗲𝗱

Wielu programistów wdraża proces zakupowy, który natychmiast obciąża kartę. Następnie uruchamiają walidację zamówienia, taką jak sprawdzanie stanów magazynowych czy weryfikacja pod kątem oszustw.

Jeśli walidacja zakończy się niepowodzeniem, kod zleca zwrot środków.

Powoduje to problemy dla Twoich klientów. Widzą obciążenie, a kilka dni później zwrot. Myślą, że Twoja firma jest niewiarygodna. Myślą, że ich pieniądze zostały zablokowane.

Zwroty generują realne koszty:

Rozwiązaniem jest zastosowanie modelu authorize i capture.

Większość samouczków uczy natychmiastowego pobierania środków (capture). Zamiast tego powinieneś najpierw zablokować fundusze (hold). Blokada widnieje na karcie, ale pieniądze nie są przesyłane. Jeśli walidacja zakończy się niepowodzeniem, po prostu anulujesz blokadę. Żadne obciążenie nie pojawi się na wyciągu klienta.

W Stripe robisz to, ustawiając capture_method na manual.

Nowy przepływ wygląda następująco:

  1. Utwórz PaymentIntent z opcją manual capture.
  2. Środki są autoryzowane, ale nie są przesyłane.
  3. Uruchom walidację zamówienia.
  4. Jeśli zamówienie jest poprawne, pobierz płatność (capture).
  5. Jeśli zamówienie nie przejdzie walidacji, anuluj intent.

To podejście oferuje kilka korzyści:

Większość głównych dostawców płatności stosuje tę samą logikę.

Stosuj tę metodę, jeśli jakakolwiek część Twojej logiki biznesowej może zawieść po tym, jak klient kliknie „zapłać”. Przenieś ryzykowne sprawdzenia między etap autoryzacji a etap pobrania środków (capture). Dzięki temu przepływy pieniężne będą przejrzyste, a Twoi klienci zadowoleni.

Źródło: https://dev.to/jguillaumesio/stop-refunding-payments-you-should-never-have-charged-4d7m