Przejęcie służy do zażądania rozliczenia wcześniej autoryzowanych środków.
Żądanie Capture jest wykonywane przy użyciu poprzedniej płatności z preautoryzacją (AUTH) poprzez odniesienie do jej identyfikatora transakcji i wysłanie żądania POST przez HTTPS do punktu końcowego /payments/{transactionID}/capture.
Przechwytywanie może odbywać się na różne sposoby:
- Pełne: przechwyć całą autoryzowaną kwotę i dokończ zakup
- Częściowe: podziel przechwytywanie na jedno lub kilka żądań przechwytywania, aż do całkowitej autoryzowanej kwoty
W przypadku żądania przechwytywania należy wysłać:
Opis przechwytywania:
Operacja | Typ operacji | Metoda działania i punkt końcowy | Opis operacji |
Karta | Połączenie synchroniczne | POST version-id/{original-tx-id}/capture | Żąda przejęcia finansowego (kwota częściowa lub całkowita) związanego z poprzednim zezwoleniem. |
Żądanie przechwytywania:
Lokalizacja | Element danych | Typ | Stan | Opis |
Ścieżka | original-tx-id | Ciąg | Obowiązkowy | Oryginalny identyfikator transakcji (identyfikator transakcji pierwotnej autoryzacji) |
Nagłówek żądania | Typ zawartości | Ciąg | Obowiązkowy | aplikacja/json |
Nagłówek żądania | autoryzacja | Ciąg | Obowiązkowy | Token okaziciela. Na podstawie uwierzytelniania OAuth2 przeprowadzonego na etapie wstępnym. |
Nagłówek żądania | x-ibm-client-id | Ciąg | Obowiązkowy | Token identyfikujący organizację klienta. Jest on podawany podczas procesu onboardingu i należy go stosować podczas każdego połączenia. |
Treść żądania | sprzedawca | Sprzedawca | Obowiązkowy | Obiekt definiujący Sprzedawcę. |
Zapytanie o Body.merchant | terminalId | Max10NumericText | ||
Zapytanie o Body.merchant | kanał | Ciąg | Kanał użyty w transakcji. | |
Zapytanie o Body.merchant | merchantTransactionId | Ciąg | Obowiązkowy | Unikalny identyfikator transakcji z perspektywy sprzedawcy. |
Treść żądania | transakcja | Transakcja | Obowiązkowy | Obiekt definiujący transakcję. |
Żądanie Body.transaction | transactionTimeStamp | ISODateTime | Obowiązkowy | Znacznik czasu transakcji. |
Żądanie Body.transaction | opis | Ciąg | Obowiązkowy | Krótki opis transakcji. |
Żądanie Body.transaction | ilość | Ilość | Obowiązkowy | Parametr określający wartość i walutę transakcji. |
Żądanie Body.transaction.amount | wartość | Numer (podwójny) | Obowiązkowy | Kwota w transakcji. |
Żądanie Body.transaction.amount | waluta | Kod waluty | Obowiązkowy | Waluta użyta w transakcji. Alpha3 |
Treść żądania | originalTransaction | OriginalTransaction | Obowiązkowy | Obiekt identyfikujący pierwotną transakcję. |
Request Body.originalTransaction | identyfikator | Ciąg | Obowiązkowy | Oryginalna identyfikacja transakcji. |
Przykład żądania przechwytywania:
{
"merchant": {
"terminalId": {{TerminalID}},
"channel": "web",
"merchantTransactionId": "BO_Order Id: "
},
"transaction": {
"transactionTimestamp": "{{trxDatetime}}",
"description": "Transaction short description",
"amount": {
"value": 1,
"currency": "PLN"
},
"originalTransaction": {
"id": "{{originalTransactionId}}"
}
}
}
Odpowiedź poniżej będzie zawierać identyfikator transakcji, którego możesz użyć do sprawdzenia statusu.
{
"merchant": {
"terminalId": "101776",
"merchantTransactionId": "BO_Order Id: ",
"merchantTransactionTimestamp": "2023-06-20T11:15:57.040Z"
},
"transactionTimestamp": "2023-06-20T11:16:14.988Z",
"amount": {
"value": "1",
"currency": "PLN"
},
"transactionID": "RW5vBMHj4RhQWFRc0GvS",
"execution": {
"startTime": "2023-06-20T11:15:57.206Z",
"endTime": "2023-06-20T11:16:15.100Z"
},
"paymentStatus": "Success",
"returnStatus": {
"statusCode": "000",
"statusMsg": "Success",
"statusDescription": "Success."
}
}
Następnie, po przetworzeniu płatności, możesz sprawdzić status swojej transakcji, wysyłając żądanie GET.
Nagłówek HTTP autoryzacji jest ustawiony na token okaziciela, tak jak był używany podczas początkowej realizacji transakcji.
Adres URL żądania:
https://stargate-cer.qly.site1.sibs.pt/api/v1/payments/{transactionID}/status
Nagłówki żądań:
Autorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6I (...)
X-IBM-Client-Id: b4480347-9fc8-4790-b359-100a99c60ea3
Content-Type: application/json
Pomyślna odpowiedź techniczna składa się ze statusu HTTP-200 i returnStatus.statusCode=”000″.
Oto kilka przykładów możliwych kodów wyników:
Kod wyniku | statusMsg | Opis | Akcja |
---|---|---|---|
HTTP-200 | Sukces | Odpowiedź z sukcesem | n/a. |
HTTP-400 | Zła prośba | Ładunek JSON nie jest zgodny z definicją API lub brakuje niektórych obowiązkowych nagłówków HTTP. | Sprawdź w API Market poprawną składnię. |
HTTP-401 | Nieautoryzowany | W przypadku Autoryzacji token okaziciela jest nieprawidłowy/wygasł lub nie jest powiązany z używanym terminalem. | Sprawdź w SIBS Backoffice w sekcji Poświadczenia, czy token jest ważny i w razie potrzeby utwórz nowy. |
HTTP-403 | Zabroniony | Identyfikator klienta ustawiony w nagłówku HTTP X-IBM-Client-Id jest nieprawidłowy lub nie posiada ważnej subskrypcji interfejsu API. | Sprawdź w SIBS Backoffice w SPG APP 2.0, czy ClientID jest poprawny. Jeśli problem będzie się powtarzał, skontaktuj się z pomocą techniczną SIBS Gateway w celu zresetowania ClientID. |
HTTP-405 | Niedozwolona metoda | Zastosowana metoda HTTP nie jest zgodna z żadną dostępną definicją API. | Sprawdź w API Market poprawną metodę HTTP. |
HTTP-429 | Zbyt dużo próśb | Przekroczono limit szybkości wywołań API. | Informacje na temat limitów stawek mających zastosowanie do API można znaleźć w API Market. |
HTTP-500 | Wewnętrzny błąd serwera | Wywołanie API nie powiodło się… i najprawdopodobniej jest to po naszej stronie. | Powinieneś ponowić operację, a jeśli problem będzie się powtarzał, skontaktuj się z pomocą techniczną SIBS Gateway w celu uzyskania pomocy. |
HTTP-503 | serwis niedostępny | Wywołanie API nie jest obecnie dostępne. Zwykle jesteśmy zawsze aktywni, ale podczas planowej konserwacji mogą wystąpić krótkie problemy z dostępnością. | Powinieneś poczekać i spróbować ponownie później. |