Стандартний еквайринг та оплата в додатку

Стандартний еквайринг та оплата в додатку

Загальний опис

Інтернет-еквайринг NovaPay – зручне та безпечне рішення для приймання онлайн-платежів.

Інтегруйте наш платіжний сервіс на своєму сайті або в мобільному застосунку та приймайте оплату через:

  • банківські картки,

  • Google/Apple Pay

  • або додаток NovaPay.


Інтеграція інтернет-еквайрингу NovaPay

Крок 1: Підключення інтернет-еквайрингу NovaPay та отримання Merchant ID

Залишіть заявку на сайті та дочекайтесь дзвінка менеджера NovaPay або дзвоніть 📞 за номером 0 800 30 49 49.

image-20250320-072138.png

Merchant ID

Після реєстрації контрагенту присвоюється унікальний ідентифікатор Merchant ID. Він використовується для ідентифікації контрагента та ініціації сесії оплати.


Крок 2: Вибір способів оплати та налаштування їх у адмінпанелі

Контрагенти можуть обирати один або обидва способи оплати:

  • стандартний еквайринг (оплата через сайт контрагента);

  • оплата через додаток NovaPay (оплата в мобільному додатку).

Активовані способи оплати визначають доступні варіанти для платника та налаштовуються в кабінеті мерчанта (див. нижче).

Для кожного мерчанта створюється окремий термінал, пов’язаний із сервісом еквайрингу NovaPay. Терміналу присвоюється Merchant ID та додається ключ доступу для захищеного обміну даними між NovaPay та контрагентом.

