REST API

Najprostszy i najwygodniejszy protokół integracji z PayU.

1 Wprowadzenie

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ć.

Informacje o aktualnej wersji

Dokument zawiera informacje o protokole REST API w wersji 2.1.

Jeżeli poszukujesz informacji o starszej wersji API skontaktuj się z nami.

Informacje podstawowe

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.

Opis usługi

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.

  1. Złożenie zamówienia przez kupującego na stronie sklepu.
  2. Potwierdzenia prawidłowego rozliczenia płatności zrealizowanej przez usługę PayU.

Etap pierwszy. Złożenie zamówienia przez kupującego.

Proces jest przedstawiony na poniższym diagramie.

  1. Kupujący klika w przycisk reprezentujący usługę płatności PayU.
  2. System PayU prezentuje stronę z podsumowaniem zamówienia na której kupujący potwierdza płatność. System PayU przekierowuje kupującego na stronę banku.
  3. Kupujący akceptuje płatność na stronie Banku. Nastepuje przekierowanie kupującego ponownie na stronę systemu PayU.
  4. System Sprzedawcy prezentuje podziękowanie za transakcje.

Etap drugi (opcjonalny). Rozliczenie (odebranie) płatności.

  1. System PayU powiadamia system sprzedawcy o zmianie statusu procesowanej płatności zgodnie z jej cyklem za pomocą powiadomień ("notyfikacji").
  2. System sprzedawcy potwierdza odebranie powiadomienia.
Aktualny status danej płatności możesz obejrzeć w panelu menadżera.

2 Tworzenie nowego zamówienia

2.1 Tworzenie nowego zamówienia przez API

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.

2.2 Integracja formularza zamówienia

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.

3 Powiadomienia

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

3.1 Status zamówienia

Przykład powiadomienia wysyłanego przez PayU do sklepu dla zakończonego zamówienia:

  • 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": {
         "amount": "200",
         "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:

  • "localReceiptDateTime" występuje tylko w przypadku statusu "COMPLETED".
  • "PAYMENT_ID" oznacza identyfikator płatności, widoczny na zestawieniach transakcji jako "Trans ID" i podczas wyszukiwania transakcji w Panelu Managera.
  • PayU-Processing-Time (sekcja Headers) oznacza ile czasu trwało przetwarzanie po stronie PayU, do momentu próby wysłania pierwszej notyfikacji. Niektóre notyfikacje zostają celowo opóźnione przez PayU ponieważ Merchant może odbierać równolegle jedynie określoną liczbę notyfikacji (tzn. throttling). Wówczas czas opóźnienia nie wpływa na czas przetwarzania. Z czasu tego wyłączone jest również przetwarzanie po stronie banku oraz ogranizacji kartowej.
  • "payMethod.type" oznacza typ metody płatności użytej do opłacenia zamówienia. "PBL" oznacza przelew online lub przelew tradycyjny, "CARD_TOKEN" płatność kartą (w tym Masterpass i Visa Checkout), a "INSTALLMENTS" płatność poprzez PayU|Raty.

Przykład dla zamówienia anulowanego:

{ 
   "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" 
   } 
}       
            

3.2 Status zwrotu

Przykład powiadomienia wysyłanego przez PayU do sklepu:

                {
                   "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"
                   }
                }
            
W powiadomieniu można otrzymać dwa statusy zwrotu:
  • FINALIZED - zwrot został dokonany pomyślnie,
  • CANCELED - zwrot został anulowany.

4 Zwroty

4.1 Tworzenie zwrotu

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

Zwrot pełny:

                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

Zwrot częściowy

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.

Kody błędów tworzenia zwrotów

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.

4.2 Pobieranie danych o zwrotach

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"
                    }
                }
                
            

Kody błędów autoryzacji zwrotów

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.

5 Anulowanie

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.

Przykład odpowiedzi po anulowaniu zamówienia z użyciem API

{ 
   "orderId":"71S3CTJJXV140325GUEST000P01", 
   "extOrderId":"your_order_id"
   "status":{  
      "statusCode":"SUCCESS"
   }
}
            

6 Odebranie zamówienia

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ć status WAITING_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 na COMPLETED.

