Przyjmowanie płatności
W najprostszej wersji przyjęcie płatności polega na wysłaniu żądania utworzenia nowego zamówienia i przekierowaniu kupującego na stronę płatniczą PayU. W tym wariancie zakładamy, że w procesie zakupowym nie pobierasz indywidualnych metod płatności z backendu PayU, a jedynie wyświetlasz ogólną opcję płatności - PayU.
Uwierzytelnienie zamówienia
Zanim utworzysz nowe żądanie płatności, musisz uwierzytelnić się w kontekście wybranego punktu płatności. W tym celu pobierz client_id
i client_secret
przypisane do punktu płatności, na który mają wpłynąć środki po zakończeniu transakcji.
curl -X POST https://secure.snd.payu.com/pl/standard/user/oauth/authorize \
-d 'grant_type=client_credentials' \
-d 'client_id=460718' \
-d 'client_secret=22f4175da9f0f72bcce976dd8bd7504f'
W odpowiedzi otrzymasz token OAuth, służący do uwierzytelnienia przyszłych żądań.
{
"access_token": "3e5cac39-7e38-4139-8fd6-30adc06a61bd",
"token_type": "bearer",
"expires_in": 43199, //czas życia tokena w sekundach
"grant_type": "client_credentials"
}
Jeżeli chcesz dowiedzieć się więcej na temat uwierzytelnienia odwiedź Uwierzytelnianie żądań i sekcję Authorize w naszej referencji API.
Utworzenie nowego zamówienia
Po wygenerowaniu ważnego tokena OAuth możesz utworzyć nową transakcję w PayU, wysyłając żądanie POST z danymi transakcji na endpoint: https://secure.payu.com/api/v2_1/orders
.
Upewnij się, że do żądania dołączone są wszystkie wymagane dane transakcji oraz że jest ono uwierzytelnione za pomocą tokena OAuth. Tylko wtedy transakcja w PayU zostanie pomyślnie utworzona.
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"
}
]
}'
W odpowiedzi do zamówienia otrzymasz szczegółowe informacje na temat transakcji, w tym parametr redirectURI
. Parametr redirectUri
zawiera adres URL strony płatniczej PayU, na który powinieneś przekierować płatnika, aby mógł dokończyć płatność.
{
"status": {
"statusCode": "SUCCESS"
},
"redirectUri": "{adres_url_przekierowania_strony_płatności}",
"orderId": "WZHF5FFDRJ140731GUEST000P01",
"extOrderId": "{YOUR_EXT_ORDER_ID}"
}
Jeżeli chcesz dowiedzieć się więcej na temat tworzenia nowego zamówienia odwiedź sekcję Tworzenie nowego zamówienia i sekcję Create an Order w naszej referencji API.
Po przekierowaniu kupujący zostanie przeniesiony na stronę płatniczą PayU, gdzie będzie mógł wybrać preferowaną metodę płatności. Po zakończeniu transakcji środki zostaną przelane na saldo Twojego sklepu, powiązane z punktem płatności, w którego kontekście uwierzytelniłeś żądanie
Przykład przekierowania na stronę płatniczą PayU
Klikając poniższy przycisk, zasymulujeszzostaniesz przekierowany na stronę płatności PayU, hostowaną na środowisku sandbox.
Szyfrowanie połączenia
Aby móc nawiązać połączenie z serwerami PayU musisz spełniać wymogi dotyczące bezpieczeństwa protokołów komunikacyjnych.
Od 30 czerwca 2018 PayU wspier wyłącznie protokół TLS 1.2.
Zaprzestanie wspierania starszych protokołów jest podyktowane względami bezpieczeństwa. Protokół TLS 1.2 to najlepszy sposób szyfrowania połączenia, zgodny z najwyższym standardem bezpieczeństwa PCI DSS 3.2.
Zmiana dotyczy wszelkiej komunikacji za pomocą HTTPS z systemem PayU i obejmuje wszystkie adresy REST API i Classic API.
Większość dostawców rozwiązań e-commerce oraz firm hostingowych dba o aktualizację oprogramowania, dlatego jeśli Twój serwis działa na gotowej platformie, najprawdopodobniej nie masz się czego obawiać. Możesz skontaktować się z dostawcami usług i zapytać, czy dokonali tej aktualizacji.
Od 09.12.2023 w celu poprawnego nawiązania połączenia TLS z serwerami PayU będzie wymagane rozszerzenie SNI (Server Name Indication).
Rozszerzenie SNI zostało zaproponowane w 2003 roku (rfc3546) i jest obecnie szeroko stosowanym standardem. SNI jest od wielu lat obsługiwane przez przeglądarki internetowe oraz wspierane przez biblioteki wiodących języków programowania.
Jeśli Twój serwis korzysta z dedykowanego rozwiązania, upewnij się, że jest oparte o aktualną wersję protokołu. Poniższe informacje mogą być przydatne.
JAVA
Java 1.5 i wersje niższe nie wspierają TLS 1.2. Dla Javy 1.6, TLS 1.2 nie jest wspierany w publicznych aktualizacjach. Protokół ten jest wspierany w business editions od Oracle java version 6u115 b32
.
W Java 1.7, TLS 1.2 jest wspierany, ale musi być jawnie włączony poprzez wybór protokołu w czasie tworzenia instancji SSLSocket & SSLEngine.
Więcej szczegółów znajdziesz na blogu Oracle.
cURL
Curl wspiera TLS 1.2 od wersji 7.34.0. Poniższe polecenie testuje wersję szyfrowania połączenia.
Test można wykonać dla dowolnego adresu - zob. zestawienie adresów. Jeżeli potrzebujesz pomocy z integracją Classic API (niezalecane), skontaktuj się z naszym działem wsparcia.
curl --tlsv1.2 https://secure.payu.com/api/v2_1/orders
Jeśli połączenie działa, pojawi się komunikat Unauthorized.
cURL+PHP
php -r '$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://secure.payu.com/api/v2_1/orders");
curl_setopt ($ch, CURLOPT_SSLVERSION, 6);
var_dump(curl_exec($ch));
var_dump(curl_error($ch));'
Jeśli połączenie działa, pojawi się komunikat "Unauthorized". TLS 1.1 i TLS 1.2 są wspierane od wersji OpenSSL 1.0.1. Wymuszanie TLS 1.1 i 1.2 jest wspierane dopiero od curl 7.34.0.
To wszystko! Oto podstawy tworzenia transakcji z PayU. Jeśli zależy Ci na uproszczeniu i przyspieszeniu procesu płatności dla klientów oraz chcesz wyświetlać metody płatności bezpośrednio na stronie sklepu, zapoznaj się z sekcją Stwórz własną stronę płatności.
Dodatkowo, udostępniamy pomocne zasoby, które ułatwią integrację z naszym systemem.
Aby poznać szczegóły dotyczące dostępnych walut, języków czy metod płatności, odwiedź stronę Referencje do integracji