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ć aplikację demonstracyjną Secure Elements, w której przetestujesz integrację na własnych danych POS i skonfigurujesz niestandardowe style.
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'
}
}
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. 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 karty. 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 |
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"
}
}