Przykład odebrania zamówienia z użyciem API

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

Przykład odpowiedzi z serwera po udanej zmianie statusu zamówienia

{
      "status": {
           "statusCode": "SUCCESS",
           "statusDesc": "Status was updated"
      }
}
            

7 Pobieranie danych zamówienia i transakcji

Można pobrać dane sklepu, zamówień i transakcji (płatności) używając poniższych żądań.

7.1 Pobranie danych zamówienia

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.

7.2 Pobranie danych transakcji

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.

Przykład odpowiedzi po pobraniu informacji o transakcji pay-by-linkiem:
{  
   "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.

7.3 Pobieranie danych sklepu

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}

Przykład żądania pobrania danych sklepu

                    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'
                    
                

Przykład odpowiedzi po pobraniu danych sklepu

                    {
                        "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.

8 Transparentna integracja

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.

Transparentne zamówienie

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.

Na przykład:
                    {
                        "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}"
}
                

8.1 Pobranie metod płatności

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'.

.
Przykładowe żądanie (produkcja):
curl -X GET https://secure.payu.com/api/v2_1/paymethods \
   -H "Authorization: Bearer 87ad751f-7ea5-4023-a16f-04b6647a07f5" 
   -H "Cache-Control: no-cache" 
                
Przykładowe żądanie (sandbox):
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
      }
   ]
}          
            

payByLinks

payByLinks to metody płatności, które zawsze wymagają przekierowania poza stronę sklepu.
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'.

8.2 Obowiązki informacyjne

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:

  1. na stronie płatniczej PayU (w przypadku płatności kartą poprzez stronę PayU oraz usług PayU | Raty i PayU | Płacę później)
  2. na stronie pośredniej, wyświetlanej przed przekierowaniem do banku (w przypadku szybkiego przelewu lub przelewu tradycyjnego)

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:

  1. informacja dotycząca zlecenia realizacji płatności powinna zostać wyświetlona tylko w przypadku jeśli strona jest przeznaczona dla użytkowników z Polski. Jeśli przyjmujesz płatności na stronie skierowanej do użytkowników z innych krajów i w innej wersji językowej (np. angielskiej, czeskiej, niemieckiej, węgierskiej itd.), nie ma obowiązku wyświetlania takich informacji. Natomiast zawsze należy pokazać informacje dotyczące przetwarzania danych osobowych.
  2. W przypadku informacji o przetwarzaniu danych osobowych, sugerujemy aby pokazać tylko pierwszy z akapitów, a drugi wyświetlić po wykonaniu akcji przez użytkownika (np. kliknięciu w napis "czytaj więcej").
  3. Powyższe informacje są dostępne w poniższych wersjach językowych.

Informacje o PayU

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

8.3 Formatka kartowa

Istnieje kilka wariantów akceptacji kart płatniczych poprzez system PayU.

Formularz hostowany przez 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:

  1. na podstawie parametru lang dodanego do query string w "redirectUri", np. "&lang=en",
  2. na podstawie pola language w obiekcie Buyer. Zob. więcej o obiekcie Buyer,
  3. na podstawie języka przeglądarki,
  4. a jeśli żaden z powyższych języków nie jest wspierany, użyta będzie wersja angielska. Lista dostępnych języków jest tutaj.

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"
                            }
                        }
                    }
                

Własny formularz

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"
                            }
                        }
                    }
                

Dane kartowe w postaci tekstowej

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.

9 Referencje

9.1 Uwierzytelnienie użytkownika API

OAuth

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&amp;client_id=145227&amp;client_secret=12f071174cb7eb79d4aac5bc2f07563f&amp;email=<customerEmail>&amp;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.
email 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"
                             }
                         ]
                    }'
                

9.2 Podpisywanie parametrów formularza

Dla zapewnienia integralności danych, parametry zamówienia są podpisywane w polu OpenPayu-Signature. Struktura pola:
signature=...;algorithm=...;sender=...
Kolejność składowych nie jest istotna.
Znaczenie poszczególnych składowych:
  • signature - zawiera podpis wygenerowany zgodnie z algorytmem w postaci lowercase,
  • algorithm - określa funkcję skrótu wykorzystaną do wygenerowania podpisu,
  • sender - identyfikator POSa.
