Бібліотека віджетів методів оплати
Бібліотека для відображення віджетів методів оплати на вашому сайті
Що таке віджети методів оплати?
Це бібліотека за допомогою якої можливо відобразити віджети оплати:
  • Apple Pay (без прямої інтеграції Apple)
  • PrivatPay
  • QR у кошику на вашому сайті
Як працюють віджети методів оплати?
  1. Сформуйте необхідні параметри згідно документації.
  2. Встановіть один чи декілька віджетів методів оплати на сторінку вашого сайту.
  3. Клієнт сплачує одним з обраних способів Apple Pay, PrivatPay, QR знаходячись на сайті.
  4. По результату - ви отримаєте відповідь від LiqPay про статус платежу.
Інтеграція
  1. Підключити Script:
    <script type="text/javascript" src="https://static.liqpay.ua/elements/customElements.js"></script>
  2. Використати доступні веб-компоненти:
    <lp-provider></lp-provider>,<lp-apple-pay></lp-apple-pay>,<lp-privat24-pay></lp-privat24-pay>,
    <lp-qr></lp-qr>
Необхідні параметри:
ComponentAttributesRequiredDescription
lp-providerRequiredОболонка для інших компонентів (інші компоненти мають використовуватися всередині lp-provider)
lp-dataRequiredJSON рядок з параметрами APIs. Докладніше
lp-signatureRequiredУнікальний підпис кожного запиту. Докладніше
language
Optional
Мова клієнта uk, en
lp-apple-pay
Optional
Кнопка Apple Pay
mode
Optional
black - чорна кнопка за замовчуванням, white - біла кнопка, white-with-line - біла, з чорним ободом
lp-privat24-pay
Optional
Кнопка PrivatPay
mode
Optional
black - чорна кнопка за замовчуванням, white - біла кнопка
lp-qr
Optional
Компонент QR

Необхідні URL для роботи в залежності від обраної моделі:
  • https://www.liqpay.ua/api/request — Server-Server;
  • https://www.liqpay.ua/api/3/checkout — Client-Server;
