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: 'EUR',
serverUrl: 'https://myshop.pl/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: 'EUR'
}
}).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.

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: 'EUR',
serverUrl: 'https://myshop.pl/payment/notify',
products: [
{
name: "Xiaomi fan",
price: 199.99,
quantity: 2
}
],
payer: {
id: '10000123',
firstName: 'John',
middleName: '',
lastName: 'Doe',
phone: '+123456789',
email: 'john.doe@mail.com',
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: 'EUR'
}
})
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

If no language value is specified in the initialization request for the payment widget, the widget defaults to English.

Request example:

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

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: "EUR",
}
})

List of customizable UI components in the payment widget:

ParameterDescriptionDefault value
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/С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 valid
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.
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
redirectRequiredButtonButton in the embedded payment widget to initiate 3DS verificationProceed with 3DS Verification
entityNameLabelRecipient nameName:
businessRegLabelBusiness registration number/Entrepreneur tax IDBusiness ID/Tax ID:
ibanLabelIBANIBAN:
merchantInfoBtnInformation about the payment recipientInformation about the recipients
temporaryUnavailableIssue with displaying recipient dataTemporary unavailable