Element formularza zawierający przykładowy podpis:
<input name="OpenPayu-Signature" value="sender=145227;algorithm=SHA-256;signature=565f9f4dda43c8e24ccab4472133d680e2aa58e1f58bea845c4cf2926965144d">

Dopuszczalne funkcje skrótu

Parametr algorithm może przyjmować poniższe wartości:

  • SHA-256,
  • SHA-384,
  • SHA-512.

Algorytm generowania podpisu parametrów formularza

  1. Posortuj wszystkie pola formularza alfabetycznie według nazw parametrów (atrybut name elementu input) w porządku rosnącym.
  2. Dokonaj konkatenacji kluczy i wartości wszystkich pól formularza zgodnie z wcześniej wyznaczonym porządkiem (klucz=wartość), rozdzielając je znakiem ampersand &. 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.
  3. Do tak powstałego ciągu znaków dodaj swój klucz prywatny (widoczny w Panelu Managera jako Drugi klucz (MD5)).
  4. Użyj jednej z dopuszczalnych funkcji skrótu na tak powstałym ciągu znaków.
  5. Uzupełnij pole 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.

Pseudokod algorytmu generowania podpisu parametrów formularza

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.

Podpis przykładowego formularza

Przykładowe wartości formularza do podpisu:
                    <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">                
Posortowanie wszystkich pól formularza alfabetycznie według nazw parametrów oraz dokonanie konkatenacji kluczy i wartości wszystkich pól formularza zgodnie z wcześniej wyznaczonym porządkiem (klucz=wartość), rozdzielając je znakiem ampersand & z dodanym na końcu swoim kluczem prywatnym (widocznym w Panelu Managera jako Drugi klucz (MD5)):
continueUrl=http%3A%2F%2Fshop.url%2Fcontinue&currencyCode=PLN&customerIp=123.123.123.123&description=Opis+zam%C3%B3wienia&merchantPosId=145227&notifyUrl=http%3A%2F%2Fshop.url%2Fnotify&products[0].name=Produkt+1&products[0].quantity=1&products[0].unitPrice=1000&totalAmount=1000&13a980d4f851f3d9a1cfc792fb1f5e50
Powyższa wartość jest użyta do podpisu za pomocą funkcji skrótu SHA-256:
565f9f4dda43c8e24ccab4472133d680e2aa58e1f58bea845c4cf2926965144d                
Element formularza zawierający wygenerowany podpis:
<input name="OpenPayu-Signature" value="sender=145227;algorithm=SHA-256;signature=565f9f4dda43c8e24ccab4472133d680e2aa58e1f58bea845c4cf2926965144d">

W przypadku pytań prosimy o kontakt.

9.3 Weryfikacja podpisu notyfikacji

Przykładowy nagłówek:

OpenPayu-Signature: 
                sender=checkout;
                signature=c33a38d89fb60f873c039fcec3a14743;
                algorithm=MD5;
                content=DOCUMENT

Postępuj według następujących instrukcji:

  1. Należy pobrać nagłówek OpenPayu-Signature z notyfikacji przychodzącej z serwera PayU
  2. Wyizolować wartość signature z nagłówka OpenPayu-Signature:
    string incoming_signature = signature_header[signature]
  3. Sprawdzić rodzaj funkcji haszującej, którą się posłużono do wygenerowania podpisu (najczęściej md5)
  4. Dokonać połączenia treści odebranej notyfikacji oraz wartości drugiego klucza (second_key):
    string concatenated = JSONnotification + second_key;
  5. Wyznaczyć oczekiwaną wartość podpisu poprzez zastosowanie wykorzystanej funkcji haszującej(np. md5) na uzyskanym łańcuchu znaków:
    string expected_signature = md5(concatenated)
  6. Dokonać porównania łańcuchów: expected_signature oraz incoming_signature:
     if(expected_signature == incoming_signature){
         return true; //podpis jest prawidłowy
     }else{
         return 'Wrong signature' // podpis nie jest prawidłowy
     }
                        

9.4 Parametry komunikatów JSON

