Skip to main content

Advanced usage

Incorporating order IDs in requests

If the orderId parameter is not passed during the payment widget initialization, a new widget session will be created with an automatically generated order ID. To use your custom order ID in the widget initialization request, ensure you pass the desired value using the orderId parameter. This also allows you to display an existing payment if a widget session with that specific orderId has been created previously.

Example of widget initialization with the passing of an order ID:

<script>
const widget = PaymentWidget.init({
apiKey: 'YOUR_API_KEY',
mode: 'popup',
payment: {
type: 'hold',
orderId: '1002289582',
description: 'Payment #1002289582',
amount: 1.99,
currency: 'UAH',
serverUrl: 'https://myshop.ua/payment/notify'
}
});
</script>

Event handling

To handle events triggered by the payment widget, it is necessary to register a callback feature. This can be achieved by incorporating a call to the on(eventName, callback) method within the widget initialization code, specifying the event name and the corresponding callback function.

Example of widget initialization with the registration of a function for event processing:

<script>
PaymentWidget.init({
apiKey: 'YOUR_API_KEY',
mode: 'popup',
payment: {
type: 'hold',
amount: 1.99,
currency: 'UAH'
}
}).on('widget.ready', function(data){
// ready
}).on('widget.error', function(data){
// error
}).on('payment.success', function(data){
// success
}).on('payment.failed', function(data){
// failed
});
</script>

The payment widget supports the following events:

Event NameDescription
widget.readyPayment widget has been successfully initiated
widget.errorAn error occurred during the initialization of the payment widget
payment.successPayment has been successfully completed
payment.failedPayment has failed

Passing information on products

You can include a list of products in the payment widget initialization request, and these products will be incorporated into the corresponding payment. Please note that, at present, the product list is not visible on the payment widget.

caution

For taxation purposes when using PRRO, it is mandatory to include information about products in the request.

Transmitting data on payer

Some payment gateways may necessitate the inclusion of extra details about the payer. You can include this additional information in the payment widget initialization request.

Example of initializing a payment widget with product details, payer information, and handling all events:

<script>
const widget = PaymentWidget.init({
apiKey: 'YOUR_API_KEY',
mode: 'embedded',
selector: '#widget',
payment: {
type: 'hold',
orderId: '1002289582',
description: 'Payment #1002289582',
amount: 399.98,
currency: 'UAH',
serverUrl: 'https://myshop.ua/payment/notify',
products: [
{
name: "Xiaomi fan",
price: 199.99,
quantity: 2
}
],
payer: {
id: '10000123',
firstName: 'John',
middleName: '',
lastName: 'Doe',
phone: '+123456789',
email: '[email protected]',
birthDate: '1990-01-01',
billingAddress: {
line1: '',
line2: '',
city: 'LA',
country: 'US',
state: 'CA',
postalCode: '90001'
}
}
}
});
widget
.on('widget.ready', function(data){})
.on('widget.error', function(data){})
.on('payment.success', function(data){})
.on('payment.failed', function(data){});
</script>

Configurable payment widget closure

The payment widget can be programmatically closed in response to specific events. This feature enables you to either respond to callbacks received (e.g., transaction failures) or initiate closure proactively at your request.

Request example (the widget will be closed upon receiving a callback indicating a failed transaction):

</script>
const widget = PaymentWidget.init({
apiKey: 'YOUR_API_KEY',
mode: 'popup',
payment: {
type: 'hold',
amount: 1.99,
currency: 'UAH'
}
})
widget.on('payment.failed', function(data){
// failed
widget.close()
});
</script>

Locales

The payment widget can be displayed in various languages, and you have the flexibility to set custom values for any parameter shown to the payer.

The languages for the payment widget are configured using the locale parameter.

Supported locales include:

Parameter valueLanguage
enEnglish
ukUkrainian
ruRussian

If no language values are specified in the initialization request for the payment widget, the default language used will be determined by the payer's browser settings, as indicated by the browser's fingerprint. If the browser language is set to uk or ru, the widget will display in Ukrainian. For all other languages, it will default to English.

Request example:

PaymentWidget.init({
apiKey: "test_E3PALDNAQ11OV9D0141MKB3I9RJRJDR2MJPP",
mode: "embedded",
selector: '#widget',
locale: 'en',
payment: {
type: "pay",
amount: 2.99,
currency: "UAH",
}
})

To customize the parameters of the payment widget, use the localization object.

Request example:

PaymentWidget.init({
apiKey: "test_E3PALDNAQ11OV9D0141MKB3I9RJRJDR2MJPP",
mode: "embedded",
selector: '#widget',
locale: 'en',
localization: {
"en": {
"submit": "Donate",
},
"fr": {
...
},
},
payment: {
type: "pay",
amount: 2.99,
currency: "UAH",
}
})

List of customizable UI components in the payment widget:

ParameterDescriptionDefault value ENDefault value UKDefault value RU
chooseAnotherSection to pay using a cardor enter card detailsабо введіть дані карткиили введите данные карты
orderNumOrder numberOrder No.ЗамовленняНомер заказа
optionalOptional field indicatorOptionalОпціональноопционально
cardNumberInput field for the card numberCard numberНомер картиНомер карты
cardExpDateInput field for the card expiration dateCard expiryТермін дії карткиСрок действия
cvvInput field for card verification value/codeCVV2/СVC2CVV2/СVC2CVV2/СVC2
submitPayment button for the card optionPayСплатитиОплатить
errorCardNumberFieldError message for the card number fieldCard number is not validНомер картки недійснийНомер карты недействителен
errorExpDateFieldError message for the card expiration date fieldExpiration date is not validДата закінчення терміну дії картки недійснаДата истечения срока карты недействительна
errorCvvFieldError message for the card verification value/code fieldCVV is not validCVV недійснийCVV недействителен
errorRequiredFieldError message for a mandatory fieldRequired fieldОбов'язкове полеОбязательное поле
successPaymentNotification of successful paymentYour payment is successful!Ваш платіж успішний!Ваш платеж успешный!
failedPaymentNotification of failed paymentYour payment is unsuccessful!Ваш платіж неуспішний!Платёж не отправлен
paymentIsNotCompletedNotification when payment is in processProcessing paymentОпрацьовуємо платіжОбрабатываем платёж
pendingExpiredNotification for transactions lacking a confirmed final statusIf funds have already been withdrawn from your card, please wait up to 5 minutes for payment confirmation.Якщо кошти вже були списані з картки, будь ласка, зачекайте до 5 хвилин для отримання фінального статусу платежу.Если средства уже были списаны с карты, пожалуйста, подождите до 5 минут, чтобы получить окончательный статус платежа.
waitButton to request the current status of transactionsWaitЗачекатиПодождать
redirectRequiredTitleNotification in the embedded payment widget advising customers to undergo 3DS verificationClick to Open 3DS Verification WindowНатисніть, щоб відкрити вікно підтвердження 3DSНажмите, чтобы открыть окно подтверждения 3DS
redirectRequiredButtonButton in the embedded payment widget to initiate 3DS verificationProceed with 3DS VerificationПродовжити з перевіркою 3DSПродолжить с проверкой 3DS