Для проведення платежів контрагент використовує свій Merchant ID та пару криптографічних ключів (приватний і публічний), що дозволяє формувати підпис (x-sign) для кожного запиту. Ключі генеруються контрагентом самостійно в адміністративній панелі еквайрингу (детальніше: https://nova-pay.atlassian.net/wiki/external/MmVkYjljZGJmZjM4NDA4Mjk4NzYxYTdkNWJmNDVkNDk). Обмін інформацією між NovaPay та контрагентом здійснюється за допомогою двостороннього шифрування, що гарантує безпеку платежів та захист даних платника.

Важливо

  • Обрані способи оплати автоматично відображатимуться платнику на сайті контрагента.

  • Якщо активовано обидва способи, платник зможе самостійно вибрати зручний варіант.

image-20241226-134156.png

 

Спосіб оплати

Опис способу

Приклад вигляду з ПК

Приклад вигляду з мобільного телефону

Спосіб оплати

Опис способу

Приклад вигляду з ПК

Приклад вигляду з мобільного телефону

Оплата через стандартний еквайринг

Платник може оплатити замовлення через:

  • Google Pay / Apple Pay

  • Ручне введення реквізитів картки

Контрагент надсилає запит до NovaPay, а система повертає посилання на фрейм оплати. Фрейм може відкриватися як окрема сторінка або вбудовуватися в сайт контрагента.

image-20250317-105600.png
image-20250317-105920.png

Оплата через додаток NovaPay

Платник здійснює оплату в мобільному застосунку NovaPay.

  • Якщо платник оформлює замовлення на мобільному телефоні, система автоматично перенаправить його в застосунок NovaPay.

  • Якщо платник оформлює замовлення на ПК, відкриється фрейм із QR-кодом, який потрібно відсканувати для переходу в NovaPay.

image-20241008-074642.png
image-20241008-122746.png

Обидва способи оплати

Платник може вибрати:

  • Оплату через Google Pay / Apple Pay або введення карткових реквізитів.

  • Оплату через мобільний додаток NovaPay.

image-20241226-172007.png
image-20241226-173051.png

Крок 3: API інтеграція

Протестувати API запити можна за посиланням: https://novapay.readme.io/reference

Автентифікація

Цей API використовує формат JSON для отримання тіла запитів і передачі відповідей.

API використовує підписи RSA (передаються в заголовку x-sign) для перевірки походження запиту. Підпис створюється на основі тіла запиту, шифрується у форматі base64 і перевіряється аналогічним чином. Для отримання доступу до API зв’яжіться з нашою службою підтримки, надавши свій відкритий ключ RSA.

Генерація підписів

Алгоритм створення підпису — SHA-256

Ключі

Merchant ID

merchant_id = надається NovaPay при реєстрації

echo -n '{ "merchant_id": 1, "client_first_name": "Іванов", "client_last_name": "Іван", "client_phone": "+380982850654" }' | openssl dgst -sha1 -sign key.pem | openssl enc -base64
-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEA7YQwYDqNbDIbUXZL2HYvZX6wi59DgsMlYjwpoSgHvn0RTnWl /uR2sIJ9tquYh5Ya+TtUhzrc0N6mZPTLUuyK4qKq2NJaG2Xdr2M5LhMjF46llWkD qMW/CcMdVTTE4b1FxOOXURNmZ7nWCchuiVU9nm0K5qYAQpPJFzwg9uDljYgcMp3N 9L1WaiyzIqJqL4R9L39j2t4yOUb4m44xyjujGViHm5lQBNklkOcsxMlb0T3AVNcA +KckSl32TdvvmSx9BwzK4SDqQAR8MtKA4hbeA3KGCflRlJKv5KcCpPOOzaoUlaTN OLmJIhl0/VjpsKqLNMQOyRSkpRVCFhgp6sO/ewIDAQABAoIBAEBaqbTZCIqBRQ+c as56rzrjybf67hLXByEHxgvJSdfeETtd+x0GD/ahVKiS8+AA1swivDNrynq5aQI/ pXuRZcwkYQAgdpOn1Rn5W3vVaZOvbcP+0SQAeFOPzznP82xqmSXQuKYaCIwgORMr gG+rbeeoCeUWo0lmu3yVKSVbKDdhXQqQB0EiC1rZoEKr9iKOAS5Hvi7pU/bxpH3a xEGh8ov8E89UtubiIL+LhqsN5dVgowWiaPbA945z497VgjAu+/I2jQ6HhuyPNhK1 SMa0LExXN5xmzF3WJ8ofVMS/hJbLYWgidfUi+MYCgm3W1YtpnNFBKDiDa83cEWqo r5/GJYECgYEA9w9yXkAsUe3c3Qw1lGSZJNzSlbwCKA4wMaiLhsZWfyLrkzzQnY+t tu+5Tfa3EU3bLof3juwSBSVwYcb3ZJWGeVURYQwO3ZirZQ3xxEQTI5FTCuJRPMsf 8oiq6NxgZrK3NdtmtecH6+IvrO/J3UPKc8a+iop3zR2tTU4rs2jAbMECgYEA9hxV yAGXZavNHfrqIn9NCZLySaYrMKSZj36xCcksHK7do77OmsqAp8wQuxYIPoABNO/8 bd2ry33b8Zd3dv5iRI3GMmmrxQ7yDviKeUptKKBZsm9CWEcGnmNOia+ZyJbRl9Fp jnrtUNOCQxwz144eTAKLV2JUD6Kgfr1ee1EDbzsCgYEA7Q0zLV/hppLWUno+hq2n i4kdvXHxl8FVWLBhf+WaZM56voGhoSyU/2wwnq/Uo5PSdGkdjVLRT4LGu+qOwUH/ DzgiPr21HcY43fNtQGYY/w2XYmAYln5HnwynAFtDXAaqZ9CmUm7kWN5j5EkHpXhA LqpJdOC7ZmHNQNl6cOBXkYECgYA7Qi9VbSyrCmblJRljHQvLllpIaX5UxA1Fg9fU 5197uI8dckAE/WVlAbm1kmSByAiCWpaJTaqj4LYowbO+LxoyL4DdepwlYqfd+vI8 qjMGaTWvxSJQZyms0XSDqoh4x/fHemDUMb0ajRL8XboN2OZqnuI2NDLRYPMMEUTC pIsTKQKBgGqbsr+cn+Ny2cPO8KCx1y6WWrT2X5k286rjAMGxNNG/aNqejpTixAaJ dA8rov0FcJ03MOhw69XYxkVGpLqWhtMjiWSYuHJBSspvp0QcD9nQykXDLfO7FeeA p8WexL0FZSkNlkMbcpMI6U0g51cwacZeGA3qXoKWzWfz2Brmom90 -----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw1FeLVQlCYMnxVMPwhHA AYik6KGfYz0GJW0SP4dBs6XQ2Ap2kP0X3K5WtJNnPehiWf7jJz9XH2Xh/17t37kZ KXGEdWYtPUAWQItLGSIwmPMau+YBFFvLD8OReFhFXc6sjReSPJSFV8KDtOP7By9u +KxYqZTVqPxCeYXHOzT7vtDJBJDLbe0pJ3B3wRihMEuHP54X4zqEAi/vbqArhHDD O07FZpQ3PA/Fkgj8jMTUxU3LxmIIkNIuLz+Ze/PxL88qvRkRoHd73agYSs5bVdCg urGUs2hGFQap4KiyR0TRtaJujM715y1gjVFN7Khkkol/dJaHRqxUaZv3dlL+RMXG /wIDAQAB -----END PUBLIC KEY-----

Створення платіжної сесії | Create session

Мерчант створює платіжну сесію, передаючи необхідні дані про замовлення.

Метод POST

URL ендпоінту https://api-qecom.novapay.ua/v1/session

Параметри запиту

Параметр

Тип

Обов’язковий

Опис

Параметр

Тип

Обов’язковий

Опис

merchant_id

string

✅ Так

ID мерчанта, від імені якого створюється сесія.

client_first_name

string

❌ Ні

Ім’я клієнта.

client_last_name

string

❌ Ні

Прізвище клієнта.

client_patronymic

string

❌ Ні

По батькові клієнта.

client_phone

string

✅ Так

Номер телефону з кодом країни (наприклад, +380982850620).

client_email

string

❌ Ні

Email клієнта.

callback_url

string

✅ Так

URL для POST-запиту після оплати з інформацією про сесію.

success_url

string

❌ Ні

URL для переходу клієнта після успішної оплати.

fail_url

string

❌ Ні

URL для переходу клієнта після невдалої оплати.

success_redirect_timeout

int32

❌ Ні

Час у секундах, після якого клієнт буде автоматично перенаправлений на success_url.

metadata

json

❌ Ні

Додаткові дані, які будуть повернені у postback-запитах.

{ "merchant_id": "1", "client_first_name": "Иван", "client_last_name": "Иванов", "client_patronymic": "Иванович", "client_phone": "+380982850620", "client_email": "email@gmail.com", "callback_url": "https://example.com" }
{ "id": "c090b5b0-4f24-4804-ba6f-4d85d795cd3a", "metadata": null }

Параметр

Тип

Обов’язковий

Опис

Параметр

Тип

Обов’язковий

Опис

id

string

✅ Так

Унікальний ідентифікатор новоствореної сесії.

metadata

object

❌ Ні

Додаткові метадані сесії.


Додавання інформації про замовлення та отримання посилання на оплату | Add payment

Метод POST

URL ендпоінту https://api-qecom.novapay.ua/v1/payment

Параметри запиту

Параметр

Тип

Обов’язковий

Опис

Параметр

Тип

Обов’язковий

Опис

merchant_id

string

✅ Так

ID мерчанта, від імені якого створюється платіж.

session_id

string

✅ Так

Унікальний ідентифікатор платіжної сесії.

amount

float

✅ Так

Сума платежу.

external_id

string

❌ Ні

ID замовлення в системі мерчанта (для реєстрів).

use_hold

boolean

❌ Ні

Двоетапна оплата (холд і підтвердження). За замовчуванням false. Обов’язково true, якщо використовується delivery.

identifier

string

❌ Ні

Ідентифікатор отримувача платежу (ЄДРПОУ), якщо відрізняється від мерчанта.

delivery

object

❌ Ні

Об’єкт із даними про доставку посилки.

volume_weight

float

✅ Так

Об’ємна вага посилки.

weight

float

✅ Так

Фізична вага посилки.

recipient_city

string

✅ Так

Ref міста одержувача.

recipient_warehouse

string

✅ Так

Ref складу одержувача.

products

array of objects

❌ Ні

Список товарів у замовленні.

description

string

✅ Так

Опис товару. За замовчуванням T-shirt.

count

int32

✅ Так

Кількість товару. За замовчуванням 1.

price

float

✅ Так

Ціна товару. За замовчуванням 100.25.

Після цього платник бачить frame NovaPay та проводить оплату.

{ "merchant_id": "1", "session_id": "e982ebb2-b2ee-461b-bba5-4fc1e2a947c9", "amount": 100.25, "external_id": "f364d3c7-af2c-4174-a336-fc5c9160671c", "use_hold": false, "identifier": "31316718" }
{ "id": "120190794544", "url": "https://qecom.novapay.ua/external/pay?sid=c090b5b0-4f24-4804-ba6f-4d85d795cd3a" }

Параметри відповіді

Параметр

Тип

Обов’язковий

Опис

Параметр

Тип

Обов’язковий

Опис

id

string

✅ Так

Унікальний ідентифікатор операції додавання товарів.

url

string

✅ Так

Посилання на сторінку оплати замовлення для користувача.


Отримання статусу платежу | Postback

Після оплати NovaPay надсилає postback на callback_url, вказаний при створенні сесії.

Для еквайрингу передбачено один сценарій отримання postback – після оплати.

{ "id":"403cd18d-3af9-41443-795ba6cf29d4", "status":"holded", "paytype": "card", "terminal_name": "NE0031", "RRN": "123456789101", "created_at":"2022-11-17T12:33:50.875+00:00", "metadata":{ "order_id":"17189" }, "client_first_name":"Максим", "client_last_name":"Кумедний", "client_patronymic":"Максимович", "client_phone":"+380501112233", "external_id":"57-10578", "pan":"123456xxxx1234", "processing_result":"Successful", "amount":185, "delivery": { "recipient_city":"db5c8911-391c-11dd-90d9-001a92567626", "recipient_warehouse":"4f0184d3-8c45-11e9-898c-005056b24375" }, "products":[ { "count":1, "price":185, "description":"Мило Super" } ], "delivery_amount":"", "delivery_status_code":"", "delivery_status_text":"" }

Параметри, що містить postback після оплати:

Параметр

Тип

Обов’язковий

Опис

Параметр

Тип

Обов’язковий

Опис

id

string

✅ Так

Унікальний ідентифікатор платежу.

status

string

✅ Так

Статус платежу (paid, holded тощо).

paytype

string

✅ Так

Тип оплати (card, cash_on_delivery, applepay тощо).

terminal_name

string

❌ Ні

Назва терміналу, через який проведено оплату.

RRN

string

❌ Ні

Референсний номер транзакції.

created_at

string (ISO8601)

✅ Так

Дата та час створення платежу (UTC).

metadata

object

❌ Ні

Додаткові мета-дані сесії.

order_id

string

❌ Ні

ID замовлення в системі мерчанта.

client_first_name

string

✅ Так

Ім’я клієнта.

client_last_name

string

✅ Так

Прізвище клієнта.

client_patronymic

string

❌ Ні

По батькові клієнта.

client_phone

string

✅ Так

Номер телефону клієнта.

external_id

string | null

❌ Ні

Зовнішній ідентифікатор замовлення.

pan

string

❌ Ні

Маскований номер картки клієнта.

processing_result

string

✅ Так

Результат обробки платежу (Successful, Failed тощо).

amount

float

✅ Так

Сума платежу.

delivery

object

❌ Ні

Інформація про доставку.

recipient_city

string

In NovaPay We Trust