Poniżej znajdują się opisy pól w komunikatach wchodzących w skład REST API.

Parametry do wykorzystania w komunikacie OrderCreateRequest

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ść:
  • FIRST - płatność zainicjowana przez posiadacza karty, który zgodził się na jej zapisanie, w celu przyszłego użycia. Możesz spodziewać się pełnego uwierzytelnienia (3D Secure i/lub CVV). Jeżeli, przy przyszłych płatnościach, chcesz skorzystać z wielorazowego tokenu (TOKC_) pierwsza transakcja musi zakończyć się pomyślnie. Domyślna wartość przy jednorazowym tokenie (TOK_).

    W przypadku płatności danymi kartowymi parametr firstTransactionId powinien być przesłany w sekcji payMethods.payMethod.card dla transakcji oznaczonych jako STANDARD, STANDARD_CARDHOLDER i STANDARD_MERCHANT;
  • STANDARD_CARDHOLDER – płatność zapisaną kartą zainicjowana przez posiadacza karty. W tym przypadku wykorzystuje się token wielorazowego użytku (TOKC_). W zależności od parametrów transakcji (np. wysoka kwota) możesz oczekiwać silnego uwierzytelnienia (3D Secure i/lub CVV).
    Domyślna wartość przy wielorazowym tokenie (TOKC_);
  • STANDARD_MERCHANT – płatność zapisaną kartą zainicjowana przez sprzedawcę bez udziału posiadacza karty. W tym przypadku wykorzystuje się token wielorazowego użytku (TOKC_). Ten typ transakcji nie wymaga silnego uwierzytelnienia. Transakcja tego typu nie może być przeprowadzona jeżeli pierwsza transakcja (FIRST) nie została zakończona pomyślnie.
Nie może być użyty razem z parametrem 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:.
  • FIRST - płatność zainicjowana przez posiadacza karty, który zgodził się na jej zapisanie w celu przyszłego użycia. Możesz oczekiwać pełnego uwierzytelnienia (3D Secure i/lub CVV). Jeżeli, przy przyszłych płatnościach, chcesz skorzystać z wielorazowego tokenu (TOKC_) pierwsza transakcja musi zakończyć się pomyślnie.
  • STANDARD - każda kolejna płatność cykliczna (użytkownik nie jest obecny przy transakcji). W tym przypadku wykorzystuje się token wielorazowego użytku (TOKC_). Transakcja tego typu nie może być przeprowadzona jeżeli pierwsza transakcja (FIRST) nie została zakończona pomyślnie.
Nie może być użyty razem z parametrem cardOnFile. Sugerowane jest wysłanie również obiektu recurring w sekcji dot. 3DS.
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ą:
Ponadto:
  • możliwe schematy to http i https,
  • elementy takie jak port, ścieżka, zapytanie, fragment są opcjonalne,
  • wartości zapytania muszą być zakodowane (URL encoded).
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

OrderCreateResponse - opis pól komunikatu

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>.

Powiadomienia - opis pól komunikatu

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:
  • "WAITING_FOR_CONFIRMATION" i "COMPLETED" - zawiera jeden element posiadający dwa parametry: name i value,
  • "PENDING" - może zawierać obiekt z wcześniej wspomnianymi parametrami bądź być pusta.
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).

OrderStatusUpdateRequest - opis pól komunikatu

Parametr Opis Wymagany
orderId Identyfikator zamówienia w systemie PayU Tak
orderStatus Nowy status zamówienia. Możliwa wartość: COMPLETED Tak

OrderStatusUpdateResponse - opis pól komunikatu

Parametr Opis
status Obiekt typu status odpowiedzi.
Opis pól sekcji <status>.

RefundCreateRequest - opis pól komunikatu

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

RefundCreateResponse - opis pól komunikatu

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

OrderCancelRequest - opis pól komunikatu

Parametr Opis Wymagany
orderId Identyfikator zamówienia dla którego będzie realizowany zwrot Tak

OrderCancelResponse - opis pól komunikatu

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>.

OrderRetrieveRequest - opis pól komunikatu

Parametr Opis Wymagany
orderId Identyfikator zamówienia dla którego będzie realizowany zwrot Tak

