Secure Elements
Rozszerzenie PayU API
Pobieranie konfiguracji Click to Pay
Aby skorzystać z Click to Pay w aplikacji Secure Elements, najpierw zweryfikuj dostępność tej metody oraz pobierz jej konfigurację dla swojego POS-a. W tym celu wywołaj metodę pobierania instrumentów płatniczych, rozszerzając zapytanie o dodatkowy parametr features z wartością clickToPay.
- Produkcja
- Sandbox
curl -X GET https://secure.payu.com/api/v2_1/paymethods?features=clickToPay \
-H "Authorization: Bearer 87ad751f-7ea5-4023-a16f-04b6647a07f5"
-H "Cache-Control: no-cache"
curl -X GET https://secure.snd.payu.com/api/v2_1/paymethods?features=clickToPay \
-H "Authorization: Bearer 87ad751f-7ea5-4023-a16f-04b6647a07f5"
-H "Cache-Control: no-cache"
W odpowiedzi w tablicy payByLinks w obiekcie z tokenami kartowymi ("value"="c") otrzymasz dodatkowy obiekt clickToPay zawierający wszystkie niezbędne dane do skonfigurowania Click to Pay w aplikacji Secure Elements.
{
"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,
"features": {
"clickToPay": {
"clickToPayBrandImageUrl": "https://static.payu.com/images/mobile/logos/pbl_cpt_on.png",
"mastercard": {
"status": "ENABLED",
"dpaId": "mddctp12"
},
"visa": {
"dpaId": "visctp01",
"acquirerBIN": "123456",
"acquirerMerchantId": "MERCH01",
"status": "ENABLED"
}
}
}
}]
}
Rozszerzenie zamówienia
Aby utworzyć zamówienie z już wybraną metodą płatności, musisz dodać do standardowego zamówienia sekcję payMethods. Opis obiektu payMethods możesz znaleźć w naszej referencji API w sekcji Create an Order.
Użycie danych karty
W obiekcie payMethod powinieneś przekazać token zwrócony przez aplikację Secure Elements po zakończeniu procesu. Token ten powinien być przekazany w polu value obiektu payMethod, a pole type powinno mieć wartość CARD_TOKEN.
{
"payMethods": {
"payMethod": {
"type": "CARD_TOKEN",
"value": "TOKD_1LOQUV5MMRNX70i7UXXXXXXXXX"
}
}
}
Użycie karty z Click to Pay
W obiekcie payMethod przekaż dane zwrócone przez aplikację Secure Elements po zakończeniu procesu. W zależności od organizacji płatniczej karty uzupełnij odpowiednie pola w obiekcie clickToPay:
- dla kart Visa Click to Pay wymagane jest pole
srcCorrelationId, - dla kart Mastercard Click to Pay wymagane są pola
srcCorrelationIdorazsrcDigitalCardId.
- Karta Visa
- Karta Mastercard
{
"payMethods": {
"payMethod": {
"type": "PBL",
"value": "c",
"clickToPay" : {
"visa": {
"srcCorrelationId": "123e4567-e89b-12d3-a456-426614174000"
}
}
}
}
}
{
"payMethods": {
"payMethod": {
"type": "PBL",
"value": "c",
"clickToPay" : {
"mastercard": {
"srcCorrelationId": "123e4567-e89b-12d3-a456-426614174000",
"srcDigitalCardId": "DCID-111"
}
}
}
}
}
Szczegółowe informacje na temat parametrów znajdziesz w sekcji Create an Order w naszej referencji API.
JavaScript SDK
PayU udostępnia JS SDK z biblioteką JavaScript działającą po stronie przeglądarki. Biblioteka ta zawiera metody i obiekty, które mogą pomóc w integracji niektórych rozwiązań oferowanych przez PayU, np. Secure Elements. Możesz też wypróbować sklep demonstracyjny Click to Pay Secure Elements, w którym przetestujesz integrację na własnych danych POS i skonfigurujesz niestandardowe style.
Formularz demonstracyjny Click to Pay Secure Elements
Formularz demonstracyjny to narzędzie działające w przeglądarce, które pomaga zrozumieć, przetestować i skonfigurować Click to Pay Secure Elements przed wdrożeniem go w Twoim procesie zakupowym.
Nie musisz instalować tego narzędzia w swoim sklepie. Nie zastępuje ono integracji opisanej w tym przewodniku.
Co możesz przetestować
Sklep demonstracyjny umożliwia:
- podgląd Secure Elements w przykładowym procesie zakupowym;
- dostosowanie wyglądu Click to Pay Secure Elements do wyglądu i stylu Twojego procesu zakupowego oraz marki;
- przetestowanie logowania Click to Pay i rozpoznawania zaufanego urządzenia;
- wyświetlenie i wybór kart zapisanych w portfelu Click to Pay;
- wybór zapisanej karty Click to Pay lub wprowadzenie nowej karty;
- przetestowanie standardowej tokenizacji karty, gdy Click to Pay nie jest używane;
- obserwację danych zwracanych przez komponent Secure Elements w zdarzeniu
completedlub w przypadku niepowodzenia.
Konfigurator stylów
Skorzystaj z wizualnego konfiguratora, aby dostosować wygląd komponentu bez konieczności ręcznego przygotowywania całej konfiguracji stylów. Możesz zmienić obsługiwane właściwości, takie jak typografia, kolory, przyciski, pola input, obramowania i zaokrąglenie rogów.
Konfigurator generuje obiekt JSON z konfiguracją dostosowania. Otwórz zakładkę JSON Code, aby przejrzeć lub edytować ten obiekt i skopiować go do wykorzystania jako opcja customization w Twojej integracji Secure Elements.
Wymagana konfiguracja
Możesz otworzyć demo z domyślną konfiguracją, aby zobaczyć podstawowe doświadczenie kupującego.
Aby przetestować demo z własną konfiguracją PayU:
- Wybierz środowisko Sandbox lub Produkcja.
- Otwórz zakładkę Konfiguracja i wprowadź swój POS ID.
- Opcjonalnie wprowadź adres e-mail kupującego.
- Wprowadź nazwę DPA Click to Pay oraz wymagane wartości konfiguracyjne dla Visa lub Mastercard.
- Wybierz Apply changes, aby przeładować Secure Elements z nową konfiguracją.
- Demo nie akceptuje danych uwierzytelniających OAuth ani nie pobiera konfiguracji Click to Pay z PayU. Uzyskaj wymaganą konfigurację w ramach procesu integracji opisanego w tym przewodniku i wprowadź odpowiednie wartości w demo.
- Do testów integracyjnych używaj danych uwierzytelniających Sandbox oraz odpowiednich danych testowych. Testy na produkcji wymagają konfiguracji PayU z włączoną produkcją oraz ważnego portfela Click to Pay.
- Twój punkt płatności musi mieć aktywne płatności kartą oraz dostępne Click to Pay. Jeśli Click to Pay jest niedostępne dla danej organizacji płatniczej, jej konfiguracja nie zostanie zwrócona i nie będzie można przetestować tej organizacji.
- Jeśli adres e-mail kupującego zostanie pominięty, kupujący może go wprowadzić podczas logowania Click to Pay. Jeśli nie zostanie podana prawidłowa konfiguracja Click to Pay, Secure Elements wyświetli standardowy formularz karty.
Przykład użycia
- Podgląd
- HTML
- CSS
- JavaScript
<script
type="text/javascript"
src="https://merch-prod.snd.payu.com/javascript/sdk"
></script>
<section class="container" id="secureElementsApp"></section>
.container {
background-color: #ffffff;
width: 450px;
margin: 20px auto;
border: 3px solid #666666;
padding: 20px;
display: block;
border-radius: 5px;
box-sizing: border-box;
}
let se;
document.addEventListener("DOMContentLoaded", function() {
se = SecureElements({dev: true});
se.render('#secureElementsApp', {
configuration: {
elements: ['cards'],
posId: '1234',
buyer: {
email: 'test@payu.com'
},
clickToPay: {
dpaName: 'Test DPA',
mastercard: {
dpaId: 'jI8iGo86'
},
visa: {
dpaId: 'jI8iGo86',
acquirerBIN: '498707',
acquirerMerchantId: 'jI8iGo86'
}
}
},
customization: {
lang: 'pl'
}
});
se.on('ready', () => {
// Tutaj możesz uruchomić dowolną logikę po załadowaniu aplikacji.
});
se.on('completed', (result) => {
// Tutaj możesz wywołać dowolne akcje po zakończeniu procesu płatności.
});
});
- Produkcja
- Sandbox
<script type="text/javascript" src="https://secure.payu.com/javascript/sdk"></script>
<script type="text/javascript" src="https://secure.snd.payu.com/javascript/sdk"></script>
SecureElements, gdy protokół strony, na której wczytywane jest JS SDK, nie jest protokołem https ani file, a strona nie jest ładowana z localhost: 127.0.0.1 lub 0.0.0.0. Podczas prac wdrożeniowych można włączyć tryb deweloperski w parametrze options.- Przykład
const secureElements = SecureElements();
querySelectorAll.selector lub jest on pusty.selector nie jest typu string.appendChild lub jest to element typu input).configuration lub jest nieprawidłowego typu.elements lub jest nieprawidłowego typu.posId lub jest nieprawidłowego typu.- Przykład
secureElements.render('#secureElementsApp', {
configuration: {
elements: ['cards'],
posId: '482413',
clickToPay: {
dpaName: "Sandbox Test",
mastercard: {
dpaId: 'jI8iGo86'
},
visa: {
dpaId: 'jI8iGo86',
acquirerBIN: "498707",
acquirerMerchantId: 'jI8iGo86'
}
},
buyer: {
email: 'test-email@test-domain.com'
}
},
customization: {
lang: 'pl',
},
});
| Możliwe wartości | |
|---|---|
| ready | Wyemitowane, gdy aplikacja zostanie wyświetlona. |
| completed | Wyemitowane, gdy płatnik zakończy proces w aplikacji. |
eventcallback nie jest funkcją.- Przykład
secureElements
.on('ready', function () {
// aplikacja gotowa
})
.on('completed', function (body) {
// płatnik zakończył proces w aplikacji
})
Opcje
Opcje metody render.
Konfiguracja
Wszystkie parametry są sprawdzane pod kątem odpowiedniego typu oraz czy zawierają poprawne wartości. W przypadku nieznanego lub niepoprawnego parametru opcjonalnego jest on ignorowany, a informacje o tym zostaną zalogowane do konsoli przeglądarki na poziomie warn.
Dozwolone wartości:
cards.Musi być ciągiem znaków zawierającym wyłącznie cyfry.
W przypadku braku tych danych, funkcjonalność Click to Pay nie będzie dostępna.
W poniższym przykładzie użyto testowych danych ze środowiska Sandbox.
- Przykład
{
elements: ['cards'],
posId: '482413',
clickToPay: {
dpaName: "Sandbox Test",
mastercard: {
dpaId: 'jI8iGo86'
},
visa: {
dpaId: 'jI8iGo86',
acquirerBIN: "498707",
acquirerMerchantId: 'jI8iGo86'
}
},
buyer: {
email: 'test-email@test-domain.com'
}
}
recognitionToken wyniku zdarzenia completed po wcześniejszej płatności.Przekaż go, aby Click to Pay rozpoznał urządzenie płatnika – dzięki temu płatnik może skorzystać z zapisanych kart bez ponownego potwierdzania tożsamości. Odczytaj token z pliku cookie, w którym go zapisano, zgodnie z opisem w sekcji Przechowywanie tokena rozpoznawania. Jeśli token nie zostanie przekazany, aplikacja użyje tokena z własnego pliku cookie, o ile jest dostępny. Ponieważ przeglądarki mogą blokować takie pliki cookie, zalecamy jawne przekazywanie tokena.
Dostosowanie
Wszystkie parametry są sprawdzane pod kątem odpowiedniego typu oraz czy zawierają poprawne wartości. W przypadku nieznanego lub niepoprawnego parametru jest on ignorowany, a informacje o tym zostaną zalogowane do konsoli przeglądarki na poziomie warn.
en, pl, bg, cs, da, de, el, es, et, fi, fr, hr, hu, it, lt, lv, nl, pt, ro, ru, sk, sl, sr, sv, tr, uk. W przypadku braku języka pobierany jest on z przeglądarki. W przypadku nieobsługiwanego języka używany jest en.- Przykład
{
lang: 'pl',
options: {
enableCardFormFieldsAutoJump: false
},
styles: {
body: {
margin: '10px'
}
}
}
true.true.false.false.Maksymalna długość: 150 znaków. Dozwolone znaki:
0-9a-z-\s,"'Maksymalna długość: 150 znaków. Dozwolone znaki:
-_ a-zA-Z0-9Musi być poprawnym adresem URL.
Wartość jedna z:
"collection", "embedded-opentype", "opentype", "svg", "truetype", "woff", "woff2"Wartość jedna z:
"normal", "italic", "oblique"Wartość jedna z:
"normal", "bold", "lighter", "bolder", "inherit", "initial", "unset", 100, 200, 300, 400, 500, 600, 700, 800, 900Wartość jedna z:
"normal", "condensed", "expanded", "ultra-condensed", "extra-condensed", "semi-condensed", "semi-expanded", "extra-expanded", "ultra-expanded"Musi być poprawną definicją zakresu Unicode i pasować do:
U+([0-9a-f?]{1,6}|[0-9a-f]{1,6}-[0-9a-f]{1,6})(,U+([0-9a-f?]{1,6}|[0-9a-f]{1,6}-[0-9a-f]{1,6}))*Wszystkie właściwości z:
MarginStylesDopasowanie do wzorca:
(\d{1,4}(.\d+)?|.\d+)(px|em|rem|%)Dopasowanie do wzorca:
#([0-9a-f]3|[0-9a-f]4|[0-9a-f]6|[0-9a-f]8)Przykłady:
#FFF, #abcdef, #AAA8, #88888810Wartość jedna z:
"normal", "bold", "lighter", "bolder", "inherit", "initial", "unset", 100, 200, 300, 400, 500, 600, 700, 800, 900Zawiera wszystkie właściwości z:
MarginStyles, PaddingStyles, BorderStyles, FontStyles, BackgroundStyles, ShadowStyles, OutlineStylesZawiera wszystkie właściwości z:
MarginStyles, PaddingStyles, BorderStyles, FontStyles, BackgroundStyles, OutlineStylesZawiera wszystkie właściwości z:
MarginStyles, PaddingStyles, BorderStyles, FontStyles, BackgroundStyles, OutlineStyles oraz:Zawiera wszystkie właściwości z:
MarginStyles, PaddingStyles, FontStyles, OutlineStyles oraz:Zawiera wszystkie właściwości z:
MarginStyles, PaddingStyles, FontStyles, OutlineStyles oraz:Zawiera wszystkie właściwości z:
MarginStyles, PaddingStyles, BorderStyles, FontStyles, OutlineStyles.Wartość jedna z:
"dotted", "dashed", "solid"Maksymalna długość: 150 znaków. Dozwolone znaki:
0-9a-z-\s,"'Wartość jedna z:
"none", "underline", "overline", "line-through"Wartość jedna z:
"left", "right", "center", "justify", "start", "end"Zdarzenia
Aplikacja emituje zdarzenia, do których można dołączyć własną funkcję zwrotną za pomocą metody on.
| Pole | Opis |
|---|---|
type | Typ odpowiedzi:
|
details | Obiekt zawierający szczegółowe dane odpowiedzi. |
details| Pole | Opis | Tylko dla |
|---|---|---|
brand | Rodzaj wybranej karty: visa lub mastercard. | |
panLastFour | Ostatnie 4 znaki numeru karty. | |
panExpirationMonth | Miesiąc daty ważności karty | |
panExpirationYear | Rok daty ważności karty | |
token | Token kartowy. Użyj tego tokena do wykonania płatności. | cardToken |
artUri | Parametr opcjonalny. Zawiera adres url do obrazka karty. | clickToPay |
srcDigitalCardId | Identyfikator karty w Click to Pay. Użyj tego identyfikatora do wykonania płatności. | clickToPay |
srcCorrelationId | Identyfikator transakcji w Click to Pay. Użyj tego identyfikatora do wykonania płatności. | clickToPay |
recognitionToken | Parametr opcjonalny. Token rozpoznawania urządzenia płatnika w Click to Pay. Zwracany tylko wtedy, gdy płatnik zaznaczył opcję Zapamiętaj mnie (Remember Me) podczas potwierdzania tożsamości w Click to Pay. Zapisz go w pliku cookie własnej domeny (first-party) w przeglądarce płatnika i przekaż w parametrze konfiguracyjnym clickToPay.recognitionToken podczas kolejnej płatności. Szczegóły znajdziesz w sekcji Przechowywanie tokena rozpoznawania. | clickToPay |
Poniższy przykład zawiera testowe dane.
- Użycie wprowadzonej karty
- Użycie karty z Click to Pay
{
"type": "cardToken",
"details": {
"brand": "visa",
"panLastFour": "1111",
"panExpirationMonth": "02",
"panExpirationYear": "2029",
"token": "TOKD_1LOQUV5MMRNX70i7UXXXXXXXXX"
}
}
{
"type": "clickToPay",
"details": {
"brand":"mastercard",
"panLastFour":"8785",
"panExpirationMonth":"12",
"panExpirationYear":"2029",
"srcDigitalCardId":"XXXXXXXXXOGsrGz0lFDMMA000000000000US",
"srcCorrelationId":"4f723be7.e0c2a619-d2bb-7590-89bc-e632e06b59cd",
"artUri":"https://sbx.assets.mastercard.com/card-art/combined-image-asset/HIGH-MASK-3x.png",
"recognitionToken":"eyJraWQiOiIyMDIzMDYxNC...XXXXXXXXXX"
}
}
Przechowywanie tokena rozpoznawania
Token rozpoznawania zwracany w zdarzeniu completed identyfikuje urządzenie płatnika, a nie jego konto w Twoim systemie. Nie przechowuj go wyłącznie w swojej bazie danych powiązanego z kontem płatnika – wtedy urządzenie nie zostanie rozpoznane, gdy płatnik zapłaci bez logowania (jako gość). Zamiast tego zapisz token w pliku cookie własnej domeny (first-party) w przeglądarce płatnika.
Zgodnie z zaleceniami Mastercard ustaw plik cookie z następującymi atrybutami:
- maksymalny czas życia 180 dni,
Secure,HttpOnly– jeśli plik cookie jest ustawiany przez Twój serwer,SameSite=Strict,- wartość: token rozpoznawania (JWT) w niezmienionej postaci.
Podczas kolejnej płatności odczytaj token z pliku cookie i przekaż go w parametrze konfiguracyjnym clickToPay.recognitionToken. Jeśli plik cookie ma atrybut HttpOnly, odczytaj go na serwerze i umieść jego wartość w konfiguracji strony renderującej Secure Elements. Za każdym razem, gdy zdarzenie completed zwróci nowy token, nadpisz nim plik cookie.
Odpowiadasz za bezpieczeństwo przechowywanego tokena. Traktuj go jak dane wrażliwe i nigdy nie przekazuj go w parametrach adresu URL.