GET zwraca listę zwrotów danej płatności, więc po zleceniu zwrotu sprawdzasz jego stan tam, gdzie go zleciłeś.
1. Endpointy
POST tworzy zwrot, GET zwraca listę zwrotów tej płatności.
Nagłówki
POST wymaga klucza z uprawnieniem do zapisu, GET - do odczytu. Klucz bez wymaganego uprawnienia kończy się kodem 401; właściwy wygenerujesz w Panelu.
Segment
pay w ścieżce wskazuje bramkę płatniczą. Pozostałe produkty paymove mają własne segmenty (go, parking, multi) - zwrot wykonuj pod segmentem produktu, w ramach którego powstała płatność.Skąd wziąć orderId
{orderId} to wewnętrzny identyfikator zamówienia nadany przez Paymove, na przykład PAY1784798914400. Masz go w dwóch miejscach:
- w polu
orderIdpayloadu webhooka, - w odpowiedzi zapytania o status płatności.
2. Wykonanie zwrotu
{} - zwraca całą kwotę płatności.
Parametry body
Zwróć uwagę na nazwę pola: tutaj kwota to
amountMinor, podczas gdy przy tworzeniu płatności jest to price. Jednostka jest w obu miejscach ta sama - grosze jako liczba całkowita.Odpowiedź
POST zwraca jeden zwrot, GET tablicę obiektów dokładnie tego samego typu - jeden parser obsłuży oba wywołania.
3. Statusy zwrotu
Polestatus przyjmuje te same wartości co status płatności:
Udany zwrot ustawia status całej płatności na
REFUNDED.
4. Lista zwrotów płatności
[]. To właściwy endpoint do odpytywania o stan zwrotu - polling po kilku sekundach, aż status będzie końcowy.
Lista zawiera także nieudane próby. Każdy zwrot zapisujemy przed skierowaniem go do rozliczenia, więc próba odrzucona od razu nie przepada -
POST odpowiada wtedy 400, a na liście widać ją ze statusem ERROR.5. Czego nie da się zwrócić
Każdy z tych przypadków kończy się kodem400:
- Płatność nieukończona. Zwrócić można wyłącznie płatność ze statusem
COMPLETED. PłatnościINITIALIZED,PENDING,CANCELEDiERRORnie ma po co zwracać. - Płatność, która ma już zwrot. Istniejący zwrot w stanie
PENDINGlubCOMPLETEDblokuje kolejne próby - jeden zwrot na płatność. - Kwota inna niż pełna.
amountMinorróżne od kwoty płatności jest odrzucane; zwroty częściowe nie są obsługiwane. - Części płatności nie da się zwrócić przez API w ogóle - zależy to od sposobu, w jaki zostały rozliczone. Jeśli dostajesz
400przy ukończonej płatności i pełnej kwocie, napisz na integration@paymove.io - zwrot wykonamy za Ciebie.
Zwroty płatności PayPo są obsługiwane, ale potwierdzenie przychodzi asynchronicznie - odpowiedź
POST ma zawsze status: "PENDING", nigdy od razu COMPLETED.6. Ograniczenia
7. Kody statusów
Płatność, która nie istnieje, i płatność należąca do innego partnera zwracają ten sam kod
403. Jest to zamierzone - 404 potwierdzałoby, które identyfikatory zamówień istnieją w Paymove. Nie wnioskuj z 403 o tym, czy płatność istnieje.orderId i po partnerze, do którego należy Twój klucz. Nie da się więc zwrócić płatności innego partnera ani skierować zwrotu na jego dane rozliczeniowe.
8. Zalecany przepływ
- Przy obsłudze webhooka zapisz u siebie
orderIdpłatności obok swojegoexternalId. - Przed zwrotem upewnij się, że płatność ma status
COMPLETEDi że nie zwróciłeś jej już wcześniej -GET …/refund. - Wyślij
POST …/refund. ZapiszidiorderIdzwrotu z odpowiedzi. - Odpytuj
GET …/refund, aż status zwrotu będzie końcowy.COMPLETEDoznacza zwrot rozliczony;ERROR- odrzucony. - Dopiero po
COMPLETEDoznacz zwrot jako zrealizowany u siebie.
Co dalej
Statusy płatności
Skąd wziąć
orderId i jak sprawdzić status płatności.Kody błędów
Format błędów i mechanizmy, których API nie posiada.
REST API
Tworzenie płatności, którą potem zwracasz.
Wsparcie
Kontakt, gdy zwrotu nie da się wykonać przez API.