OrderRetrieveResponse - opis pól komunikatu

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:
  • "WAITING_FOR_CONFIRMATION" i "COMPLETED" - zawiera jeden element posiadający dwa parametry: name i value,
  • "PENDING" - może zawierać obiekt z wcześniej wspomnianymi parametrami bądź być pusta.
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).

TransactionRetrieveRequest

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 - for PBL

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:
  • AUT_ERROR_NO_AUTHORIZATION - nie otrzymano autoryzacji, transakcja została anulowana.
  • AUT_ERROR_ANTIFRAUD_DECLINED - transakcja odrzucona na etapie autoryzacji przez system antyfraudowy.
  • REG_ERROR_ANTIFRAUD_DECLINED - transakcja odrzucona na etapie rejestracji przez system antyfraudowy.

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.

TransactionRetrieveResponse - for cards

Parametr Opis
payMethod.value Wybrana metoda płatności
paymentFlow Możliwe wartości:
  • CARD - płatność kartą na stronie płatniczej PayU,
  • MASTERPASS, VISA_CHECKOUT, APPLE_PAY, GOOGLE_PAY, GOOGLE_PAY_TOKENIZED - płatność kartą pobraną ze stosownej zewnętrznej usługi (przy czym dla Apple Pay i GOOGLE_PAY_TOKENIZED karta została stokenizowana przez Visa/MasterCard, tj. pole cardNumberMasked nie zawiera prawdziwego numeru karty),
  • ONE_CLICK_CARD - płatność kartą zapisaną w PayU,
  • ONE_CLICK_CARD_RECURRING - płatność cykliczna kartą zapisaną w PayU,
  • FIRST_ONE_CLICK_CARD - płatność zapisująca kartę w PayU.
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:
  • AUT_ERROR_NO_AUTHORIZATION - nie otrzymano autoryzacji, transakcja została anulowana.
  • AUT_ERROR_ANTIFRAUD_DECLINED - transakcja odrzucona na etapie autoryzacji przez system antyfraudowy.
  • REG_ERROR_ANTIFRAUD_DECLINED - transakcja odrzucona na etapie rejestracji przez system antyfraudowy.
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.

Sekcje wspólne

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> w OrderCreateRequest

Rekord Opis Wymagany w obrębie sekcji
type Typ metody płatności, możliwe wartości:
  • PBL (płatność wymaga przekierowania)
  • CARD_TOKEN
  • PAYMENT_WALL (płatność wymaga przekierowania)
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

Opis pól obiektu typu <payMethod> w notyfikacji

Rekord Opis
type Typ metody płatności, możliwe wartości:
  • PBL (płatność wymaga przekierowania)
  • CARD_TOKEN
  • PAYMENT_WALL (płatność wymaga przekierowania)
amount Kwota płatności. Nie jest gwarantowane, że to pole się pojawi w notyfikacji.

<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
email 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:

  • YES,
  • NO,
  • MANDATE.
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:
  • PURCHASE,
  • ACC_FUNDING,
  • QUASI-CASH,
  • LOAN.
Nie
shipIndicator Wskazuje na metodę dostawy, wybraną dla danej transakcji. Możliwe wartości:
  • BILLING_ADDRESS,
  • VERIFIED_ADDRESS,
  • OTHER_ADDRESS,
  • SHIP_TO_STORE,
  • DIGITAL_GOODS,
  • TICKETS,
  • NOT_SHIPPED.
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:
  • ELECTRONIC,
  • SAME_DAY,
  • OVERNIGHT,
  • TWO_OR_MORE_DAYS.
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 cyklicznymi (np. 7 w przypadku obciążenia co tydzień). Zgodnie z rekomendacją organizacji płatniczych, w przypadku cyklu o zmiennej częstotliwości, należy użyć wartości "1". Nie
expiry Data, po której płatności nie będą już wykonywane w formacie ISO, np. "2025-03-27T10:57:59.000+01:00". Zgodnie z rekomendacją organizacji płatniczychW przypadku braku takiej daty (np. subskrypcja ważna do odwołania), należy użyć wartości "9999-12-31T00:00:00Z". 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:
  • THIS_TRANSACTION,
  • LESS_THAN_30_DAYS,
  • 30_TO_60_DAYS,
  • MORE_THAN_60_DAYS.
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:
  • THIS_TRANSACTION,
  • LESS_THAN_30_DAYS,
  • 30_TO_60_DAYS,
  • MORE_THAN_60_DAYS.
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_CHANGE,
  • THIS_TRANSACTION,
  • LESS_THAN_30_DAYS,
  • 30_TO_60_DAYS,
  • MORE_THAN_60_DAYS.
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:
  • GUEST,
  • LOGIN,
  • FEDERATED_ID,
  • THIRD_PARTY,
  • ISSUER,
  • FIDO.
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:
  • THIS_TRANSACTION,
  • LESS_THAN_30_DAYS,
  • 30_TO_60_DAYS,
  • MORE_THAN_60_DAYS.
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:
  • COURIER
  • COLLECTION_POINT_PICKUP
  • PARCEL_LOCKER
  • STORE_PICKUP
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ść
email 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

