Użyj wstępnie autoryzowanego przechwytywania, gdy klient jest obciążany (całkowicie lub częściowo) dopiero po dostarczeniu towarów lub usług.
Przepływ ten przypomina przepływ „jednorazowego zakupu”, ale wymagany jest dodatkowy krok, aby faktycznie obciążyć klienta za towary lub usługi – Capture.
Przechwycenie może dotyczyć całkowitej kwoty zakupu lub jej części, w którym to przypadku akceptowanych jest wiele przechwyceń do pełnej kwoty autoryzacji.
Przed rozpoczęciem
Stwórz zamówienie z wymaganymi danymi i zagwarantować następujące informacje:
- Uwzględnij typ płatności, kwotę, walutę i dozwolone metody płatności;
- Jeśli jesteś już pewien, że wymagana jest tylko płatność kartą, wpisz tylko „CARD” w liście transaction.paymentMethod ;
Upewnij się, że transaction.paymentType posiada wartość „AUTH”.
Generowanie transakcji
Należy pamiętać, że poniższe żądanie wymaga Nagłówka Autoryzacji z transactionSignature zwróconego z operacji kasowania.
W zapytaniu, Bearer Token jest zastępowany odpowiedzią checkout’u transactionSignature.
Parametry nagłówka
Parametry żądania
string <= 40 characters
The security code (CVV/CVC) associated with the credit card.
string
The name of the cardholder as it appears on the credit card.
boolean
A flag indicating whether to create a token for future use or not (true/false).
Oto przykład:
{
"cardInfo": {
"PAN": "5236410030000927",
"secureCode": "776",
"validationDate": "2026-05-26T00:00:00.000Z",
"cardholderName": "Jane Smith",
"createToken": false
}
}
Oczekiwana odpowiedź
Pomyślna odpowiedź techniczna składa się ze statusu HTTP-200 i wartości returnStatus.statusCode=”000″.
PaymentStatus w odpowiedzi informuje o tym, czy sama transakcja została zaakceptowana, odrzucona, nadal oczekuje na ostateczny wynik lub wymaga podjęcia dodatkowych działań.
- Success: Autoryzacja została pomyślnie przetworzona, a środki klienta zostały zweryfikowane.
- Pending: Ostateczny wynik autoryzacji nie jest jeszcze znany. Będziesz musiał sprawdzać status tej transakcji, dopóki nie osiągnie ona ostatecznego stanu lub nie zdecydujesz się jej anulować.
- Declined: Zezwolenie zostało odrzucone.
- Partial: Autoryzacja została częściowo zaakceptowana, ale wymaga wykonania dodatkowych czynności (np. uwierzytelnienia 3D-Secure). ActionResponse zawiera instrukcje dotyczące dalszego postępowania.
Make the future capture(s)
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 pre-autoryzacji (AUTH) poprzez odniesienie do jej transactionID i wysyłanie POST zapyania po HTTPS do /payments/{transactionID}/ endpoint’u przechwytywania.
Przechwytywanie może odbywać się na różne sposoby:
- Full: capture the full amount authorized and finish the purchase.
- Partial: split the capture over one or several capture requests, up to the total amount authorized.
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 przechwycenia:
Lokalizacja | Element danych | Typ | Stan | Opis |
---|---|---|---|---|
Ścieżka | original-tx-id | Ciąg | Obowiązkowy | Original Transaction Id (identyfikator transakcji oryginalnej autoryzacji). |
Nagłówek żądania | Typ zawartości | Ciąg | Obowiązkowy | application/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 | – | Identyfikacja terminala handlowego |
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 | Currency code | 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. |
Tutaj można zobaczyć 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.
Zapytanie URL:
https://stargate-cer.qly.site1.sibs.pt/api/v1/payments/{transactionID}/status
Nagłówki żądań:
Authorization: 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 wartości returnStatus.statusCode=”000″.
Oto kilka przykładów możliwych kodów wyników: