Najprostszy i najwygodniejszy protokół integracji z PayU.
Zanim zaczniesz zapoznawać się z poniższym dokumentem, warto przeczytać wprowadzenie, gdzie znajdują się informacje o tym jak zacząć współpracę z PayU i integrację API, jaki model integracji wybrać i jak ją testować.
Dokument zawiera informacje o protokole REST API w wersji 2.1.
Jeżeli poszukujesz informacji o starszej wersji API skontaktuj się z nami.
Tutaj znajdziesz informacje jak skonfigurować sklep i POS po zalogowaniu się do konta PayU dla sprzedających.
Przed rozpoczęciem procesu integracji należy się upewnić, że punkt płatności na którym będą realizowane zamówienia jest typu REST API (Checkout) (do sprawdzenia na ekranie sklepów w Panelu Managera).
Informacje nt. testowania i dane testowych POSów (produkcja i sandbox) znajdują się w sekcji Testowanie.
Dokumentacja ma na celu przedstawienie sposobu wdrożenia płatności internetowych w sklepie internetowym za pośrednictwem usług PayU. Dokumentacja podzielona jest na kilka części. Pierwsza to wprowadzenie w usługę płatności. Następna to minimalny przykład wdrożenia płatności w sklepie internetowym w tzw. trybie hosted (przekierowanie na stronę PayU). Kolejne dwie części poświęcone są na omówienie procesów powiadomienia oraz zwrotów. Kolejne części to przykłady oraz referencje.
Materiał ten jest przede wszystkim przeznaczony dla deweloperów, którzy chcą zintegrować usługę płatności PayU ze swoim sklepem internetowym.
Proces obsługi płatności w sklepie internetowym za pośrednictwem usługi PayU składa się z dwóch etapów.
Proces jest przedstawiony na poniższym diagramie.
Aktualny status danej płatności możesz obejrzeć w panelu menadżera.
Metody uwierzytelnienia znajdują się w: Uwierzytelnienie użytkownika API.
W celu utworzenia nowego zamówienia należy za pomocą metody POST wyśłać komunikat OrderCreateRequest na endpoint /api/v2_1/orders.
Uwaga: wszystkie kwoty należy podawać w najmniejszej jednostce dla danej waluty np. w groszach dla PLN czyli "1000" oznacza 10 zł. Wyjątkiem jest HUF, który należy pomnożyć razy 100.
Uwaga: Odpowiedź na żądanie nowego zamówienia zwraca kod HTTP 302 oraz
nagłówek Location ustawiony na redirectUri
. Może być to
powodem automatycznych przekierowań i otrzymywaniem odpowiedzi w formacie
HTML.
Przykład zamówienia z podstawowymi danymi:
curl -X POST https://secure.payu.com/api/v2_1/orders \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \
-d '{
"notifyUrl": "https://your.eshop.com/notify",
"customerIp": "127.0.0.1",
"merchantPosId": "145227",
"description": "RTV market",
"currencyCode": "PLN",
"totalAmount": "21000",
"buyer": {
"email": "john.doe@example.com",
"phone": "654111654",
"firstName": "John",
"lastName": "Doe",
"language": "pl"
},
"products": [
{
"name": "Wireless Mouse for Laptop",
"unitPrice": "15000",
"quantity": "1"
},
{
"name": "HDMI cable",
"unitPrice": "6000",
"quantity": "1"
}
]
}'
curl -X POST https://secure.snd.payu.com/api/v2_1/orders \
-H "Content-Type: application/json" \
-H "Authorization: Bearer d9a4536e-62ba-4f60-8017-6053211d3f47" \
-d '{
"notifyUrl": "https://your.eshop.com/notify",
"customerIp": "127.0.0.1",
"merchantPosId": "300746",
"description": "RTV market",
"currencyCode": "PLN",
"totalAmount": "21000",
"buyer": {
"email": "john.doe@example.com",
"phone": "654111654",
"firstName": "John",
"lastName": "Doe",
"language": "pl"
},
"products": [
{
"name": "Wireless Mouse for Laptop",
"unitPrice": "15000",
"quantity": "1"
},
{
"name": "HDMI cable",
"unitPrice": "6000",
"quantity": "1"
}
]
}'
Przykład zamówienia z jednym produktem i podstawowymi danymi kupującego oraz extOrderId:
curl -X POST https://secure.payu.com/api/v2_1/orders \ -H "Content-Type: application/json" \ -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \ -d '{ "notifyUrl": "https://your.eshop.com/notify", "customerIp": "127.0.0.1", "merchantPosId": "145227", "description": "RTV market", "currencyCode": "PLN", "totalAmount": "15000", "extOrderId":"[generateExtOrderId]", "buyer": { "email": "john.doe@example.com", "phone": "654111654", "firstName": "John", "lastName": "Doe" }, "products": [ { "name": "Wireless Mouse for Laptop", "unitPrice": "15000", "quantity": "1" } ] }'
Jeśli zewnętrzny identyfikator zamówienia (extOrderId) jest przesyłany w komunikacie, jego wartość musi być unikalna obrębie jednego POS-a.
Po wysłaniu żądania utworzenia nowego zamówienia zostanie odesłana odpowiedź. Pole redirectUri zawiera URL pod jaki należy przekierować kupującego.
Przykład odpowiedzi na żądanie utworzenia nowego zamówienia:
{ "status":{ "statusCode":"SUCCESS", }, "redirectUri":"{url_do_przekierowania_na_stronę_podsumowania_płatności}", "orderId":"WZHF5FFDRJ140731GUEST000P01", "extOrderId":"{twój_identyfikator_zamówienia}", }
Więcej informacji o możliwych kodach odpowiedzi znajduje się w sekcji Kody statusów.
W trakcie wykonywania przekierowania możliwe jest ustawienie języka strony PayU przez użycie opcjonalego parametru lang.
Aby ustawić język strony, na którą zostanie przeniesiony użytkownik po przekierowaniu, należy użyć parametru language w sekcji <buyer> albo przekształcić redirectUri poprzez dokonanie następującego złożenia:
{redirectUri z OrderCreateResponse}&lang=pl
Akceptowane wartości parametru lang są tutaj.
Sekcja zawiera minimalny przykład formularza umożliwiający kupującemu dokonanie płatności. Integracja poprzez formularz nie jest zalecana i prezentowana jedynie w celach informacyjnych dla istniejących implementacji.
<form method="POST" action="https://secure.payu.com/api/v2_1/orders"> <input type="hidden" name="customerIp" value="123.123.123.123"> <input type="hidden" name="merchantPosId" value="145227"> <input type="hidden" name="description" value="Opis zamówienia"> <input type="hidden" name="totalAmount" value="1000"> <input type="hidden" name="currencyCode" value="PLN"> <input type="hidden" name="products[0].name" value="Produkt 1"> <input type="hidden" name="products[0].unitPrice" value="1000"> <input type="hidden" name="products[0].quantity" value="1"> <input type="hidden" name="notifyUrl" value="http://shop.url/notify"> <input type="hidden" name="continueUrl" value="http://shop.url/continue"> <input type="hidden" name="OpenPayu-Signature" type="hidden" value="sender=145227;algorithm=SHA-256;signature=565f9f4dda43c8e24ccab4472133d680e2aa58e1f58bea845c4cf2926965144d"> <button type="submit" formtarget="_blank">Płacę z PayU</button> </form>
Więcej informacji na temat parametrów (np. jak zdefiniować język strony płatniczej) znajdziesz w rozdziale Parametry formularza.
Szczegóły jak wykonać podpis znajdziesz w rozdziale Podpisywanie parametrów formularza.
Pliki graficzne pomocne w ostylowaniu przycisku formularza znajdują się pod tym linkiem.
Każda płatność w systemie PayU podlega cyklowi życia. Poszczególne etapy cyklu życia związane są z konkretnymi sytuacjami takimi jak: przyjęcie, rozliczenie, odrzucenie itd. PayU oferuje mechanizmy, które powiadamiają system sprzedawcy o zmianie stanu płatności.
Aby uruchomić otrzymywanie powiadomień dla konkretnej płatności, należy podać
parametr notifyUrl
podczas tworzenia płatności. Dla każdej płatności
można zdefiniować inny URL, na który będą wysyłane powiadomienia.
Wszystkie powiadomienia są wysyłane w sposób asynchroniczny. Należy ignorować
wszystkie komunikaty otrzymane po wiadomości o statusie COMPLETED
.
Po wysłaniu notyfikacji system PayU oczekuje na odpowiedź ze statusem HTTP 200. W przypadku każdego innego statusu nastąpi ponowne wysłanie notyfikacji. Należy uwzględnić sytuację, gdy powiadomienie zostanie wysłane kilka razy dla tego samego statusu zamówienia. Na każde powtórzone powiadomienie należy również odpowiedzieć statusem 200.
Po odbiorze notyfikacji przychodzącej z serwera PayU, należy poddać weryfikacji wartość signature znajdującą się w nagłówku OpenPayu-Signature. Sprawdzanie podpisu powiadomień ma na celu zapewnienia zaufanej komunikacji między sklepem a PayU. Więcej informacji o sprawdzaniu podpisu notyfikacji znajdziesz w dziale Weryfikacja podpisu notyfikacji.
Notyfikacje są wysyłane dla zamówień w statusach PENDING, WAITING_FOR_CONFIRMATION, COMPLETED, CANCELED.
Uwaga: jeśli Twój system filtruje ruch przychodzący, pamiętaj aby dodać wyjątki dla adresów IP z których są wysyłane powiadomienia. Są to:
PRODUKCJA
185.68.12.10, 185.68.12.11, 185.68.12.12, 185.68.12.26, 185.68.12.27, 185.68.12.28
SANDBOX
185.68.14.10, 185.68.14.11, 185.68.14.12, 185.68.14.26, 185.68.14.27, 185.68.14.28
Cykl życia płatności.
Uwaga: dla każdej metody płatności z osobna można skonfigurować poprzez Panel Managera tzw. auto-odbiór.
Domyślnie auto-odbiór jest włączony, co oznacza, że każda pozytywnie zautoryzowana płatność jest rozliczana, tj. 1/ kupujący jest obciążany kwotą zamówienia, 2/ saldo sklepu jest zwiększane o kwotę zamówienia, 3/ PayU nalicza prowizję do zamówienia.
Przy wyłączonym auto-odbiorze, należy dla każdego zamówienia indywidualnie użyć metody PUT w celu jego odbioru (Odebranie zamówienia) lub metody DELETE w celu jego anulowania (Anulowanie).
Niewykonanie żadnej z tych akcji skutkuje autoanulowaniem zamówienia. Autoanulowanie następuje po czasie wskazanym dla danej metody płatności.
Status | Opis |
---|---|
PENDING | Płatność jest w trakcie rozliczenia. |
WAITING_FOR_CONFIRMATION | system PayU oczekuje na akcje ze strony sprzedawcy w celu wykonania płatności. Ten status występuje w przypadku gdy auto-odbiór na POSie sprzedawcy jest wyłączony. |
COMPLETED | Płatność została zaakceptowana w całości. Środki są dostępne do wypłaty. |
CANCELED | Płatność została anulowana. Płacący nie został obciążony (nie nastąpił przepływ środków między płacącym a Payu). |
Powiadomienia są wysyłane natychmiast po zmianie statusu płatności, w przypadku gdy powiadomienie nie zostanie odebrane przez aplikację Sklepu zostanie ono wysłane ponownie zgodnie z poniższą tabelką:
Próba | Czas od zmiany statusu płatności |
---|---|
1 | natychmiast |
2 | 1 minuta |
3 | 2 minuty |
4 | 5 minut |
5 | 10 minut |
6 | 30 minut |
7 | 1 godzina |
8 | 2 godziny |
9 | 3 godziny |
10 | 6 godzin |
11 | 9 godzin |
12 | 12 godzin |
13 | 15 godzin |
14 | 18 godzin |
15 | 21 godzin |
16 | 24 godziny |
17 | 36 godzin |
18 | 48 godzin |
19 | 60 godzin |
20 | 72 godziny |
- Powiadomienia wysyłane są w formacie JSON za pomocą metody POST.
- Więcej informacji na temat parametrów komunikatu znajdziesz w rozdziale Parametry komunikatów JSON.
Nagłówki HTTP dodawane przez PayU (HTTP Headers):
PayU-Processing-Time: 1000 // dla wybranych statusów Content-Type: application/json;charset=UTF-8 User-Agent: Jakarta Commons-HttpClient/3.1 Content-Length: 100 Authorization: Basic MTIzNDU2Nzg6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVo= OpenPayu-Signature: sender=checkout;signature=d47d8a771d558c29285887febddd9327;algorithm=MD5;content=DOCUMENT X-OpenPayU-Signature: sender=checkout;signature=d47d8a771d558c29285887febddd9327;algorithm=MD5;content=DOCUMENT
Zawartość (Body):
{ "order":{ "orderId":"LDLW5N7MF4140324GUEST000P01", "extOrderId":"Id zamówienia w Twoim sklepie", "orderCreateDate":"2012-12-31T12:00:00", "notifyUrl":"http://tempuri.org/notify", "customerIp":"127.0.0.1", "merchantPosId":"{Id punktu płatności (pos_id)}", "description":"Twój opis zamówienia", "currencyCode":"PLN", "totalAmount":"200", "buyer":{ "email":"john.doe@example.org", "phone":"111111111", "firstName":"John", "lastName":"Doe", "language":"pl" }, "payMethod": { "type": "PBL" //lub "CARD_TOKEN", "INSTALLMENTS" }, "products":[ { "name":"Product 1", "unitPrice":"200", "quantity":"1" } ], "status":"COMPLETED" }, "localReceiptDateTime": "2016-03-02T12:58:14.828+01:00", "properties": [ { "name": "PAYMENT_ID", "value": "151471228" } ] }
Uwaga:
{ "order":{ "orderId":"LDLW5N7MF4140324GUEST000P01", "extOrderId":"Id zamówienia w Twoim sklepie", "orderCreateDate":"2012-12-31T12:00:00", "notifyUrl":"http://tempuri.org/notify", "customerIp":"127.0.0.1", "merchantPosId":"{Id punktu płatności (pos_id)}", "description":"Twój opis zamówienia", "currencyCode":"PLN", "totalAmount":"200", "products":[ { "name":"Product 1", "unitPrice":"200", "quantity":"1" } ], "status":"CANCELED" } }
{ "orderId": "2DVZMPMFPN140219GUEST000P01", "extOrderId": "Id zamówienia w Twoim sklepie", "refund": { "refundId": "912128", "amount": "15516", "currencyCode": "PLN", "status": "FINALIZED", "statusDateTime": "2014-08-20T19:43:31.418+02:00", "reason": "refund", "reasonDescription": "na życzenie klienta", "refundDate": "2014-08-20T19:43:30.150+02:00" } }
Płatności procesowane przez system PayU umożliwiają wykonanie zwrotu środków na konto kupującego (tzw. refund).
Uwaga: W przypadku płatności metodą „PayU | Płacę później”, środki zwracane są do pożyczkodawcy.
Żądanie zwrotu środków do kupującego może być wykonane w dwóch trybach: pełnym lub częściowym.
Aby zrealizować zwrot (pełny lub częściowy) środków na konto kupującego wyślij
żądanie na endpoint /api/v2_1/orders/{orderId}/refunds
przy użyciu
metody POST
. Przykłady takiego wywołania zaprezentowano poniżej
curl -X POST https://secure.payu.com/api/v2_1/orders/H9LL64F37H160126GUEST000P01/refunds \ -H "Content-Type: application/json" \ -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \ -d '{ "refund": { "description": "Refund" } }'Metody uwierzytelnienia znajdują się w sekcji: Uwierzytelnienie użytkownika API
Dla zwrotów częściowych należy podać kwotę, która jest wyrażona w najmniejszych jednostkach monetarnych dla danej waluty (np. w Polsce najmniejszą jednostką jest grosz - 0,01PLN - więc kwota 10 PLN będzie wyrażona jako 1000). Natomiast sama waluta musi być zgodna z walutą z pierwotnego zamówienia.
W ramach jednego zamówienia możliwe jest wysłanie kilku żądań o zwrot częściowy. Suma wartości w poszczególnych żądaniach nie może przekraczać kwoty pierwotnego zamówienia.
System payu umożliwia wykonanie wielu zwrotów częściowych w tym samym czasie. W tym
celu wymagane jest przesłanie w żądaniu parametru extRefundId
. W sytuacji gdy zwroty
częściowe nie będą wykonywane częściej niż raz na sekundę parametr extRefundId
nie
jest wymagany.
W przykładzie zaprezentowano zwrot częściowy na wartość 10 w walucie zamówienia:
curl -X POST https://secure.payu.com/api/v2_1/orders/H9LL64F37H160126GUEST000P01/refunds \ -H "Content-Type: application/json" \ -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \ -d '{ "refund": { "description": "Refund", "amount": 1000 } }'
Metody uwierzytelnienia znajdują się w sekcji: Uwierzytelnienie użytkownika API
Przyjęcie żądania przez system PayU zostanie potwierdzone odpowiedzią zawierającą odpowiedni status. Przykłady takich odpowiedzi zostały zawarte poniżej:
{ "orderId":"ZXWZ53KQQM200702GUEST000P01", "refund":{ "refundId":"5000009987", "extRefundId":"20200702091903", "amount":"21000", "currencyCode":"PLN", "description":"Uznanie 5000009987 Refund", "creationDateTime":"2020-07-02T09:19:03.896+02:00", "status":"PENDING", "statusDateTime":"2020-07-02T09:19:04.013+02:00" }, "status":{ "statusCode":"SUCCESS", "statusDesc":"Refund queued for processing" } }
W przypadku odrzucenia spowodowanego jednym z błędów:
{ "status":{ "statusCode":"ERROR_VALUE_MISSING", "severity":"ERROR", "code":"8300", "codeLiteral":"MISSING_REFUND_SECTION", "statusDesc":"Missing required field" } }
Poprawnie przyjęte przez system PayU żądanie zwrotu środków może być anulowane z poziomu Panelu Menadżerskiego.
W przypadku wysłania błędnego żądania zwrotu, pole status
w
odpowiedzi będzie zawierać opis problemu. Znaczenie poszczególnych pól przedstawia
tabela poniżej:
StatusCode | CodeLiteral | Code | Opis |
---|---|---|---|
ERROR_VALUE_MISSING | MISSING_REFUND_SECTION | 8300 | Żądanie nie zawiera obiektu "refund". |
OPENPAYU_BUSINESS_ERROR | TRANS_NOT_ENDED | 9101 | Transakcja nie jest zakończona. |
OPENPAYU_BUSINESS_ERROR | NO_BALANCE | 9102 | Brak środków na koncie do zwrotu. |
OPENPAYU_ERROR_VALUE_INVALID | AMOUNT_TO_BIG | 9103 | Za duża wartość. |
OPENPAYU_ERROR_VALUE_INVALID | AMOUNT_TO_SMALL | 9104 | Za mała wartość. |
OPENPAYU_BUSINESS_ERROR | REFUND_DISABLED | 9105 | Zwroty są nieaktywne. |
OPENPAYU_BUSINESS_ERROR | REFUND_TO_OFTEN | 9106 | Za częsty zwrot. |
OPENPAYU_ERROR_VALUE_INVALID | PAID | 9108 | Zwrot już został wykonany. |
OPENPAYU_ERROR_INTERNAL | UNKNOWN_ERROR | 9111 | Nieznany błąd. |
OPENPAYU_BUSINESS_ERROR | REFUND_IDEMPOTENCY_MISMATCH | 9112 | Użyto ponownie tę samą wartość parametru extRefundId, ale inne parametry żądania się różnią. |
OPENPAYU_BUSINESS_ERROR | TRANS_BILLING_ENTRIES_NOT_COMPLETED | 9113 | Billing sklepu nie jest jeszcze kompletny. |
OPENPAYU_BUSINESS_ERROR | TRANS_TOO_OLD | 9114 | Dostępny czas na zwrot minął. |
OPENPAYU_ERROR_VALUE_INVALID | REMAINING_TRANS_AMOUNT_TOO_SMALL | 9115 | Kwota transakcji pozostała po wykonaniu zwrotu będzie za mała, żeby wykonać kolejny zwrot. |
Aby pobrać informacje o zwrotach związanych z daną transakcją wyślij żądanie na
endpoint /api/v2_1/orders/<orderId>/refunds
przy użyciu
metody GET
. W odpowiedzi otrzymasz listę zwrotów dokonanych w
zakresie tej transakcji:
{ "refunds": [ { "refundId": "5000000142", "extRefundId": "postman_refund1_QX9ZR7M6QP200601GUEST000P01", "amount": "400", "currencyCode": "PLN", "description": "Zwrot transakcji BLIK", "creationDateTime": "2020-06-01T13:05:39.489+02:00", "statusDateTime": "2020-06-01T13:06:03.530+02:00", "status": "FINALIZED" }, { "refundId": "5000000143", "extRefundId": "postman_refund2_QX9ZR7M6QP200601GUEST000P01", "amount": "400", "currencyCode": "PLN", "description": "Zwrot transakcji BLIK", "creationDateTime": "2020-06-01T13:18:03.648+02:00", "statusDateTime": "2020-06-01T13:18:33.661+02:00", "status": "FINALIZED" } ] }
Możliwe jest również pobranie informacji o konkretnym zwrocie. W tym celu wyślij
żądanie na endpoint
/api/v2_1/orders/<orderId>/refunds/<refundId>
przy
użyciu metody GET
. W odpowiedzi otrzymasz informacje dotyczące
zwrotu o podanym refundId
:
{ "refundId": "5000000108", "extRefundId": "pm_bst_refund_QLQWXCSM1D200609GUEST000P01_1591707454318", "amount": "999", "currencyCode": "PLN", "description": "Zwrot transakcji", "creationDateTime": "2020-06-09T14:57:34.594+02:00", "statusDateTime": "2020-06-09T14:57:55.370+02:00", "status": "CANCELED", "statusError": { "code": "PROVIDER_TECHNICAL_ERROR", "description": "Temporary problem on Provider Side" } }
Jeżeli zwrot zostanie wykonany błędnie tzn. autoryzacja zwrotu u dostawcy się nie powiedzie, to po wysłaniu żądania otrzymasz odpowiedź o błędzie wraz ze szczegółowymi informacjami:
{ "refundId": "5000000108", "extRefundId": "pm_bst_refund_QLQWXCSM1D200609GUEST000P01_1591707454318", "amount": "999", "currencyCode": "PLN", "description": "Zwrot transakcji", "creationDateTime": "2020-06-09T14:57:34.594+02:00", "statusDateTime": "2020-06-09T14:57:55.370+02:00", "status": "CANCELED", "statusError": { "code": "PROVIDER_TECHNICAL_ERROR", "description": "Temporary problem on Provider Side" } }
W tabeli zawarto kody błędów, które mogą wystąpić w trakcie procesowania zwrotu oraz wskazówkę co należy zrobić w każdym z przypadków:
Kod błędu | Opis błędu | Postępowanie w przypadku zaistnienia |
---|---|---|
BANK_DECLINED | Bank odrzucił zwrot. | Ponownie wyślij żądanie zwrotu. Jeżeli wystąpi ten sam błąd, skontaktuj się z PayU w celu wykonania zwrotu na rachunek kupującego. |
PROVIDER_DECLINED | Dostawca odrzucił zwrot. | Ponownie wyślij żądanie zwrotu. Jeżeli wystąpi ten sam błąd, skontaktuj się z PayU w celu wykonania zwrotu na rachunek kupującego. |
PROVIDER_LIMIT_ERROR | Przekroczono limit zwrotu po stronie dostawcy. | Ponownie wyślij żądanie zwrotu. Jeżeli wystąpi ten sam błąd, skontaktuj się z PayU. |
PROVIDER_SECURITY_ERROR | Naruszono zasadę bezpieczeństwa. | Ponownie wyślij żądanie zwrotu. Jeżeli wystąpi ten sam błąd, skontaktuj się z PayU. |
PROVIDER_TECHNICAL_ERROR | Tymczasowy problem po stronie dostawcy. | Ponownie wyślij żądanie zwrotu. Jeżeli wystąpi ten sam błąd, skontaktuj się z PayU. |
BANK_UNAVAILABLE_ERROR | Tymczasowa niedostępność banku dostawcy. | Ponownie wyślij żądanie zwrotu w terminie późniejszym. |
REFUND_TOO_LATE | Przekroczono limit czasu na rejestrację zwrotu. | Skontaktuj się z PayU w celu wykonania zwrotu na rachunek kupującego. |
TECHNICAL_ERROR | Wystąpił problem techniczny. | Skontaktuj się z PayU. |
REFUND_TOO_FAST | Przekroczono limit rejestracji liczby zwrotów w danym czasie. | Ponownie wyślij żądanie zwrotu w terminie późniejszym. |
REFUND_IMPOSSIBLE | Dostawca odrzucił zwrot. | Skontaktuj się z PayU w celu wykonania zwrotu na rachunek kupującego. |
Zamówienie procesowane przez PayU może zostać anulowane (odrzucone), np. w przypadku braku możliwości dostarczenia towaru lub usługi. (tzw. cancel).
Żądanie anulowania dotyczy zawsze całego zamówienia. Anulowanie skutkuje zwrotem środków na konto kupującego.
Aby anulować zamówienie i dokonać zwrotu środków na konto kupującego należy wywołać
metodę /api/v2_1/orders/{orderId}
przy użyciu metody
DELETE
. Przykład takiego wywołania znajduje się poniżej.
Anulować można jedynie zamówienie, które nie zostało jeszcze zakończone, tj. nie ma
statusu COMPLETED
.
{ "orderId":"71S3CTJJXV140325GUEST000P01", "extOrderId":"your_order_id" "status":{ "statusCode":"SUCCESS" } }
Zamówienia w statusie WAITING_FOR_CONFIRMATION
można odebrać bądź
anulować (zob. Anulowanie). Niewykonanie żadnej z tych akcji skutkuje
autoanulowaniem zamówienia. Autoanulowanie następuje po czasie wskazanym dla danej
metody płatności.
Odebranie dotyczy zawsze całego zamówienia. Wykonanie tej operacji powoduje zmianę
statusu zamówienia na COMPLETED
(zakończona).
W celu zmiany statusu zamówienia należy wywołać usługę
/api/v2_1/orders/{orderId}/status
przy użyciu metody
PUT
.
Aby umożliwić statusWAITING_FOR_CONFIRMATION
, metody płatności dla danego POSa muszą mieć wyłączony auto-odbiór. W przeciwnym razie, wszystkie udane płatności będą automatycznie zmieniać status zamówienia naCOMPLETED
.
curl -X PUT https://secure.payu.com/api/v2_1/orders/H9LL64F37H160126GUEST000P01/status \ -H "Content-Type: application/json" \ -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \ -d '{ "orderId": "H9LL64F37H160126GUEST000P01", "orderStatus": "COMPLETED" }'Metody uwierzytelnienia znajdują się w: Uwierzytelnienie użytkownika API
{ "status": { "statusCode": "SUCCESS", "statusDesc": "Status was updated" } }
Można pobrać dane sklepu, zamówień i transakcji (płatności) używając poniższych żądań.
Komunikat OrderRetrieveRequest
pozwala pobrać dane i status zamówienia.
Należy wysłać żądanie HTTP GET na adres https://secure.payu.com/api/v2_1/orders/{orderId}
Przykład odpowiedzi po pobraniu informacji o zamówieniu:
{ "orders": [ { "orderId": "{orderId}", "extOrderId": "358766", "orderCreateDate": "2014-10-27T14:58:17.443+01:00", "notifyUrl": "http://localhost/OrderNotify/", "customerIp": "127.0.0.1", "merchantPosId": "145227", "description": "New order", "currencyCode": "PLN", "totalAmount": "3200", "status": "NEW", "products": [ { "name": "Product1", "unitPrice": "1000", "quantity": "1" }, { "name": "Product2", "unitPrice": "2200", "quantity": "1" } ] } ], "status": { "statusCode": "SUCCESS", "statusDesc": "Request processing successful" }, "properties": [ { "name": "PAYMENT_ID", "value": "1234567890" } ] }
Więcej informacji na temat parametrów komunikatu znajdziesz w rozdziale Parametry komunikatów JSON w opisie pól komunikatów OrderRetrieveRequest
i OrderRetrieveResponse
.
Komunikat TransactionRetrieveRequest
umożliwia pobranie danych o transakcji utworzonej do danego zamówienia.
Należy wysłać żądanie HTTP GET na adres https://secure.payu.com/api/v2_1/orders/{orderId}/transactions
Ten endpoint jest szczególnie użyteczny, jeśli konieczne jest pobranie danych konta bankowego (numer, posiadacz) lub karty płatniczej (maskowany numer, rodzaj karty).
Opisy parametrów używanych w TransactionRetrieveRequest
i
TransactionRetrieveResponse
można znaleźć Tutaj.
Uwaga: dane karty są dostępne natychmiast po przetworzeniu, ale dane konta bankowego są dostępne w okresie od kilku minut do następnego dnia roboczego, zależnie od banku.
Przykład odpowiedzi po pobraniu informacji o transakcji kartą:
{ "transactions": [ { "payMethod": { "value": "c" }, "paymentFlow": "FIRST_ONE_CLICK_CARD", "card": { "cardData": { "cardNumberMasked": "543402******4014", "cardScheme": "MC", "cardProfile": "CONSUMER", "cardClassification": "DEBIT", "cardResponseCode":"000", "cardResponseCodeDesc":"000 - OK", "cardEciCode":"2", "card3DsStatus":"Y", "card3DsStatusDescription": "MessageVersion=2.1.0,browser flow,3DS method not available,dynamic authentication,no cancel indicator,no status reason", "cardBinCountry":"PL", "firstTransactionId": "MCC0111LL1121" }, "cardInstallmentProposal": { //obiekt opcjonalny, zapoznaj się z notką pod przykładem "proposalId": "5aff3ba8-0c37-4da1-ba4a-4ff24bcc2eed" } }, "resultCode": "AUT_ERROR_NO_AUTHORIZATION" // parametr opcjonalny } ] }
Sekcja cardInstallmentProposal
jest wykorzystywana tylko w usłudze
Płać w ratach z Mastercard.
{ "transactions":[ { "payMethod":{ "value":"m" }, "bankAccount":{ "number":"80607787095718703296721164", "name":"JAN KOWALSKI", //uwaga: zależnie od banku, imię, nazwisko i adres //mogą zostać rozparsowane do dowolnego z poniższych pól "city":"WARSZAWA", "postalCode":"02-638", "street":"UL.NOWOWIEJSKIEGO 8", "address":"Warszawa Nowowiejskiego 8" } } ] }
Wyjaśnienia parametrów występujących w TransactionRetrieveRequest
i TransactionRetrieveResponse
można znaleźć Tutaj.
Aby móc pobrać dane sklepu należy najpierw wygenerować token uwierzytelniający.
Punkt płatności, który jest wykorzystywany do wygenerowania tokenu oAuth'owego musi należeć do sklepu, którego dane są pobierane.
Następnie należy wysłać żądanie HTTP GET na adres https://secure.payu.com/api/v2_1/shops/{public_shop_id}
curl -X GET https://secure.snd.payu.com/api/v2_1/shops/QFw0KGSX \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd'
{ "shopId": "QFw0KGSX", "name": "Shop Checkout", "currencyCode": "PLN", "balance": { "currencyCode": "PLN", "total": "220839", "available": "220839" } }
total
przedstawia aktualne środki na saldzie sklepu w groszach.
available
pokazuje środki na saldzie sklepu po odjęciu blokad/rezerwy wypłatowej.
Transparentna (white label) integracja polega na umieszczeniu ikonek metod płatności wprost na stronie sklepu i tworzenie zamówień w systemie PayU ze z góry określoną metodą płatności.
Aby wyświetlić metody płatności w najbardziej odpowiedni sposób, należy je wcześniej pobrać. Dodatkowo, należy umieścić wymagane przepisami prawa informacje o PayU jako operatorze płatności. Jest to dokładniej omówione poniżej.
Tworzenie zamówień z podaniem metody płatności wymaga umieszczenia sekcji payMethod i podania wartości reprezentującej metodę wybraną przez kupującego na stronie sklepu.
{ "payMethods": { "payMethod": { "type":"PBL", "value":"m", //opcjonalne dla BLIK (blik) i Visa Checkout (vc), zob. niżej "authorizationCode":"123456", //opcjonalne dla Visa Checkout, zob. niżej "specificData": [] } } }
Dla metody "blik" możliwe jest zarówno przekierowanie na stronę BLIK jak i
pobranie 6-cyfrowego kodu autoryzacji na stronie sklepu. W tym ostatnim przypadku,
parametr authorizationCode
musi być podany w sekcji
payMethods
. Ponadto kod HTTP dla udanego żądania to 201
zamiast standardowego 302.
Wszystkie usługi BLIK poza opcją Przekierowanie na stronę płatności BLIK wymagają specjalnej konfiguracji punktu płatności (POS) ze strony PayU. Konfiguracja pozwalająca na Transparentną płatność kodem autoryzacyjnym BLIK nie jest kompatybilna z wariantem Przekierowanie na stronę płatności BLIK, przez co wymaga obsługi na osobnym punkcie płatności.
Więcej informacji: Tworzenie nowego zamówienia przez API, Kody statusów i Visa Checkout.
Przykład pozytywnej odpowiedzi
{ "orderId":"VVLR1HXK2S160929GUEST000P01", "status": { "statusCode":"SUCCESS" }, "redirectUri":"https://www.platnosci.pl/np/newpayment.resume.action?paymentId=12345678&hash={HashNumber}&js=1" }
Przykład odpowiedzi dla banków: orx, bnx, gbx, nlx.
{ "orderId":"1BSLZN2FFZ160929GUEST000P01", "extOrderId":"number of extOrderId", "status": { "statusCode":"WARNING_CONTINUE_REDIRECT" }, "redirectUri":"https://secure.getinbank.pl/pbl/#index/index/{index}" }
Aby pobrać aktualnie dostępne metody płatności, należy najpierw uzyskać access token.
Zob. sekcję OAuth w Uwierzytelnienie użytkownika API
Następnie należy wstawić uzyskany access token do nagłówka i metodą GET wysłać
żądanie na api/v2_1/paymethods
.
W celu uzyskania opisów w konkretnym języku, można użyć opcjonalnego parametru:
?lang={2-literowy kod ISO}
, np. 'cs', 'de', 'pl'.
curl -X GET https://secure.payu.com/api/v2_1/paymethods \ -H "Authorization: Bearer 87ad751f-7ea5-4023-a16f-04b6647a07f5" -H "Cache-Control: no-cache"
curl -X GET https://secure.snd.payu.com/api/v2_1/paymethods \ -H "Authorization: Bearer 87ad751f-7ea5-4023-a16f-04b6647a07f5" -H "Cache-Control: no-cache"
Przykład pozytywnej odpowiedzi (HTTP 200). Opis poszczególnych pól poniżej przykładu:
{ "payByLinks":[ { "value":"c", "name":"Płatność online kartą płatniczą", "brandImageUrl":"http://static.payu.com/images/mobile/logos/pbl_c.png", "status":"ENABLED" "minAmount": 50, "maxAmount": 100000 }, { "value":"o", "name":"Pekao24Przelew", "brandImageUrl":"http://static.payu.com/images/mobile/logos/pbl_o_off.png", "status":"DISABLED" "minAmount": 50, "maxAmount": 100000 }, { "value":"ab", "name":"Płacę z Alior Bankiem", "brandImageUrl":"http://static.payu.com/images/mobile/logos/pbl_ab_off.png", "status":"TEMPORARY_DISABLED" "minAmount": 50, "maxAmount": 100000 } ] }
Parametr | Opis |
---|---|
value | Oznaczenie typu płatności. Dostępne wartości są tutaj. |
name | Nazwa (opis) typu płatności. |
brandImageUrl | Odnośnik do pliku graficznego na serwerze PayU reprezentującego typ płatności. |
status | Możliwe wartości: 'ENABLED', 'DISABLED', 'TEMPORARY_DISABLED'. |
Obowiązki informacyjne wynikają z regulacji obowiązujących w Unii Europejskiej dotyczących usług płatniczych (tzw. PSD od ang. Payment Services Directive) i rozporządzenia o ochronie danych osobowych (RODO lub GDPR od ang. General Data Protection Regulation).
W przypadku standardowej integracji (wybór metody płatności na stronie PayU), informacje te są wyświetlane w stopce strony płatniczej PayU.
W przypadku integracji transparentnej, w celu ułatwienia spełnienia obowiązków wynikających z ww. regulacji, stosowne informacje są wyświetlane:
Istnieje możliwość rezygnacji ze strony pośredniej, jednak pod warunkiem, że wymagane prawem informacje zostaną wyświetlone na stronie sklepu/odbiorcy płatności. Wymaga to konfiguracji po stronie PayU.
W tym celu należy umieścić poniższe treści i odnośniki oraz skontaktować się z PayU wysyłając wysyłając wiadomość z linkiem do strony i zrzutem ekranu na adres help@payu.pl.
Zlecenie realizacji płatności: Zlecenie wykonuje PayU SA; Dane odbiorcy, tytuł oraz kwota płatności dostarczane są PayU SA przez odbiorcę; Zlecenie jest przekazywane do realizacji po otrzymaniu przez PayU SA Państwa wpłaty. Płatność udostępniana jest odbiorcy w ciągu 1 godziny, nie później niż do końca następnego dnia roboczego; PayU SA nie pobiera opłaty od realizacji usługi.
Płacąc akceptujesz Zasady płatności PayU.
Administratorem Twoich danych osobowych jest PayU S.A. z siedzibą w Poznaniu (60-166), przy ul. Grunwaldzkiej 186. Twoje dane osobowe będą przetwarzane w celu realizacji transakcji płatniczej, powiadamiania Cię o statusie realizacji Twojej płatności, rozpatrywania reklamacji, a także w celu wypełnienia obowiązków prawnych ciążących na PayU.
Odbiorcami Twoich danych osobowych mogą być podmioty współpracujące z PayU w procesie realizacji płatności. W zależności od wybranej przez Ciebie metody płatności mogą to być: banki, instytucje płatnicze, instytucje pożyczkowe, organizacje kart płatniczych, schematy płatnicze), ponadto podmioty wspierające działalność PayU tj. dostawcy infrastruktury IT, dostawcy narzędzi do analizy ryzyka płatności a także podmiotom uprawnionym do ich otrzymania na mocy obowiązujących przepisów prawa, w tym właściwym organom wymiaru sprawiedliwości. Twoje dane mogą zostać udostępnione akceptantom celem poinformowania ich o statusie realizacji płatności. Przysługuje Tobie prawo dostępu do danych, a także do ich sprostowania, ograniczenia ich przetwarzania, zgłoszenia sprzeciwu wobec ich przetwarzania, niepodlegania zautomatyzowanemu podejmowaniu decyzji w tym profilowania oraz do przenoszenia i usunięcia danych. Podanie danych jest dobrowolne jednak niezbędne do realizacji płatności, a brak podania danych może skutkować odrzuceniem płatności. Więcej informacji o zasadach przetwarzania Twoich danych osobowych przez PayU znajdziesz w Polityce Prywatności.
Uwagi:
Język | Informacja | Tekst |
---|---|---|
cs | Zlecenie płatności | nie dotyczy |
cs | Zasady płatności PayU | nie dotyczy |
cs | Ochrona danych osobowych | Správcem vašich osobních údajů je společnost PayU S.A. se sídlem
v Poznani (60-166), ul. Grunwaldzka 186, Polsko. Vaše osobní údaje
budeme zpracovávat proto, abychom mohli provést platební transakci,
informovali Vás o jejím stavu, mohli vyřídit případnou reklamaci a
také abychom splnili zákonné povinnosti, které jako společnost PayU
máme. Subjekty, které spolupracují se společností PayU na realizaci platebních transakcí, se také mohou stát příjemci Vašich osobních údajů. V závislosti na platební metodě, kterou jste si vybrali, to mohou být: banky, platební instituce, úvěrové instituce, organizace pro platební karty, platební modely), dále subjekty, které podporují činnost PayU, tj. dodavatelé IT infrastruktury, dodavatele nástrojů pro analýzu rizika plateb, a dále subjekty, které jsou oprávněné je získat na základě platných právních předpisů, včetně příslušných orgánů činných v trestním řízení. Vaše údaje můžeme zpřístupnit Partnerům, abychom je informovali o průběhu realizace platby. Máte právo přistupovat k Vašim osobním údajům, opravovat je, omezit jejich zpracování, vznést námitku proti jejich zpracování, omezit automatizované individuální rozhodování, včetně profilování, a přenášet je nebo odstranit. Vaše osobní údaje nám poskytujete dobrovolně. Mějte však na paměti, že jejich uvedení je nezbytné pro provedení platby a že bez nich může dojít k jejímu odmítnutí. Více informací o pravidlech pro zpracování Vašich osobních údajů u nás v PayU naleznete zde v zásadach ochrany osobních údajů. |
en | Zlecenie płatności | Payment is processed by PayU SA; The recipient's data, the payment title and the amount are provided to PayU SA by the recipient; The order is sent for processing when PayU SA receives your payment. The payment is transferred to the recipient within 1 hour, not later than until the end of the next business day; PayU SA does not charge any service fees. |
en | Zasady płatności PayU | By paying you accept "PayU Payment Terms". |
en | Ochrona danych osobowych | The controller of your personal data is PayU S.A. with its registered office in Poznan (60-166), at Grunwaldzka Street 186 ("PayU"). Your personal data will be processed for purposes of processing payment transaction, notifying You about the status of this payment, dealing with complaints and also in order to fulfill the legal obligations imposed on PayU. The recipients of your personal data may be entities cooperating with PayU during processing the payment. Depending on the payment method you choose, these may include: banks, payment institutions, loan institutions, payment card organizations, payment schemes), as well as suppliers supporting PayU’s activity providing: IT infrastructure, payment risk analysis tools and also entities that are authorised to receive it under the applicable provisions of law, including relevant judicial authorities. Your personal data may be shared with merchants to inform them about the status of the payment. You have the right to access, rectify, restrict or oppose the processing of data, not to be subject to automated decision making, including profiling, or to transfer and erase Your personal data. Providing personal data is voluntary however necessary for the processing the payment and failure to provide the data may result in the rejection of the payment. For more information on how PayU processes your personal data, please click https://static.payu.com/sites/terms/files/payu_privacy_policy_en_en.pdf. |
pl | Zlecenie płatności | Zlecenie realizacji płatności: Zlecenie wykonuje PayU SA; Dane odbiorcy, tytuł oraz kwota płatności dostarczane są PayU SA przez odbiorcę; Zlecenie jest przekazywane do realizacji po otrzymaniu przez PayU SA Państwa wpłaty. Płatność udostępniana jest odbiorcy w ciągu 1 godziny, nie później niż do końca następnego dnia roboczego; PayU SA nie pobiera opłaty od realizacji usługi. |
pl | Zasady płatności PayU | Płacąc akceptujesz "Zasady płatności PayU". |
pl | Ochrona danych osobowych | Administratorem Twoich danych osobowych jest PayU S.A. z siedzibą w Poznaniu (60-166), przy ul. Grunwaldzkiej 186. Twoje dane osobowe będą przetwarzane w celu realizacji transakcji płatniczej, powiadamiania Cię o statusie realizacji Twojej płatności, rozpatrywania reklamacji, a także w celu wypełnienia obowiązków prawnych ciążących na PayU. |
sk | DOchrona danych osobowych | Administrátorom Vašich osobných údajov je PayU S.A. so sídlom v
Poznani (60-166), ul. Grunwaldzka 186. Vaše osobné údaje budú
spracované za účelom realizácie platobnej transakcie, informovania
Vás o stave realizácie Vašej platby, vybavovania reklamácie, a
taktiež za účelom splnenia právnych povinností nachádzajúcich sa na
strane PayU. Príjemcami Vašich osobných údajov môžu byť subjekty spolupracujúce s PayU počas realizácie platby. V závislosti od Vami zvolenej platobnej metódy to môžu byť: banky, platobné inštitúcie, pôžičkové inštitúcie, organizácie platobných kariet, platobné schémy), okrem toho subjekty podporujúce činnosť PayU, t. j. dodávatelia infraštruktúry IT, dodávatelia nástrojov na analýzu rizika platby, a taktiež subjekty oprávnené na ich prijímanie na základe platných právnych predpisov, vrátane príslušných justičných orgánov. Vaše údaje môžu byť sprístupnené príjemcom, aby boli informovaní o stave realizácie platby. Máte právo na prístup k údajom, a taktiež na ich opravu, obmedzenie ich spracovania, oznámenie nesúhlasu voči ich spracovaniu, nepodliehaniu zautomatizovanému individuálnemu rozhodovaniu, vrátane profilovania ako aj prenosu a odstránenia údajov. Uvedenie údajov je dobrovoľné, ale potrebné na realizáciu platby, neposkytnutie údajov môže mať vplyv na odmietnutie platby. Viac informácií o pravidlách spracovania Vašich osobných údajov zo strany PayU nájdete tu |
Istnieje kilka wariantów akceptacji kart płatniczych poprzez system PayU.
W przypadku włączenia płatności kartowych jesteś zobowiązany do przestrzegania norm PCI DSS.
Powinieneś co roku wypełnić Self-Assessment Questionnaire (SAQ), a także wykonywać kwartalny skan sieci przeprowadzany przez jednostkę weryfikującą - Approved Scan Vendor (ASV).
Dodatkowo, jeżeli przetwarzasz ponad 6 milionów transakcji rocznie powinieneś wykonać Report on Compliance (ROC), przeprowadzany przez certyfikowanego audytora - Qualified Security Assessor (QSA).
Więcej informacji możesz znaleźć na stronie Security Standards Council.
Aby wywołać formularz bezpośrednio, należy dodać poniższy obiekt do żądania OrderCreateRequest:
{ "payMethods": { "payMethod": { "type":"PBL", "value":"c" } } }
Po utworzeniu zamówienia z użyciem powyższej sekcji, jako "redirectUri" zwrócony zostanie adres strony płatności kartą.
Wersja językowa strony jest wybierana jest zgodnie z logiką podaną poniżej:
lang
dodanego do query string w "redirectUri", np. "&lang=en",language
w obiekcie Buyer. Zob. więcej o obiekcie Buyer,W celu zwiększenia konwersji, formularz ma możliwość przewalutowania dla najbardziej popularnych par walutowych (np. z PLN do EUR). Płatnik może wybrać płatność w innej walucie (np. EUR), podczas gdy sklep nadal otrzyma środki w swojej walucie (np. PLN).
Opcją bardziej zaawansowaną jest użycie Secure Form lub budowa własnego formularza.
Token reprezentujący dane karty zwrócony przez Secure Form należy wysłać do PayU w
obiekcie
payMethods
.
{ "payMethods": { "payMethod": { "type":"CARD_TOKEN", "value":"TOK_1IHRPT6HKSSS3H62K0GS8pElP862" } } }
Możliwe jest wykonanie własnego formularza. Jego wygląd i ostylowanie są dowolne, należy jednak pamiętać o obowiązkach informacyjnych opisanych powyżej.
Wskazówki do wykonania własnego formularza zawierającego skrypty PayU są podane tutaj.
Uwaga: w przypadku kiedy karty nie są zapisywane na poczet przyszłych płatności, można pominąć poniższe pole.
<tr> <td>Akceptacja regulaminu Konta PayU i zgoda na zapisanie karty</td> <td><input type="checkbox" value="false" class="payu-agreement"></td> </tr>
Token reprezentujący dane karty zwrócony przez Secure Form należy wysłać do PayU w
obiekcie
payMethods
.
{ "payMethods": { "payMethod": { "type":"CARD_TOKEN", "value":"TOK_1IHRPT6HKSSS3H62K0GS8pElP862" } } }
Możliwe jest wysłanie danych kartowych w postaci tekstowej.
Dane kartowe należy przekazać w obiekcie payMethods
. Przykład:
{ "payMethods": { "payMethod": { "card": { "number":"5100052384536818", "expirationMonth":"11", "expirationYear":"2020", "cvv":"123" } } } }
Kod odpowiedzi, jest standardowym kodem odpowiedzi dla kart, najważniejsze to: SUCCES, WARNING_CONTINUE_3DS, WARNING_CONTINUE_CVV. Wyjaśnienie oraz pozostałe kody odpowiedzi zawarto w: Kody statusów.
Uwaga: dane kartowe w postaci tekstowej wymagają dodatkowej konfiguracji. Dlatego przed przystąpieniem do integracji należy skontaktować się z opiekunem handlowym w PayU.
Uwierzytelnienie polega na pobraniu tokena OAuth'owego. Token używany jest w dalszej
komunikacji z serwerami PayU. Dane potrzebne do autoryzacji znajdują się w panelu
menadżerskim. Rozróżniamy dwa tryby dostępów: client_credentials służący do
standardowej integracji oraz trusted_merchant służący do uwierzytelniania
żądań dla zalogowanych użytkowników sklepu/aplikacji z przypisanym stałym
identyfikatorem ext_customer_id
.
Pamiętaj, aby dodać nagłówek Content-Type: application/x-www-form-urlencoded
, w przeciwnym razie zostanie zwrócony błąd 401.
Przykład requesta pobierającego token w obu trybach:
curl -X POST https://secure.snd.payu.com/pl/standard/user/oauth/authorize \
-d 'grant_type=client_credentials&client_id=460718&client_secret=22f4175da9f0f72bcce976dd8bd7504f'
curl -X POST https://secure.payu.com/pl/standard/user/oauth/authorize \
-d 'grant_type=trusted_merchant&client_id=145227&client_secret=12f071174cb7eb79d4aac5bc2f07563f&email=<customerEmail>&ext_customer_id=<customerId>'
Parametry żądania:
Parametr | Wymagany dla | Opis |
---|---|---|
grant_type | client_credentails, trusted_merchant | Tryb uwierzytelnienia. |
client_id | client_credentails, trusted_merchant | Identyfikator POS merchanta w systemie PayU. Można go znaleźć w panelu merchanta PayU. |
client_secret | client_credentails, trusted_merchant | Specjalny klucz merchanta. Można go znaleźć w panelu merchanta PayU. |
trusted_merchant | Adres email klienta w systemie merchanta. | |
ext_customer_id | trusted_merchant | Identyfikator klienta w systemie merchanta. |
Przykład odpowiedzi:
{ "access_token":"8f79c971-195e-43f5-bd83-ad2104414acc", "token_type":"bearer", "expires_in":43199, //czas ważności w sekundach "grant_type":"client_credentials" }
Przykład zamówienia z tokenem OAuth'owym:
curl -X POST https://secure.payu.com/api/v2_1/orders \ -H "Content-Type: application/json" \ -H "Authorization: Bearer 3e5cac39-7e38-4139-8fd6-30adc06a61bd" \ -d '{ "customerIp": "127.0.0.1", "merchantPosId": "145227", "description": "RTV market", "currencyCode": "PLN", "totalAmount": "21000", "products": [ { "name": "Wireless Mouse for Laptop", "unitPrice": "21000", "quantity": "1" } ] }'
OpenPayu-Signature
. Struktura pola:
signature=...;algorithm=...;sender=...Kolejność składowych nie jest istotna.
signature
- zawiera podpis wygenerowany zgodnie z algorytmem w postaci
lowercase,algorithm
- określa funkcję skrótu wykorzystaną do wygenerowania podpisu,sender
- identyfikator POSa.<input name="OpenPayu-Signature" value="sender=145227;algorithm=SHA-256;signature=565f9f4dda43c8e24ccab4472133d680e2aa58e1f58bea845c4cf2926965144d">
Parametr algorithm
może przyjmować poniższe wartości:
SHA-256
,SHA-384
,SHA-512
.name
elementu input
) w porządku
rosnącym.&
. Wartości parametrów muszą być poddane kodowaniu URL (URL encoding, application/x-www-form-urlencoded,
znak spacji zamieniany na '+') przy użyciu UTF-8.OpenPayU-Signature
wartością
signature=A;algorithm=B;sender=C
, gdzie:
A
to wynik funkcji skrótu,B
to nazwa użytej funkcji skrótu,C
to identyfikator POSa.generate_signature(form, secondKey, algorithm, posId) { sortedValues = sortValuesByItsName(form) foreach value in sortedValues { content = content + parameterName + "=" + urlencode(value) + "&" } content = content + secondKey result = "signature=" + algorithm.apply(content) + ";" result = result + "algorithm=" + algorithm.name + ";" result = result + "sender=" + posId return result }
Przykład kodu z sdk OpenPayU OpenPayU SDK.
<input type="hidden"name="customerIp" value="123.123.123.123"> <input type="hidden"name="merchantPosId" value="145227"> <input type="hidden"name="description" value="Opis zamówienia"> <input type="hidden"name="totalAmount" value="1000"> <input type="hidden"name="currencyCode" value="PLN"> <input type="hidden"name="products[0].name" value="Produkt 1"> <input type="hidden"name="products[0].unitPrice" value="1000"> <input type="hidden"name="products[0].quantity" value="1"> <input type="hidden"name="notifyUrl" value="http://shop.url/notify"> <input type="hidden"name="continueUrl" value="http://shop.url/continue">
&
z dodanym na końcu swoim kluczem prywatnym (widocznym w
Panelu Managera jako Drugi klucz
(MD5)):
continueUrl=http%3A%2F%2Fshop.url%2Fcontinue¤cyCode=PLN&customerIp=123.123.123.123&description=Opis+zam%C3%B3wienia&merchantPosId=145227¬ifyUrl=http%3A%2F%2Fshop.url%2Fnotify&products[0].name=Produkt+1&products[0].quantity=1&products[0].unitPrice=1000&totalAmount=1000&13a980d4f851f3d9a1cfc792fb1f5e50
565f9f4dda43c8e24ccab4472133d680e2aa58e1f58bea845c4cf2926965144d
<input name="OpenPayu-Signature" value="sender=145227;algorithm=SHA-256;signature=565f9f4dda43c8e24ccab4472133d680e2aa58e1f58bea845c4cf2926965144d">
W przypadku pytań prosimy o kontakt.
Przykładowy nagłówek:
OpenPayu-Signature: sender=checkout; signature=c33a38d89fb60f873c039fcec3a14743; algorithm=MD5; content=DOCUMENT
Postępuj według następujących instrukcji:
string incoming_signature = signature_header[signature]
string concatenated = JSONnotification + second_key;
string expected_signature = md5(concatenated)
if(expected_signature == incoming_signature){ return true; //podpis jest prawidłowy }else{ return 'Wrong signature' // podpis nie jest prawidłowy }
Poniżej znajdują się opisy pól w komunikatach wchodzących w skład REST API.
Używanie znaków specjalnych w opisach transakcji nie jest zalecane przez PayU. Niektóre znaki nie są akceptowane przez banki.
Opis możliwych do wykorzystania pól:
Parametr | Opis | Wymagany |
---|---|---|
extOrderId | Identyfikator zamówienia nadany przez Sprzedającego. Umożliwia Sprzedającemu odnalezienie zamówienia we własnym systemie. Wartość musi być unikalna w ramach jednego punktu płatności. | Nie |
notifyUrl | Adres pod który będą przesyłane powiadomienia. | Nie |
customerIp | Adres IP płacącego, np. "123.123.123.123" (uwaga: adres "0.0.0.0" nie jest dopuszczalny). | Tak |
merchantPosId | Identyfikator punktu płatności na którym zostanie wykonana płatność. | Tak |
validityTime | Czas w trakcie którego możliwe jest dokończenie zamówienia w sekundach. Domyślna wartość 86400. | Nie |
description | Opis zamówienia. | Tak |
additionalDescription | Dodatkowy opis zamówienia. | Nie |
visibleDescription | Tekst widoczny na stronie płatniczej PayU (maks. 80 znaków). | Nie |
statementDescription | Nazwa odbiorcy płatności i opis płatności (np. nr zamówienia, nr biletu) widoczny na rachunku karty płatniczej (maks. 22 znaki). Powinien zawierać czytelną nazwę obiorcy (np. "sklep.pl zam. 124343"). Jeśli pole nie zostanie przesłane, zastosowana zostanie nazwa skonfigurowana przez PayU. | Nie |
currencyCode | Waluta zamówienia w standardzie ISO 4217, np. "PLN". | Tak |
totalAmount | Całkowity koszt zamówienia w groszach (np. 1000 to 10,00 EUR). Dotyczy również walut bez groszy (tj. 1000 to 10 HUF). | Tak |
cardOnFile | Informuje o stronie inicjującej płatność:
recurring . |
Nie, powinien być użyty w przypadku płatności z danymi kartowymi lub z wykorzystaniem wielorazowego tokenu (TOKC_). |
recurring | Sprawia, że transakcja jest traktowana jako cykliczna:.
cardOnFile . |
Nie, powinien być użyty jedynie w przypadku płatności cyklicznych z wykorzystaniem wielorazowego tokenu (TOKC_). |
continueUrl | Adres na jaki będzie przekierowany płatnik po zakończeniu procesu płatności.
Jeśli płatność się nie powiodła, do adresu dodany zostanie parametr
error=501 , jednak żadna decyzja odnośnie statusu płatności nie
powinna być podejmowana na podstawie obecności lub braku tego parametru. Aby uzyskać
status płatności, należy poczekać na notyfikację
lub pobrać dane zamówienia. WAŻNE:
adres musi być zgodny ze strukturą:
![]()
|
Nie |
buyer | Sekcja przechowująca dane kupującego. Jej użycie jest mocno zalecane, ponieważ
w przypadku braku podania tej sekcji, użytkownik będzie proszony o uzupełnienie
danych na stronie PayU, a płatności typu Raty lub Płacę później nie będą możliwe. Opis pól sekcji <buyer> |
Nie, zalecany |
products | Sekcja zawiera dane o produktach. Sekcja <products> to tablica obiektów
typu <product>. Opis pól obiektu typu <product> |
Tak |
payMethods | Sekcja pozwala wskazać metodę płatności. Sekcja <payMethods> to jeden
obiekt typu <payMethod>. Opis pól obiektu typu <payMethod> |
Nie |
mcpData | Sekcja umożliwia przesłanie szczegółów przewalutowania dla Multi-Currency Pricing. Opis pól sekcji <mcpData>. |
Nie |
threeDsAuthentication | Zawiera opcjonalne pola wymagane przez protokół uwierzytelnienia 3DS 2.
Szczegóły dotyczące uwierzytelnienia 3DS 2 dla płatności kartowych znajdują się w
3DS 2. Opis pól sekcji <threeDsAuthentication> |
Nie |
credit | Sekcja przechowująca dane dotyczące procesu kredytowego. Jej użycie jest mocno
zalecane, ponieważ w przypadku braku podania tej sekcji, użytkownik będzie proszony
o uzupełnienie danych na stronie dostawcy płatności typu Raty lub Płacę później.
Opis pól sekcji <credit> |
Nie, ale zalecane |
Parametr | Opis |
---|---|
redirectUri | Adres pod który należy przekierować kupującego |
orderId | Identyfikator zamówienia nadany przez system PayU |
extOrderId | Zewnętrzny identyfikator zamówienia (nadawany przez sklep) |
status | Obiekt typu status odpowiedzi. Opis pól sekcji <status>. |
Parametr | Opis |
---|---|
order | Sekcja przechowująca obiekt typu <order>. Opis pól obiektu typu <order> |
localReceiptDateTime | Moment przyjęcia transakcji i dodania środków z transakcji do salda Sklepu. Format: "%Y-%M-%DT%h:%m:%s%z". Przykład: "2020-06-09T17:52:04.644+02:00". W przypadku gdy licznik miliesekund wyniesie "000", milisekundy nie są przesyłane i format zmienia się na: "%Y-%M-%DT%h:%m:%s". Parametr pojawia się jedynie w przypadku statusu "COMPLETED". |
properties | Tablica obiektów związanych z identyfikacją transakcji. W przypadku statusów:
|
properties.name | Wartość statyczna. Oznacza identyfikator płatności, widoczny na zestawieniach transakcji jako "Trans ID" i podczas wyszukiwania transakcji w Panelu Managera.. |
properties.value | ID transakcji w systemie PayU (typ danych - string). |
Parametr | Opis | Wymagany |
---|---|---|
orderId | Identyfikator zamówienia w systemie PayU | Tak |
orderStatus | Nowy status zamówienia. Możliwa wartość: COMPLETED | Tak |
Parametr | Opis |
---|---|
status | Obiekt typu status odpowiedzi. Opis pól sekcji <status>. |
Parametr | Opis | Wymagany |
---|---|---|
orderId | Identyfikator zamówienia dla którego będzie realizowany zwrot | Tak |
refund | Element typu RefundInfoType, zawierający szczegółowe dane na temat uznania | Tak |
Opis RefundInfoType
Parametr | Opis | Wymagany w obrębie typu |
---|---|---|
description | Opis wykonywanego uznania | Tak |
amount | Kwota uznania. Jeśli zostanie pusta, zostanie wykonany zwrot całości zapłaconych środków | Nie |
extRefundId | Identyfikator zwrotu w systemie klienta, unikalny w obrębie zamówienia | Nie |
bankDescription | Tytuł przelewu bankowego | Nie |
type | Typ operacji (możliwa wartość: REFUND_PAYMENT_STANDARD) | Nie |
Parametr | Opis |
---|---|
orderId | Identyfikator zamówienia dla którego będzie realizowany zwrot |
refund | Element typu <RefundRecord_Type>, zawierający szczegółowe dane na temat uznania |
status | Obiekt typu status odpowiedzi. Opis pól sekcji <status>. |
Opis pól <RefundRecord_Type>
Parametr | Opis |
---|---|
refundId | Identyfikator zwrotu |
extRefundId | Zewnetrzny identyfikator zwrotu nadany w komunikacie RefundCreateRequest |
amount | Kwota uznania |
currencyCode | Waluta zamówienia w standardzie ISO 4217, np. "PLN". |
description | Opis wykonywanego uznania |
creationDateTime | Data utworzenia zwrotu |
status | Kod statusu przetwarzania (PENDING, CANCELED, FINALIZED) |
statusDateTime | Data statusu |
Parametr | Opis | Wymagany |
---|---|---|
orderId | Identyfikator zamówienia dla którego będzie realizowany zwrot | Tak |
Parametr | Opis |
---|---|
orderId | Identyfikator zamówienia dla którego będzie realizowany zwrot |
extOrderId | Zewnętrzny identyfikator zamówienia (nadawany przez sklep) |
status | Obiekt typu status odpowiedzi. Opis pól sekcji <status>. |
Parametr | Opis | Wymagany |
---|---|---|
orderId | Identyfikator zamówienia dla którego będzie realizowany zwrot | Tak |
Parametr | Opis |
---|---|
order | Sekcja przechowująca tablicę elementów typu <order> Opis pól elementu typu <order>. |
status | Obiekt typu status odpowiedzi. Opis pól sekcji <status>. |
properties | Tablica obiektów związanych z identyfikacją transakcji. W przypadku statusów:
|
properties.name | Wartość statyczna. Oznacza identyfikator płatności, widoczny na zestawieniach transakcji jako "Trans ID" i podczas wyszukiwania transakcji w Panelu Managera.. |
properties.value | ID transakcji w systemie PayU (typ danych - string). |
Jedynym parametrem w tej sekcji jest orderId
umieszczany w adresie
żądania.
Parametr | Opis | Wymagany |
---|---|---|
orderId | Identyfikator zamówienia, do którego została wykonana dana transakcja. | Tak |
TransactionRetrieveResponse zawiera listę obiektów (transakcji w ramach zamówienia). W tej chwili jest to lista jednoelementowa. W najbliższej przyszłości planowane jest - w przypadku ponowienia płatności - rozszerzenie listy do większej liczby elementów.
Parametr | Opis |
---|---|
payMethod.value | Wybrana metoda płatności. |
bankAccount.number | Numer rachunku bankowego z którego wykonano płatność. |
bankAccount.name | Imię i nazwisko posiadacza rachunku z którego wykonano płatność (lub całość danych – imię, nazwisko i adres). |
resultCode | Opcjonalna informacja o wyniku transakcji. Możliwe wartości:
|
Pozostałe (poniższe) pola odnoszące się do PBL są wypełniane w zależności o tego, jak parsowane są dane otrzymywane z banku.
bankAccount.address | Adres posiadacza rachunku. |
bankAccount.city | Miasto w adresie posiadacza rachunku. |
bankAccount.postalCode | Kod pocztowy w adresie posiadacza rachunku. |
bankAccount.street | Ulica i nr domu w adresie posiadacza rachunku. |
Parametr | Opis |
---|---|
payMethod.value | Wybrana metoda płatności |
paymentFlow | Możliwe wartości:
|
card.cardData.cardNumberMasked | Maskowany numer karty (prawdziwy nr lub token w przypadku Apple Pay i Google Pay Tokenized). |
card.cardData.cardScheme | Organizacja płatnicza: MC (MasterCard/Maestro), VS (Visa). |
card.cardData.cardProfile | Profil karty (CONSUMER lub BUSINESS). |
card.cardData.cardClassification | Klasyfikacja karty (CREDIT/DEBIT) |
card.cardData.cardBinCountry | Kraj wydania karty. Dwuliterowy kod kraju zgodny z ISO-3166. |
card.cardData.firstTransactionId | Identyfikator pierwszej, inicjalizującej, płatności cyklicznej lub Card-on-File nadany przez organizację płatniczą. |
resultCode | Opcjonalna informacja o wyniku transakcji. Możliwe wartości:
|
card.cardData.cardResponseCode | Kod odpowiedzi. Wyjaśnienia kodów znajdziesz Tutaj. |
card.cardData.cardResponseCodeDesc | Kod odpowiedzi z opisem. |
card.cardData.cardEciCode | Electronic Commerce Indicator. Więcej informacji znajdziesz Tutaj. |
card.cardData.card3DsStatus | Status uwierzytelnienia 3DS. Więcej informacji znajdziesz Tutaj. |
card.cardData.card3DsFrictionlessIndicator | Określa czy uwierzytelnienie było z "wyzwaniem" czy było "frictionless". Więcej informacji znajdziesz Tutaj. |
card.cardData.card3DsStatusDescription | Opis statusu 3DS. Więcej informacji znajdziesz Tutaj. |
Opis pól obiektu typu <product>
Rekord | Opis | Wymagany w obrębie sekcji |
---|---|---|
name | Nazwa | Tak |
unitPrice | Cena jednostkowa | Tak |
quantity | Liczba sztuk | Tak |
virtual | Produkt może być wirtualny lub materialny; przyjmuje wartości
true i false . |
Nie |
listingDate | (marketplace) Data wystawienia produktu w formacie ISO np. "2016-01-26T17:35:37+01:00". | Nie |
Opis pól obiektu typu <payMethod>
Rekord | Opis | Wymagany w obrębie sekcji |
---|---|---|
type | Typ metody płatności, możliwe wartości:
|
Tak |
value | Symbol typu płatności dla PBL, CARD_TOKEN. | Tak/Nie (nie wymagany dla PAYMENT_WALL) |
authorizationCode | Opcjonalny. Dla transparentnej integracji metody płatności BLIK: pozwala pobrać 6-cyfrowy kod na stronie sklepu bez przekierowania na stronę BLIK. Zobacz więcej o transparentnej integracji. Dla transparentnej integracji Visa Checkout: zawiera parametr callId. Zobacz więcej o Visa Checkout. | Nie |
<mcpData> fields description
Rekord | Opis | Wymagany w obrębie sekcji |
---|---|---|
mcpCurrency | "termCurrency" z tabeli kursowej. | tak |
mcpAmount | kwota w walucie bazowej ("baseCurrency") przeliczona do "termCurrency". | tak |
mcpRate | Użyty kurs przewalutowania. | tak |
mcpFxTableId | Id użytej tabeli kursowej. | tak |
mcpPartnerId | Identyfikator przekazany przez PayU. | tak |
Opis pól sekcji <buyer>
Sekcja buyer
opisuje dane Kupującego. Nie jest wymagana. Jej użycie
jest jednak mocno zalecane, ponieważ w przypadku braku podania tej sekcji, użytkownik
będzie proszony o uzupełnienie danych na stronie PayU, a płatności typu Raty lub Płacę
później nie będą możliwe.
Rekord | Opis | Wymagany w obrębie sekcji |
---|---|---|
customerId | Id kupującego | Nie |
extCustomerId | Identyfikator kupującego używany w systemie klienta | Nie |
Adres email kupującego | Tak – dla Rat (PL) i Płacę później (PL), Płacę Później z Twisto (CZ) i uwierzytelnienia 3DS 2. | |
phone | Numer telefonu | Tak - dla Płacę Później z Twisto (CZ) i uwierzytelnienia 3DS 2 |
firstName | Imię kupującego | Tak - dla Płacę Później z Twisto (CZ) i uwierzytelnienia 3DS 2 |
lastName | Nazwisko kupującego | Tak - dla Płacę Później z Twisto (CZ) i uwierzytelnienia 3DS 2 |
nin | PESEL lub zagraniczny ekwiwalent | Nie |
language | Kod języka zgodnie z ISO-639-1 - określa język strony płatniczej oraz język wiadomości e-mail wysyłanych przez PayU do płatnika - dostępne parametry są tutaj | Nie |
delivery | Sekcja zawierająca dane adresowe do wysyłki towaru Opis pól sekcji <delivery> |
Nie, rekomendowane dla uwierzytelnienia 3DS 2 |
Opis pól w sekcji <delivery>
Rekord | Opis | Wymagany w obrębie sekcji |
---|---|---|
street | Ulica | Nie, rekomendowane dla uwierzytelnienia 3DS 2. |
postalBox | Skrytka pocztowa | Nie |
postalCode | Kod pocztowy | Nie, rekomendowane dla uwierzytelnienia 3DS 2. |
city | Miasto | Nie, rekomendowane dla uwierzytelnienia 3DS 2. |
state | Główny podział kraju jak "stan" lub "prowincja". Wartość powinna być poprawnym kodem ISO 3166-2 (np. "UT" dla Utah w USA lub "30" dla "Wielkopolskie" w Polsce). | Nie, rekomendowane dla uwierzytelnienia 3DS 2. |
countryCode | Dwuliterowy kod kraju zgodny z ISO-3166. | Nie, rekomendowane dla uwierzytelnienia 3DS 2. |
name | Nazwa adresu | Nie |
recipientName | Nazwisko adresata | Nie |
recipientEmail | Adres email adresata | Nie |
recipientPhone | Numer telefonu adresata | Nie |
Opis pól w sekcji <order>
Rekord | Opis |
---|---|
orderId | Identyfikator zamówienia nadany przez system PayU |
extOrderId | Zewnętrzny identyfikator zamówienia (nadawany przez sklep) |
orderCreateDate | Znacznik czasu dla utworzenia zamówienia |
notifyUrl | Adres pod który będą przesyłane powiadomienia |
customerIp | Adres IP płatnika, np. "123.123.123.123" (uwaga: adres "0.0.0.0" nie jest dopuszczalny). |
merchantPosId | Identyfikator punktu płatności na którym zostanie wykonana płatność |
validityTime | Czas w trakcie którego możliwe jest dokończenie zamówienia w sekundach. Domyślna wartość 86400. |
description | Opis wykonywanego uznania |
additionalDescription | Dodatkowy opis zamówienia |
currencyCode | Waluta zamówienia w standardzie ISO 4217, np. "PLN". |
totalAmount | Całkowity koszt zamówienia |
status | Status zamówienia |
buyer | Sekcja przechowująca dane kupującego. Opis pól sekcji <buyer> |
products | Sekcja zawiera dane o produktach. Sekcja <products> jest tablicą obiektów
typu <product>. Opis pól obiektu typu <product> |
Opis pól w sekcji <status>
Rekord | Opis |
---|---|
statusCode | Kod odpowiedzi |
statusDesc | Opis statusu odpowiedzi |
OrderCreateRequest - obiekt
threeDsAuthentication
.
Parametr | Opis | Wymagalność |
---|---|---|
challengeRequested |
Preferencja merchanta w stosunku do sposobu uwierzytelnienia. Rozłączny z exemption. Może zostać zastąpiony przez PayU. Możliwe wartości:
|
Nie |
exemption | Wyjątek od silnego uwierzytelnienia (SCA) jaki zostanie użyty aby nie wykonywać 3DS. Rozłączny z challengeRequested. Wymaga dodatkowej konfiguracji po stronie PayU. Parametry tego obiektu opisane są w tabeli exemption. | No |
browser | Dane przeglądarki wymagane dla trybu przeglądarkowego 3DS 2. W przypadku braku
podanych informacji zostaną one zebrane przez PayU. Zaleca się załączanie tych informacji, ponieważ dzięki nim, w niektórych przypadkach obciążania zapisanych kart (z użyciem tokenu wielorazowego), możliwe jest ominięcie przekierowania na stronę uwierzytelniającą PayU. Parametry tego obiektu opisane są w tabeli browser. |
Nie, ale zalecane |
sdk | Wymagane jeżeli aplikacja mobilna merchanta wspiera 3DS 2. Zawartość musi być
generowana przez certyfikowane 3DS 2 SDK Ta informacja nie jest wymagana, ale zaleca się jej zamieszczanie w przypadku obciążania zapisanych kart (z użyciem tokenu wielorazowego). Parametry tego obiektu opisane są w tabeli sdk. |
Tak (jeżeli używane jest 3DS 2 SDK) |
merchantRiskIndicator | Zbiór pól pomocnych w ustaleniu ryzyka, związanego z samą transakcją (metoda
dostawy, rodzaj sprzedanego produktu, itp.) Parametry tego obiektu opisane są w tabeli merchantRiskIndicator. |
Nie |
recurring | Dodatkowe informacje w przypadku płatności cyklicznej. Parametry tego obiektu opisane są w tabeli recurring. | Nie |
cardholder | Zawiera dane konta właściciela karty posiadane przez merchanta, w tym szczegóły
dotyczące konta użytkownika w systemie merchanta. Parametry tego obiektu opisane są w tabeli cardholder. |
Nie, ale zalecane |
Opisy pól threeDsAuthentication.browser
.
Parametr | Opis | Wymagalność |
---|---|---|
acceptHeaders | Dokładna zawartość nagłówków HTTP accept, wysłanych z przeglądarki użytkownika. | Tak |
requestIP | Adres IP przeglądarki zwracany przez nagłówki HTTP. | Tak |
screenWidth | Całkowita szerokość ekranu użytkownika w pixelach. Pozyskane z właściwości HTML DOM - screen.width. | Tak |
javaEnabled | Uzyskane z obiektu nawigatora HTML DOM. | Tak |
timezoneOffset | Uzyskane z metody getTimezoneOffset() zastosowanej do obiektu Date. | Tak |
screenHeight | Uzyskane z obiektu nawigatora HTML DOM. | Tak |
userAgent | Dokładna zwartość nagłówka HTTP user-agent. | Tak |
colorDepth | Uzyskane z przeglądarki uzytkownika, używającej właściwości HTML DOM - screen.colorDepth. | Tak |
language | Uzyskane z przeglądarki użytkownika, używającej właściwości HTML DOM - navigator.language. Maks. długość to 8 znaków. | Tak |
Opisy pólthreeDsAuthentication.exemption
.
Parametr | Opis | Wymagalność |
---|---|---|
value | Możliwe wartości: LOW_RISK (tzw. TRA - transaction risk analysis, analiza ryzyka transakcji zgodna z wymaganiami SCA została przeprowadzona przez inicjatora płatności) lub LOW_VALUE (płatność niskokwotowa, maks. 30 EUR lub równowartość w innej walucie). | Tak |
rejectionHandling | Możliwe wartości: PERFORM_AUTHENTICATION (PayU zwróci odpowiedź z kodem WARNING_CONTINUE_3DS i adresem do przekierowania, jeśli wyjątku nie można będzie zastosować),
DECLINE (PayU odrzuci płatność jeśli wyjątku nie będzie można zastosować - błąd zostanie
zwrócony synchronicznie w OrderCreateResponse). |
Tak |
riskScore | Skoring nadany przez system monitorujący po stronie inicjatora płatności. Maks. 128 znaków. Wyłącznie do celów informacyjnych. | Nie |
Opisy pól threeDsAuthentication.sdk
. Wszystkie pola w
poniższej tabeli są generowane przez certyfikowane 3DS SDK.
Parametr | Opis | Wymagalność |
---|---|---|
sdkReferenceNumber | Przykład: DS_LOA_SDK_ADBV_739485_94783 | Tak |
sdkMaxTimeout | Wskazuje na maksymalny czas (w minutach) dla wszystkich wymian. Wartość tego pola będzie większa lub równa 05. | Tak |
sdkAppID | Przykład: 9063b12c-fcde-43c7-b28e-8d0af5520e8a | Tak |
sdkEncData | Dane zaszyfrowane przez 3DS SDK. | Tak |
sdkTransID | Przykład: b60c9879-ac77-4918-a317-7b01c4317053/8Q==.. | Tak |
sdkEphemPubKey | Publiczny komponent pary kluczy efemerycznych, wygenerowanych przez 3DS SDK w celu utworzenia kluczy sesyjnych pomiędzy SDK a wydawcą karty. | Tak |
Opisy pól
threeDsAuthentication.merchantRiskIndicator
.
Parametr | Opis | Wymagalność |
---|---|---|
orderType | Możliwe wartości:
|
Nie |
shipIndicator | Wskazuje na metodę dostawy, wybraną dla danej transakcji. Możliwe wartości:
|
Nie |
preOrdered | Wskazuje na to, czy przeprowadzana transakcja dotyczy produktu, który będzie
dostępny w przyszłości (przedsprzedaż). Typ danych: boolean. |
Nie |
preOrderDate | Data zamówienia w przedsprzedaży w formacie ISO, np. "2019-03-27T10:57:59.000+01:00". | Nie |
deliveryTimeFrame | Możliwe wartości:
|
Nie |
reordered | Informuje czy ten sam zakup został przeprowadzony ponownie. Typ danych: boolean. |
Nie |
merchantFunds | Wskazuje na częściowe opłacenie transakcji ze środków własnych merchanta (np.
karta podarunkowa). Suma kwot zawartych tutaj i w polu totalAmount
określa rzeczywistą kwotę transakcji w systemie merchanta.Obiekt zawiera dwa pola: amount (w centach) i currencyCode
(kod ISO). |
Nie |
Opisy pól threeDsAuthentication.recurring
.
Parametr | Opis | Wymagalność |
---|---|---|
frequency | Liczba dni między płatnościami. | Nie |
expiry | Data, po której płatności nie będą już wykonywane w formacie ISO, np. "2019-03-27T10:57:59.000+01:00". | Nie |
Opisy pól threeDsAuthentication.cardholder
.
Parametr | Opis | Wymagalność |
---|---|---|
name | Imię i nazwisko właściciela karty. | Nie |
accountInformation | Parametry tego obiektu są opisane w tabeli accountInformation. | Nie |
billingAddress | Parametry tego obiektu są opisane w tabeli billingAddress. | Nie |
Opisy pól
threeDsAuthentication.cardholder.accountInformation
.
Parametr | Opis | Wymagalność |
---|---|---|
createDate | Data stworzenia konta właściciela karty w formacie ISO, np. "2019-03-27T10:57:59+01:00". | Nie |
suspiciousActivity | Określa czy merchant spotkał się z podejrzanym/nieuczciwym zachowaniem
związanym z tym kontem. Typ danych: boolean. |
Nie |
deliveryAddressFirstUsedDate | Data pierwszego użycia adresu dostawy wykorzystanego przy danej transakcji w formacie ISO, np. "2019-03-27T10:57:59+01:00". | Nie |
deliveryAddressUsageIndicator | Wskazuje kiedy po raz pierwszy użyto danego adresu. Możliwe wartości:
|
Nie |
pastOrdersYear | Zamówienia utworzone dla tego konta w systemie merchanta, w ciągu ostatnich 12 miesięcy (liczba z przedziału 1-9999). | Nie |
pastOrdersDay | Zamówienia utworzone dla tego konta w systemie merchanta, w ciągu ostatnich 24 godzin (liczba z przedziału 1-9999). | Nie |
purchasesLastSixMonths | Zamówienia, w systemie merchanta, dla tego konta zakończone sukcesem w ciągu ostatnich 6 miesięcy ((liczba z przedziału 1-9999). | Nie |
changeDate | Data ostatniej zmiany szczegółów konta w formacie ISO, np. "2019-03-27T10:57:59+01:00" | Nie |
changeIndicator | Wskazuje kiedy ostatnio zmieniono szczegóły konta. Możliwe wartości:
|
Nie |
passwordChanged | Data ostatniej zmiany hasła tego konta. | Nie |
passwordChangeIndicator | Wskazuje czy i kiedy ostanio zmieniono hasło na koncie. Możliwe wartości:
|
No |
nameToRecipientMatch | Wskazuje czy imię właściciela karty odpowiada imieniu
beneficjenta. Typ danych: boolean. |
Nie |
addCardAttemptsDay | Wskazuje próby dodania karty do konta użytkownika w systemie merchanta, w ciągu ostatnich 24 godzin. | Nie |
authMethod | Metody uwierzytelnienia tożsamości właściciela karty. Możliwe wartości:
|
Nie |
authDateTime | Data i czas przeprowadzenia uwierzytelnienia w formacie ISO, np. "2019-03-27T10:57:59+01:00". | Nie |
cardAddedDate | Data zapisania danych karty w formacie ISO, np. "2019-03-27T10:57:59+01:00". | nie |
cardAddedIndicator | Wskazuje czy i kiedy dane karty zostały zapisane u merchanta. Możliwe wartości:
|
Nie |
Opisy
pólthreeDsAuthentication.cardholder.billingAddress
.
Parametr | Typ danych | Opis | Wymagalność |
---|---|---|---|
street | STR {1,50} | Pełna nazwa ulicy, włączając numer mieszkania. | Nie |
postalCode | STR {1,16} | Kod pocztowy. | Nie |
city | STR {1,50} | Nazwa miasta. | Nie |
state | STR {1,3} | Nazwa stanu/województwa, jeżeli dotyczy. | Nie |
countryCode | STR {1,2} | Dwuliterowy kod kraju zgodny z ISO-3166, np. "CZ", "PL" lub "US". | Nie |
Opis pól sekcji credit
Sekcja credit
opisuje dane dotyczące procesu kredytowego. Nie jest
wymagana. Jej użycie jest jednak mocno zalecane, ponieważ w przypadku braku podania
tej
sekcji, użytkownik będzie proszony o uzupełnienie danych na stronie dostawcy płatności
typu Raty lub Płacę później.
Parametr | Opis | Wymagalność |
---|---|---|
credit.shoppingCarts | Sekcja zawiera dane o zakupach dokonanych przez klienta. Sekcja
<credit.shoppingCarts> to tablica obiektów typu shoppingCart .Opis pól obiektu typu <shoppingCart>. |
Nie |
credit.applicant | Sekcja zawiera dane o osobie aplikującej o udzielenie kredytu. Opis pól sekcji <applicant>. |
Nie |
Opis pól sekcji shoppingCart
Parametr | Opis | Wymagalność |
---|---|---|
shippingMethod | Sekcja zawierająca dane sposobu wysyłki. Sekcja <shippingMethod> to jeden
obiekt typu shippingMethod .Opis pól obiektu typu <shippingMethod>. |
Nie, ale zalecane |
products | Sekcja zawiera dane o produktach. Sekcja <shoppingCart.products> to
tablica obiektów typu product . Opis pól obiektu typu <product>. (uwaga: obiekty typu product w sekcji <shoppingCart.products> nie posiadają pola listingDate ) |
Nie, ale zalecane |
extCustomerId | Identyfikator sprzedawcy. Pole powinno odpowiadać wartości przesyłanej w polu
extCustomerId w sekcji shoppingCarts w zamówieniu składanym w modelu
marketplace. |
Wymagane, gdy zamówienie jest składane w modelu marketplace oraz wypełniana jest sekcja
credit . |
Opis pól sekcji shippingMethod
Parametr | Opis | Wymagalność |
---|---|---|
type | Rodzaj wysyłki, możliwe wartości:
|
Nie, ale zalecane |
price | Koszt wysyłki. | Nie, ale zalecane |
address | Sekcja zawierająca dane adresu wysyłki. Sekcja <shippingMethod.address>
to jeden obiekt typu address . Opis pól obiektu typu <address>. |
Nie, ale zalecane |
Opis pól sekcji
address
Parametr | Opis | Wymagalność |
---|---|---|
pointId | Pełna nazwa punktu odbioru, zawierająca jego unikalny identyfikator, np. „Paczkomat POZ29A”. | Nie |
street | Nazwa ulicy, może ewentualnie zawierać numer budynku i mieszkania. | Nie, ale zalecane |
streetNo | Numer budynku | Nie, ale zalecane |
flatNo | Numer mieszkania | Nie, ale zalecane |
postalCode | Kod pocztowy | Nie, ale zalecane |
city | Nazwa miasta | Nie, ale zalecane |
countryCode | Dwuliterowy kod kraju zgodny z ISO-3166. | Nie, ale zalecane |
Opis pól sekcji credit.applicant
Parametr | Opis | Wymagalność |
---|---|---|
Adres email osoby aplikującej o udzielenie kredytu. | Nie, ale zalecane | |
phone | Numer telefonu osoby aplikującej o udzielenie kredytu. | Nie, ale zalecane |
firstName | Imię osoby aplikującej o udzielenie kredytu. | Nie, ale zalecane |
lastName | Nazwisko osoby aplikującej o udzielenie kredytu. | Nie, ale zalecane |
language | Kod języka zgodnie z ISO-639-1 - określa język strony płatniczej oraz język wiadomości e-mail wysyłanych przez PayU do płatnika - dostępne parametry są tutaj. | Nie, ale zalecane |
nin | PESEL lub zagraniczny ekwiwalent osoby aplikującej o udzielenie kredytu | Nie, ale zalecane |
address | Adres osoby aplikującej o pożyczkę. Sekcja <applicant.address> to jeden
obiekt typu address .Opis pól obiektu typu <address> (uwaga: obiekt typu address w sekcji <applicant> nie posiada pola pointId ) |
Nie, ale zalecane |
additionalInfo | Dodatkowe informacje dotyczące osoby aplikującej o udzielenie kredytu. Opis pól sekcji <applicant.additonalInfo>. |
Nie, ale zalecane |
Opis pól sekcji
credit.applicant_additionalInfo
Parametr | Opis | Wymagalność |
---|---|---|
hasSuccessfullyFinishedOrderInShop | Informacja, czy były poprzednie, pozytywnie zrealizowane zamówienia dla wskazanego aplikanta. | Nie, ale zalecane |
Poniższa tabela przedstawia wszystkie wymagane i opcjonalne parametry, które mogą być użyte w formularzu zamówienia.
Używanie znaków specjalnych w opisach transakcji nie jest zalecane przez PayU. Niektóre znaki nie są akceptowane przez banki.
Parametr | Wymagany | Opis |
---|---|---|
customerIp | Tak | Adres IP płacącego, np. "123.123.123.123" (uwaga: adres "0.0.0.0" nie jest dopuszczalny). |
extOrderId | Nie | Identyfikator zamówienia nadany przez Sprzedającego. Umożliwia Sprzedającemu odnalezienie zamówienia we własnym systemie. Wartość musi być unikalna w ramach jednego punktu płatności. |
merchantPosId | Tak | Identyfikator POSa. |
description | Tak | Opis zamówienia. |
additionalDescription | Nie | Dodatkowy opis zamówienia. |
visibleDescription | Nie | Tekst widoczny na stronie płatniczej PayU (maks. 80 znaków). |
statementDescription | Nie | Nazwa odbiorcy płatności i opis płatności (np. nr zamówienia) widoczny na rachunku karty płatniczej (maks. 22 znaki). Powinien zawierać czytelną nazwę obiorcy (np. "sklep.pl zam. 124343"). Jeśli pole nie zostanie przesłane, zastosowana zostanie nazwa skonfigurowana przez PayU. |
currencyCode | Tak | Waluta zamówienia w standardzie ISO 4217, np. "PLN". |
totalAmount | Tak | Całkowity koszt zamówienia w groszach (np. 1000 to 10,00 EUR). Dotyczy również walut bez groszy (tj. 1000 to 10 HUF). |
OpenPayu-Signature | Tak | Podpis parametrów. Więcej informacji w rozdziałach 7.1 i 7.2 |
Parametr | Wymagany | Opis |
---|---|---|
continueUrl | Nie | Adres na jaki będzie przekierowany płatnik po zakończeniu procesu płatności.
Jeśli płatność się nie powiodła, do adresu dodany zostanie parametr error=501 ,
jednak żadna decyzja odnośnie statusu płatności nie powinna być podejmowana na podstawie
obecności lub braku tego parametru.
Aby uzyskać status płatności, należy poczekać na notyfikację
lub pobrać dane zamówienia).
WAŻNE: adres musi być zgodny ze strukturą poniżej: ![]()
|
notifyUrl | Nie | Adres URL, na który przychodzić będą powiadomienia o zmianie statusu zamówienia lub zwrotu. |
Sekcja buyer
opisuje dane Kupującego. Nie jest wymagana. Jej użycie jest
jednak mocno zalecane, ponieważ w przypadku braku podania tej sekcji, użytkownik będzie
proszony o
uzupełnienie danych na stronie PayU, a płatności typu Raty lub Płacę później nie będą
możliwe.
Parametr | Wymagany | Opis |
---|---|---|
buyer.email | Nie | Adres e-mail Kupującego. |
buyer.phone | Nie | Numer telefonu Kupującego. |
buyer.firstName | Nie | Imię Kupującego. |
buyer.lastName | Nie | Nazwisko Kupującego. |
buyer.language | Nie | Określa język strony płatniczej oraz język wiadomości e-mail wysyłanych przez PayU do płatnika - dostępne parametry są tutaj. |
Sekcja buyer.delivery
opisuje adres do wysyłki. Nie jest wymagana.
Parametr | Wymagany | Opis |
---|---|---|
buyer.delivery.street | Nie | Nazwa ulicy. |
buyer.delivery.postalCode | Nie | Kod pocztowy. |
buyer.delivery.city | Nie | Miejscowość. |
buyer.delivery.countryCode | Nie | Dwuliterowy kod kraju zgodny z ISO-3166. |
buyer.delivery.name | Nie | Opis adresu. |
buyer.delivery.recipientName | Nie | Nazwa adresata. |
buyer.delivery.recipientEmail | Nie | Adres e-mail adresata. |
buyer.delivery.recipientPhone | Nie | Numer telefonu adresata. |
Sekcja products
jest obowiązkowa i opisuje listę produktów zamówienia. W opisie używany
jest iterator. Każdy produkt jest numerowany wartością z przedziału [0..n]. Przykładowo
products[0]
.
Parametr | Wymagany | Opis |
---|---|---|
products[0].name | Tak | Nazwa produktu. |
products[0].unitPrice | Tak | Cena jednostkowa produktu. |
products[0].quantity | Tak | Liczba produktów. |
products[0].virtual | Nie | Produkt może być wirtualny lub materialny;
przyjmuje wartości true i false . |
products[0].listingDate | Nie | (marketplace) Data wystawienia produktu, przykład: "2016-01-26T17:35:37+01:00" |
Poniższa tabela przedstawia kody statusów, które Sklep może otrzymać od PayU. Niektóre ze statusów mogą być opatrzone dodatkowymi komentarzami.
W przypadku kontaktu z PayU w związku z nieudanymi żądaniami, prosimy o wysłanie zapytania z podaną wartością
Correlation-Id
przekazaną jako nagłówek odpowiedzi.
Kod HTTP statusu | Kody statusu | Opis |
---|---|---|
200 OK | SUCCESS | Żądanie zostało wykonane poprawnie. |
201 Created | SUCCESS | Poprawnie utworzono zamówienie z użyciem tokena kartowego lub kodu BLIK w sekcji payMethods . |
302 Found | SUCCESS | Żądanie wykonano poprawnie. Parametr redirectUri został przekazany w nagłówku Location i w treści odpowiedzi w formacie JSON. |
WARNING_CONTINUE_REDIRECT | Żądanie wykonano poprawnie. Parametr redirectUri został przekazany w nagłówku Location i w treści odpowiedzi w formacie JSON.
Dotyczy transparentnej integracji z użyciem sekcji payMethods i zamówienia z użyciem metod płatności: orx, bnx, gbx, nlx. |
|
WARNING_CONTINUE_3DS | Wymagana autoryzacja 3DS. Należy wykonać przekierowanie w celu kontynuacji procesu
płatności (można skorzystać z
metody OpenPayU.authorize3DS()). |
|
WARNING_CONTINUE_CVV | Wymagane podanie kod CVV2/CVC2. Wywołaj metodę OpenPayU.authorizeCVV() opisaną tutaj. |
|
400 Bad request | ERROR_SYNTAX | Błędna składnia żądania. |
ERROR_VALUE_INVALID | Jedna lub więcej wartości jest nieprawidłowa. | |
ERROR_VALUE_INVALID (statusDesc: INVALID_BLIK_CODE) | Kod autoryzacyjny BLIK powinien mieć 6 cyfr. | |
ERROR_VALUE_INVALID (statusDesc: OPENPAYU_PAYMENT_CREATE_ BLOCKED_CHECKOUT_PAY_METHOD) | Wybrana metoda płatności jest obecnie niedostępna. Dostępność metod płatności można sprawdzać korzystając z Pobrania metod płatności. | |
ERROR_VALUE_INVALID ("codeLiteral": "SINGLE_CLICK_DISABLED") | Usługa zapisu tokenów kartowych jest obecnie niedostępna. | |
ERROR_VALUE_INVALID ("codeLiteral": "SINGLE_CLICK_RECURRING_DISABLED") | Płatności cykliczne są obecnie niedostępne. | |
ERROR_VALUE_INVALID (statusDesc: General MCP processing error) | Ogólny błąd usługi MCP. | |
ERROR_VALUE_INVALID (statusDesc: Fx Rate Table is outdated) | Tabela kursowa określona przez mcpFxTableId jest nieaktualna. |
|
ERROR_VALUE_INVALID (statusDesc: MCP is not supported for merchant) | Usługa MCP jest niedostępna dla podanego sklepu. | |
ERROR_VALUE_INVALID (statusDesc: Rate is null) | Pole mcpRate jest puste. |
|
ERROR_VALUE_INVALID (statusDesc: Fx Table Id is null) | Pole mcpFxTableId jest puste. |
|
ERROR_VALUE_INVALID (statusDesc: Amount is null) | Pole mcpAmount jest puste. |
|
ERROR_VALUE_INVALID (statusDesc: Currency is null) | Pole mcpCurrency jest puste. |
|
ERROR_VALUE_INVALID (statusDesc: Partner Id is null) | Pole mcpPartnerId jest puste. |
|
ERROR_VALUE_INVALID (statusDesc: Invalid currency pair for given Fx Table) | Nieprawidłowa para walutowa określona przez mcpCurrency i currencyCode dla podanej tabeli kursowej. |
|
ERROR_VALUE_INVALID (statusDesc: Invalid rate value for given Fx Table) | Nieprawidłowy kurs określony przez mcpRate dla podanej tabeli kursowej. |
|
ERROR_VALUE_INVALID (statusDesc: Invalid amount value for given Fx Table (amount was not calculated properly)) | Nieprawidłowa kwota określona przez mcpAmount dla podanej tabeli kursowej, kwota została wyliczona nieprawidłowo. |
|
ERROR_VALUE_INVALID (statusDesc: Currency is not supported) | Waluta określona przez mcpCurrency nie jest obsługiwania w usłudze MCP. |
|
ERROR_VALUE_INVALID (statusDesc: Wrong params. You're trying to send MIT/Recurring request for non-verified first Payment) | Próba płatności MIT/recurring tokenem, który nie został w pełni uwierzytelniony 3DSecure.
Z danym tokenem, w zależności od typu płatności, należy najpierw wykonać płatność
z odpowiednim parametrem: MIT (cardOnFile=FIRST ), recurring (recurring=FIRST ). |
|
ERROR_VALUE_MISSING | Brakuje jednej lub więcej wartości. | |
ERROR_ORDER_NOT_UNIQUE | Zamówienie już zostało utworzone. Ten błąd może występować w sytuacji w której podano
nieunikalny parametrextOrderId . |
|
ERROR_INTERNAL ("codeLiteral": "CARD_CARD_EXPIRED") | Koniec ważności karty płatniczej. | |
BUSINESS_ERROR ("codeLiteral": "ERROR_VALUE_INVALID" | “statusDesc”:”Order was rejected by antifraud system.”) | Zamówienie zostało odrzucone przez system zapobiegający oszustwom. | |
401 Unauthorized | UNAUTHORIZED | Błędne uwierzytelnienie. Należy sprawdzić parametry podpisu i prawidłowość wdrożenia algorytmu podpisu. |
403 Forbidden | UNAUTHORIZED_REQUEST | Brak uprawnień do wykonania żądania. |
ERROR_VALUE_INVALID ("codeLiteral": "INVALID_AUTH_FOR_THIS_ORDER") | Niezgodność parametru POS ID w żądaniu OAauth z wartością parametru POS ID w żądaniu OrderCreateRequest. Wartości POS ID w obu żądaniach muszą być zgodne. | |
404 Not found | DATA_NOT_FOUND | W systemie PayU brak danych, które wskazano w żądaniu. |
408 Request timeout | TIMEOUT | Upłynął okres ważności dla realizacji żądania. |
500 Internal server error | BUSINESS_ERROR | System PayU jest niedostępny. Spróbuj ponownie później. |
ERROR_INTERNAL | System PayU jest niedostępny. Spróbuj ponownie później. | |
GENERAL_ERROR | Wystąpił niespodziewany błąd. Spróbuj ponownie później. | |
WARNING | Wystąpił drobny niespodziewany błąd. Spróbuj ponownie później. | |
503 Service unavailable | SERVICE_NOT_AVAILABLE | System PayU jest niedostępny. Spróbuj ponownie później. |
Lista statusów transakcji kartowych odsyłana przez PayU, kody 3-D Secure.
Card ResponseCode | Card ResponseCodeDesc | Powód(*) | Informacje dodatkowe | Publiczny komunikat |
---|---|---|---|---|
000 | 000 - OK | Udana autoryzacja. Środki zostały przekazane do dyspozycji odbiorcy. | ||
S01 | S01 - Refer to card issuer | Bank | Błąd autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Aby wyjaśnić przyczynę odmowy, skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
S04 | S04 - Pickup card | Bank | ||
S05 | S05 - Do not honor | Bank | Poproś Płacącego, żeby skontaktował się ze swoim bankiem i rozwiązał przyczynę(y) odrzucenia transakcji. | |
S12 | S12 - Invalid transaction | Bank | Brak autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Sprawdź, czy swoją kartą możesz płacić w Internecie lub skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
S13 | S13 - Invalid amount | Bank | Prawdopodobnie limit pojedynczej transakcji po stronie banku został przekroczony. | Brak autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Sprawdź ustawienia limitów na swojej karcie lub skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. |
S30 | S30 - Message format error | Bank | Błąd autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Aby wyjaśnić przyczynę odmowy, skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
S43 | S43 - Pickup card (stolen card) | Bank | ||
S51 | S51 - Insufficient funds | Bank | Brak środków lub próba przekroczenia limitów (po stronie banku). | Brak środków. Sprawdź środki dostępne na swojej karcie lub skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. |
S54 | S54 - Expired card | Bank | Karta wygasła lub Płacący podał niepoprawne daty ważności karty. | Brak autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Sprawdź datę ważności swojej karty lub skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. |
S57 | S57 - Card disabled for e-commerce or cross-border transactions | Bank | Brak autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Sprawdź, czy swoją kartą możesz płacić w Internecie lub skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
S61 | S61 - Exceeds approval amount | Bank | Próba przekroczenia limitu (po stronie banku). | |
S62 | S62 - Restricted card / Country exclusion table | Bank | Błąd autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Aby wyjaśnić przyczynę odmowy, skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
S90 | S90 - Destination not available | Bank | Błąd autoryzacji Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Aby wyjaśnić przyczynę odmowy, skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
S93 | S93 - Card disabled for e-commerce transactions | Bank | ||
S99 | S99 - authorization error – default | Bank | Błąd autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Aby wyjaśnić przyczynę odmowy, skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
SN0 | SN0 - Unable to authorize / Force STIP | Bank | ||
SSD | SSD - Soft decline (strong authentication required) | Bank | Można ponowić próbę płatności z użyciem uwierzytelnienia 3DS. | |
ST3 | ST3 - Card not supported | Bank | ||
ST5 | ST5 - Card inactive or closed (updated information needed) | Bank | Można ponowić próbę płatności, ale dane karty należy zaktualizować (np. datę ważności). | |
ST8 | ST8 - Invalid account | Bank | Brak autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Sprawdź, czy swoją kartą możesz płacić w Internecie lub skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
SIN | SIN - No such issuer | Bank | ||
SP1 | SP1 - Over daily limit (try again later) | Bank | Można ponowić próbę płatności, najlepiej po upływie 24h. | Błąd autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Aby wyjaśnić przyczynę odmowy, skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. |
SAC | SAC - Account closed (do not try again) | Bank | Nie wolno ponawiać próby płatności, wszystkie kolejne próby będą odrzucone. | |
SPF | SPF - Possible fraud (do not try again) | Bank | Nie wolno ponawiać próby płatności, wszystkie kolejne próby będą odrzucone. | |
SP9 | SP9 - Enter lesser amount | Bank | Brak autoryzacji. Przepraszamy, wydawca Twojej karty odmówił realizacji tej transakcji. Sprawdź ustawienia limitów na swojej karcie lub skontaktuj się ze swoim bankiem. Spróbuj jeszcze raz, wybierając inną metodę płatności. | |
114 | 114 - 3ds authentication error (global) | PayU | Nieprawidłowy rezultat 3DS (konfiguracja domyślna). | Brak autoryzacji. Nie udało się potwierdzić tej transakcji u wydawcy Twojej karty. Spróbuj jeszcze raz. |
115 | 115 - 3ds authentication error (company) | PayU | Nieprawidłowy rezultat 3DS (konfiguracja dla całej firmy). | |
116 | 116 - 3ds authentication error (merchant) | PayU | Nieprawidłowy rezultat 3DS (konfiguracja dla konkretnego merchanta). | |
117 | 117 - 3ds authentication error (fallback). | PayU | Nieprawidłowy rezultat 3DS (konfiguracja awaryjna). | |
120 | 120 - 3ds processing error | PayU | Błąd w trakcie próby uwierzytelnienia za pomocą 3DS. | |
123 | 123 - Missing cryptogram for Network Token's authorization. | Visa/Mastercard | Błąd autoryzacji. Przepraszamy, próba potwierdzenia tej transakcji trwała zbyt długo. Spróbuj jeszcze raz. | |
130 | 130 - Non-compliant prepaid card | PayU | Karta rozpoznana jako niezgodna z AMLD5. | Brak autoryzacji. Przepraszamy, ta karta nie jest akceptowana w krajach Europejskiego Obszaru Gospodarczego. Spróbuj jeszcze raz, wybierając inną metodę płatności. |
131 | 131 - Credit card not allowed for debt merchants | PayU | Karta rozpoznana jako niedozwolona dla tej transakcji. | Brak autoryzacji. Przepraszamy, karta kredytowa nie może być użyta do spłaty długu. Spróbuj jeszcze raz, wybierając inną metodę płatności. |
222 | 222 - Transaction not received by merchant | Merchant | Merchant nie odebrał transakcji; status możliwy jedynie przy wyłączonej opcji auto odbioru. | |
001, 002, 003, 004, 005, 110, 111, 112, 113, 121, 122, 221, 223 | different messages | PayU | Prosimy skontaktować się z PayU w celu uzyskania szczegółów problemu. | Błąd autoryzacji. Przepraszamy, próba potwierdzenia tej transakcji trwała zbyt długo. Spróbuj jeszcze raz. |
(*) Powód pokazuje, która ze stron zatrzymała transakcję i tym samym z kim należy się kontatkować, aby otrzymać więcej szczegółów dotyczących przyczyny problemu.
cardEciCode | Wystawca | Informacje dodatkowe |
---|---|---|
5 / 2 | Visa / Mastercard | Pełne uwierzytelnienie. Odpowiedzialność po stronie wystawcy karty. |
6 / 1 | Visa / Mastercard | Próba Uwierzytelnienia częściowo udana. Wystawca karty nie uczestniczy w weryfikacji lub karta nie kwalifikuje się do uwierzytelnienia, lub serwer kontrolny wystawcy (ACS) nie jest aktualnie dostępny. Odpowiedzialność po stronie wystawcy karty. |
7 / 0 | Visa / Mastercard | Transakcja nie została uwierzytelniona. Odpowiedzialność po stronie Merchanta. |
Statusy 3Ds:
card3DsStatus | Wersja 3DS | Informacje dodatkowe |
---|---|---|
AY / Y | 3DS / 3DS2 | Uwierzytelnienie zakończone pomyślnie. |
AA / A | 3DS / 3DS2 | Próba uwierzytelnienia. |
AU / U | 3DS / 3DS2 |
Uwierzytelnienie nie mogło zostać przeprowadzone z powodu błędu technicznego bądź wystąpił inny problem. |
AN / N | 3DS / 3DS2 | Próba uwierzytelnienia nieudana. Odmowa autoryzacji. |
VE | 3DS | Błąd na etapie weryfikacji czy karta wspiera 3DS. |
AE | 3DS | Wystąpił błąd w procesie uwierzytelnienia. |
R | 3DS2 | Próba uwierzytelnienia odrzucona.Odmowa autoryzacji. |
A0 | 3DS | Błąd po stronie organizacji kartowej. |
Checklista bezpieczeństwa integracji z PayU:
Correlation-Id
przekazaną jako nagłówek odpowiedzi.