Для виклику API LiqPay необхідно передати параметри data і signature (Server - Server) POST методом або перенаправити клієнта (Client-Server) використовуючи POST метод, де:
data
- json рядок з параметрами APIs закодована функцією base64, base64_encode( json_string ),
signature
- унікальний підпис кожного запиту base64_encode( sha1( private_key + data + private_key) ),
base64_encode
- повертає рядок, закодований методом base64,
sha1
- повертає хеш у вигляді бінарного рядку з 20 символів.
Формування data і signature, приклад:
Для підключення прийому оплати через LiqPay, формуємо json рядок з параметрами виклику апі, де:
ParameterRequiredTypeDescription
versionRequiredNumberВерсія API. Наприклад: 3
public_keyRequiredStringПублічний ключ - ідентифікатор створеної компанії. Наприклад: i00000000
private_keyRequiredStringПриватний ключ створеної компанії (не надається нікому крім Вашого розробника). Наприклад: a4825234f4bae72a0be04eafe9e8e2bada209255
actionRequiredStringТип операції. Можливі значення: pay - платіж, hold - блокування коштів на рахунку відправника, subscribe - регулярний платіж, paydonate - пожертва, auth - предавторізація картки
amountRequiredNumberСума платежу. Наприклад: 5, 7.34
currencyRequiredStringВалюта платежу. Можливі значення:USD, EUR, UAH. Додаткові валюти можуть бути встановлені за запитом компанії
descriptionRequiredStringПризначення платежу
order_idRequiredStringУнікальний ID покупки у Вашому магазині. Максимальна довжина 255 символів
Приклад створення json_string:
json_string = {"public_key":"i00000000","version":"3","action":"pay","amount":"3","currency":"UAH","description":"test","order_id":"000001"}
Приклад кодування json_string функцією base64_encode, компанія отримує data:
data = eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwIiwidmVyc2lvbiI6IjMiLCJhY3Rpb24iOiJwYXkiLCJhbW91bnQiOiIzIiwiY3VycmVuY3kiOiJVQUgiLCJkZXNjcmlwdGlvbiI6InRlc3QiLCJvcmRlcl9pZCI6IjAwMDAwMSJ9
Приклад формування signature, компанія формує рядок sign_string шляхом конкатенації private_key + data + private_key:
sign_string = a4825234f4bae72a0be04eafe9e8e2bada209255eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwIiwidmVyc2lvbiI6IjMiLCJhY3Rpb24iOiJwYXkiLCJhbW91bnQiOiIzIiwiY3VycmVuY3kiOiJVQUgiLCJkZXNjcmlwdGlvbiI6InRlc3QiLCJvcmRlcl9pZCI6IjAwMDAwMSJ9a4825234f4bae72a0be04eafe9e8e2bada209255
Після застосування функцій base64_encode( sha1( sign_string) ) отримуємо рядок:
signature = wR+UZDC4jjeL/qUOvIsofIWpZh8=
Приклад відправки запиту до LiqPay:
1.Для перенаправлення клієнта на сторінку оплати LiqPay (Client - Server) необхідно сформувати HTML-форму:
<form method="POST" action="https://www.liqpay.ua/api/3/checkout" accept-charset="utf-8">
<input type="hidden" name="data"
value="eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwIiwidmVyc2lvbiI6IjMiLCJhY3Rpb24iOiJwYXkiLCJhbW91bnQiOiIzIiwiY3VycmVuY3kiOiJVQUgiLCJkZXNjcmlwdGlvbiI6InRlc3QiLCJvcmRlcl9pZCI6IjAwMDAwMSJ9"/>
<input type="hidden" name="signature" value="wR+UZDC4jjeL/qUOvIsofIWpZh8="/><input
type="image" src="//static.liqpay.ua/buttons/payUk.png"/></form>
2.Для взаємодії (Server - Server) отримані data і signature необхідно відправити на url https://www.liqpay.ua/api/request:
curl --silent -XPOST https://www.liqpay.ua/api/request --data-
urlencodedata="eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwIiwidmVyc2lvbiI6IjMiLCJhY3Rpb24iOiJwYXkiLCJhbW91bnQiOiIzIiwiY3VycmVuY3kiOiJVQUgiLCJkZXNjcmlwdGlvbiI6InRlc3QiLCJvcmRlcl9pZCI6IjAwMDAwMSJ9"/>
--data-urlencode
signature="wR+UZDC4jjeL/qUOvIsofIWpZh8="
3.Статус операції буде відправлений на server_url
4.Успішне завершення оплати

Схема роботи
LiqPay EN_Widgets
Приклад
Для роботи можливо підключити один чи декілька віджетів
LiqPay widgets_qr
LiqPay widgets_pp
LiqPay widgets_ap
    <!DOCTYPE html>
    <html>
        <head>
            <script type="text/javascript" src="https://static.liqpay.ua/elements/customElements.js"></script>
        </head>
        <body>
            <lp-provider lp-data="your_data" lp-signature="your_signature">
                <lp-qr></lp-qr>
            </lp-provider>
            <lp-provider lp-data="your_data" lp-signature="your_signature">
                <lp-apple-pay mode="black"></lp-apple-pay>
            </lp-provider>
            <lp-provider lp-data="your_data" lp-signature="your_signature">
                <lp-privat24-pay mode="black"></lp-privat24-pay>
            </lp-provider>
            <script>
                const provider = document.querySelector('lp-provider');
                provider.addEventListener('onpaymentsuccess', (customEvent) => { console.log(customEvent); }); //колбек для обробки успішного платежу
                provider.addEventListener('onpaymenterror', (customEvent) => { console.log(customEvent); }); //колбек для обробки помилки
            </script>
        </body>
    </html>