Gdy posiadacz karty jest zalogowany w sklepie internetowym sprzedawcy, wyświetlany jest przycisk „Płatność jednym kliknięciem” umożliwiający łatwą płatność za pomocą jednego kliknięcia.
Token karty jest rozszyfrowywany, a kontekst płatności jednym kliknięciem jest sprawdzany przed przedstawieniem transakcji IPS z odniesieniem do początkowej transakcji. Pozwala to ominąć proces autoryzacji.
Jak to działa?
Aby wykonać płatność z autoryzacją 3DS, najpierw utwórz zamówienie zgodnie z instrukcjami zawartymi w Przewodniku integracji API (Full-Code).
Należy pamiętać, że do żądania zamówienia należy dołączyć dodatkowe parametry OneClick i Tokenization jak pokazano poniżej:
Lokalizacja | Element danych | Rodzaj | Warunek | Opis |
Request Body | tokenInfo | TokenInfo | Mandatory | Token Information. |
Request Body.tokenisation.paymentTokens.paymentTokenItem | tokenType | String | Mandatory | Token Type. Możliwe wartości to ( „Card”, „Email”, „MobilePhone” ). |
Request Body.tokenisation.paymentTokens.paymentTokenItem | value | String | Mandatory | Token value. |
Przykład żądania:
{
"merchant": {
"terminalId": {{TerminalID}},
"channel": "web",
"merchantTransactionId": "Order Id: r7cxvi0saj"
},
"transaction": {
"transactionTimestamp": "{{trxDatetime}}",
"description": "Transaction for order number 4908 terminalId 100886",
"moto": false,
"paymentType": "PURS",
"amount": {
"value": 50.50,
"currency": "PLN"
},
"paymentMethod": [
"CARD"
]
},
"tokenisation": {
"paymentTokens": [{
"tokenType": "Card",
"value": "{{purchaseTokenValue}}"
}
]
}
}
Po zakończeniu tworzenia zamówienia, dokonaj płatności.
Należy pamiętać, że poniższe żądanie wymaga nagłówka autoryzacji z podpisem transakcji zwróconym z operacji zlecenia płatności.
W tym żądaniu zakupu należy uwzględnić dodatkowe parametry DeviceInfo, OneClick and TokenInfo jak pokazano ponizej:
Lokalizacja | Element danych | Rodzaj | Warunek | Opis |
Request Body.info | deviceInfo | DeviceInfo | Mandatory | Object that defines the customer device information. |
Request Body.info.deviceInfo | browserAcceptHeader | String | Optional | Browser Accept Header. |
Request Body.info.deviceInfo | browserJavaEnabled | String | Optional | Browser Java Enabled. |
Request Body.info.deviceInfo | browserJavascriptEnabled | string | Optional | Browser Javascript Enabled. |
Request Body.info.deviceInfo | browserLanguage | String | Optional | browser Language. |
Request Body.info.deviceInfo | browserColorDepth | String | Optional | browser Color Depth. |
Request Body.info.deviceInfo | browserScreenHeight | String | Optional | browser Screen Height. |
Request Body.info.deviceInfo | browserScreenWidth | String | Optional | browser Screen Width. |
Request Body.info.deviceInfo | browserTZ | String | Optional | Browser Time Zone. |
Request Body.info.deviceInfo | browserUserAgent | String | Optional | Browser User Agent. |
Request Body.info.deviceInfo | systemFamily | String | Optional | System Family. |
Request Body.info.deviceInfo | systemVersion | String | Optional | System Version. |
Request Body.info.deviceInfo | systemArchitecture | String | Optional | System Architecture. |
Request Body.info.deviceInfo | deviceManufacturer | String | Optional | Device Manufacturer. |
Request Body.info.deviceInfo | deviceModel | String | Optional | Device Model. |
Request Body.info.deviceInfo | deviceID | String | Optional | Device Unique Identification. |
Request Body.info.deviceInfo | applicationName | String | Optional | Application Name. |
Request Body.info.deviceInfo | applicationVersion | String | Optional | Application Version. |
Request Body.info.deviceInfo | geoLocalization | String | Optional | Geolocation. |
Request Body.info.deviceInfo | ipAddress | String | Optional | IP Address. |
Request Body | oneClick | OneClick | Mandatory | Object that defines a One Click Payment. |
Request Body.oneClick | oneClickApplication | Boolean | Mandatory | For use of already created One Click. Indicates if a One Click Payment is requested to be applied. The absence indicates the value ’False’. |
Request Body | tokenInfo | TokenInfo | Mandatory | Token Information. |
Response Body.tokenList | tokenType | String | Mandatory | Token Type Możliwe wartosci to: – MobilePhone – QRCodeMBWAY1 – Card domyślna: Card |
Response Body.tokenList | value | String | Mandatory | Token Value |
Przykład żądania:
{
"info": {
"deviceInfo": {
"browserAcceptHeader": "application/json, text/plain, */*",
"browserJavaEnabled": "false",
"browserLanguage": "en",
"browserColorDepth": "24",
"browserScreenHeight": "1080",
"browserScreenWidth": "1920",
"browserTZ": "-60",
"browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36",
"geoLocalization": "Lat: 38.7350528 | Long: -9.2143616",
"systemFamily": "Windows",
"systemVersion": "Windows",
"deviceID": "498bfd4c3a3645b38667a7037b616c18",
"applicationName": "Chrome",
"applicationVersion": "106"
},
"customerInfo": [
{
"key": "customerName",
"value": "User X"
},
{
"key": "customerEmail",
"value": "testingemail@gmail.com"
}
]
},
"tokenInfo": {
"value": "{{purchaseTokenValue}}",
"tokenType": "Card"
},
"oneClick": {
"oneClickApplication": true
}
}
Oczekiwana odpowiedź:
Otrzymasz odpowiedź zawierającą w wiadomości.status płatności. Informuje ona, czy transakcja została zaakceptowana, odrzucona, nadal oczekuje na ostateczny wynik lub wymaga dodatkowych działań.
- Success(sukces): zakup został pomyślnie przetworzony, a klient został obciążony.
- Declined (odrzucona): zakup został odrzucony.
- Pending: (oczekująca): ostateczny wynik zakupu nie jest jeszcze znany. Konieczne będzie zapytanie o status tej transakcji, dopóki nie osiągnie ona stanu końcowego lub użytkownik nie zdecyduje się jej anulować.
- Partial: (częściowy): zakup został częściowo zaakceptowany, ale wymaga wykonania dodatkowych czynności (np. uwierzytelnianie 3D Secure). Element actionResponse zawiera instrukcje dotyczące dalszego postępowania.
Wykonaj polecenie Uzyskaj Status
Po pełnym przetworzeniu płatności można sprawdzić status transakcji, wysyłając żądanie GET.
Upewnij się, że nagłówek HTTP autoryzacji jest ustawiony na ten sam token okaziciela, który został użyty w początkowym zleceniu płatności.
Adres URL żądania:
https://stargate-cer.qly.site1.sibs.pt/api/v1/payments/{transactionID}/status
Nagłówki żądań:
Authorization: ‘Bearer <AuthToken>’
X-IBM-Client-Id: ‘<ClientId>’
Content-Type: application/json
Pomyślna odpowiedź techniczna składa się z statusu HTTP-200 i returnStatus.statusCode=”000″.
Oto kilka przykładów możliwych kodów wyników:
Result Code | statusMsg | Description | Action |
---|---|---|---|
HTTP-200 | Success | Success response | N/A |
HTTP-400 | Bad Request | The JSON payload is not matching the API definition or some mandatory HTTP headers are missing. | Please check in API Market for the correct syntax. |
HTTP-401 | Unauthorized | On the Authorization, Bearer token is invalid/expired or not associated with the Terminal used. | Please check in SIBS Backoffice under the Credentials if the token is valid and create a new one if needed. |
HTTP-403 | Forbidden | The ClientID set on the X-IBM-Client-Id HTTP header is not valid or does not possess a valid subscription to the API. | Please check in SIBS Backoffice under the SPG APP 2.0 if the ClientID is correct. If the problem persists contact SIBS Gateway support for a ClientID reset. |
HTTP-405 | Method Not Allowed | The HTTP Method used is not matching any of the API definitions available. | Please check in API Market for the correct HTTP Method. |
HTTP-429 | Too Many Requests | The API calls rate limit has been exceeded. | Please check in API Market for information on the rate limits that apply to the API. |
HTTP-500 | Internal Server Error | The API call has failed… and its most likely on our side. | You should retry the operation, and if the problem persists contact SIBS Gateway support for assistance. |
HTTP-503 | Service Unavailable | The API call is not currently available. Usually we are always on, but short availability issues may occur during scheduled maintenance. | You should wait and try again later. |