9.5 Parametry formularza

Poniższa tabela przedstawia wszystkie wymagane i opcjonalne parametry, które mogą być użyte w formularzu zamówienia.

Parametry ogólne

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

Adresy URL

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:

Ponadto:
  • możliwe schematy to http i https,
  • elementy takie jak port, ścieżka, zapytanie, fragment są opcjonalne,
  • wartości zapytania muszą być zakodowane (URL encoded).
notifyUrl Nie Adres URL, na który przychodzić będą powiadomienia o zmianie statusu zamówienia lub zwrotu.

Kupujący

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.

Adres do wysyłki

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.

Produkty

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"

9.6 Kody statusów

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.

Kody statusu
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.

9.7 Statusy dla kart

Lista statusów transakcji kartowych odsyłana przez PayU, kody 3-D Secure.
Statusy transakcji kartowych:
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.
S65 S65 - Exceeds withdrawal frequency limit. Bank Próba przekroczenia limitu (po stronie banku). 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.
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.
132 132 - Issuer will never approve PayU Karta rozpoznana jako niedozwolona dla tej transakcji. Brak autoryzacji. Przepraszamy, wydawca Twojej karty odmawia realizacji transakcji wykonywanych tą kartą. Nie próbuj płatności tą kartą ponownie. 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, 998, 999 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.

Kody odpowiedzi ECI (Electronic Commerce Indicator):
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.
Transakcje są chronione przed oszustwami związanymi z mechanizmem chargeback przy kodach ECI:
  • 1 i 2 przy kartach Mastercard,
  • 5 i 6 przy kartach Visa.
Dodatkowo są one również uzupełniane poniższymi statusami 3DS.

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.
I 3DS2 Status informacyjny (wydawca karty zaakceptował wyjątek od silnego uwierzytelnienia).
A0 3DS Błąd po stronie organizacji kartowej.

9.8 Bezpieczeństwo

Checklista bezpieczeństwa integracji z PayU:
  1. Komunikacja powinna odbywać się szyfrowanym kanałem po protokole HTTPS przy użyciu zweryfikowanego i zaufanego certyfikatu.
  2. Komunikaty operacyjne na POS powinny być podpisane funkcją skrotu np. SHA256, jeśli podpisy są wymagane dla danej operacji: restapi.html#references_form_signature
  3. Adres na który wysyłane są statusy powiadomień z PayU powinien komunikować się szyfrowanym kanałem HTTPS.
  4. Przy odbiorze powiadomień merchant powinien zawsze weryfikować wiarygodność odebranego powiadomienia poprzez sprawdzenie podpisów wiadomości. restapi.html#references_verification_of_notifications_signature
  5. Merchant nigdy nie powinien publicznie udostępniać swoich kluczy MD5 dla POS. Jeśli dojdzie do sytuacji udostepnienia kluczy md5 do POS incydentalnie lub poprzez kradzież, merchant powinien niezwłocznie skontaktować się z BOK PayU.
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.

9.9 Wytyczne

PayU może, i będzie rozszerzać istniejące komunikaty API o nowe pola, oraz samo API o nowe metody. W celu poprawnej integracji należy uwzględnić taką ewentualność.