УКР | [ENG](https://hackmd.io/83UDlVHPRf2CxEBCi6ECBg) ![](https://i.imgur.com/ULmPUgP.jpg) # Оплата картою Server-Server :::info [TOC] ::: ## Що таке "оплата картою Server-Server"? Це прийом оплати картою від клієнта на сайті Партнера без переходу клієнта на платіжну сторінку Оператора. Клієнт вводить реквізити карти безпосередньо на сторінці Партнера. :::warning Для проведення оплат методом Server-Server Партнеру необхідно мати підтверджений сертифікат [PCI DSS](https://uk.wikipedia.org/wiki/PCI_DSS) (Payment Card Industry Data Security Standard) відповідного рівня, в залежності від кількості операцій на рік. ::: ## Автентифікація відправника платежу У процесі виконання платежу проводиться автентифікація відправника за допомогою технології [3DSecure 2.0](https://uk.wikipedia.org/wiki/3-D_Secure). Якщо карта відправника не підтримує технологію 3DSecure, то аутентифікація виконується за допомогою AV-транзакції на нульову суму. Для цього Партнеру віддається код HTML сторінки в кодуванні base64, яку необхідно вивести на сайті: - **для карт, що підтримують технологію 3DSecure** - віддається код HTML сторінки з автоматичним перенаправленням на сервер ACS банку емітента (Access Control Server), де відображається поле для введення одноразового паролю (тобто коду підтвердження, який для кожної операції призначає емітент картки). - **для карт, що не підтримують технологію 3DSecure** - віддається код HTML сторінки з полем для введення одноразового паролю (тобто перевірочного коду, вказаного в полі призначення при списанні на нульову суму). :::success <details> <summary>Приклад "3dsHtml"</summary> <br> ~~~md { "Code": 102, "Message": "needACS", "Data": { "3dsHtml": "PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKCSJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgo8aHRtbD4KPGJvZHkgb25sb2FkPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWNzJykuc3VibWl0KCkiPgo8Zm9ybSBpZD0iYWNzIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iaHR0cHM6Ly8zZHMuc2VydmVyL3Byb2Nlc3MvMGEyZGU5Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUGFSZXEiIHZhbHVlPSJlSnhWVDBFVFlqUDhDMVVoVFpRPT0iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJNRCIgdmFsdWU9IjI2ODY2Ij4KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iVGVybVVybCIgdmFsdWU9Imh0dHBzOi8vcmV0dXJuLnhwYXkudWEvQVl6dnZ4LzMwNzIvMzY2Ij4KPC9mb3JtPgo8L2JvZHk+CjwvaHRtbD4=", "LongPollerID": "63453891", "OperationID": 63453891, "OperationStatus": 2 }, "KeyAES": "", "Sign": "" } ~~~ </details> ::: ## Як працює оплата картою Server-Server 1. Клієнт оформляє покупку та заповнює реквізити картки на сайті Партнера. 2. Партнер формує запит Оператору (наприклад, [[10102] "Карта-гаманець"](https://hackmd.io/jxzgAy4nSt-Q-6chgRCZdQ)), в якому передає номер картки, термін дії та CVV, а також решту параметрів відповідно до технічної документації. 3. Оператор обробляє запит та повертає результат. ## Структура "BrowserData" Для проведення платежу за допомогою технології *3DSecure версії 2.0* опціонально передаються параметри браузера відправника платежу (за відсутності - Оператор отримує їх самостійно): | Параметр | Обов'яз-ковість | Тип | Опис | Приклад | |:----:|:----:|:----:|----|:----:| |`device`|Ні|Структура| Структура, що передає дані про тип каналу інтерфейсу, де поле `channel` може мати значення: </br> `APP` – канал мобільного додатку, </br> `BRW` - канал Web-додатку. </br> Для каналу `3RI` підготовка до 3DS не виконується.|`BRW`| |`browserIP`|Ні / </br> Так - для запитів [10101], [10102]|Рядок|IP-адреса відправника.|`146.120.244.242`| |`browserTZ`|Ні|Ціле|Різниця у часі в порівнянні з UTC, у хвилинах.|`180`| |`browserLanguage`|Ні|Рядок|Мова інтерфейсу. Максимальна довжина - 8 символів.|`UA`| |`browserUserAgent`|Ні|Рядок|Значення заголовка “User-Agent”. Максимальна довжина - 2048 символів. |`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36`| |`browserColorDepth`|Ні|Ціле|Код розрядності кольору дисплея. Можливі значення: `1`, `4`, `8`, `15`, `16`, `24`, `32`, `48`.|`24`| |`browserJavaEnabled`|Ні|Булевий|Дозвіл використання у браузері Java. Можливі значення: `true`/`false`. |`false`| |`browserScreenWidth`|Ні|Ціле|Роздільна здатність екрана - ширина.|`1920`| |`browserScreenHeight`|Ні|Ціле|Роздільна здатність екрану - висота.|`1080`| |`fraudhuntFingerprint`|Ні|Рядок|[Цифровий відбиток браузера](https://uk.wikipedia.org/wiki/%D0%A6%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B8%D0%B9_%D0%B2%D1%96%D0%B4%D0%B1%D0%B8%D1%82%D0%BE%D0%BA_%D0%BF%D1%80%D0%B8%D1%81%D1%82%D1%80%D0%BE%D1%8E).|`kHqPGWS1Mj18sZFsP8Wl`| |`challengeWindowSize`|Ні|Ціле|Код розміру вікна при взаємодії із клієнтом у рамках "challenge". Можливі значення: `01`, `02`, `03`, `04`.|`01`| :::success <details> <summary>Приклад структури "BrowserData"</summary> <br> ~~~md { "BrowserData": { "device": { "channel": "BRW" }, "browserIP": "146.120.244.242", "browserTZ": 180, "browserLanguage": "ru-RU", "browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36", "browserColorDepth": 24, "browserJavaEnabled": false, "browserScreenWidth": 1920, "browserScreenHeight": 1080, "fraudhuntFingerprint": "kHqPGWS1Mj18sZFsP8Wl" } } ~~~ </details> ::: ## Редирект клієнта на сторінку CallbackURL Після проведення операції відбувається перенаправлення клієнта на сторінку результатів оплати **"CallbackURL"** (якщо параметр переданий у запиті), наприклад: ``` "CallbackURL": "https://partner.host/resul_page" ``` ## Отримання статусу транзакції на URL адреси "SuccessCallback/FailedCallback" Завершальним етапом виконання операції є отримання статусу транзакції на відповідні URL адреси Партнера - **“SuccessCallback”** або **“FailedCallback”** (якщо параметри передані у запиті), наприклад: ``` “SuccessCallback”: “https://partner.host/cb_success” або “FailedCallback”: “https://partner.host/cb_fail” ``` При формуванні даних URL адрес додаються параметри `state` та `xrayOperationID`: | Параметр | Обов’яз-ковість | Тип | Опис | Приклад | |:-:|:-:|:-:|-|:-:| |`state`|Ні|Ціле|Статус обробки операції, згідно таблиці “[Статус обробки операції](https://hackmd.io/aBE7H5cfQ-iqaN3SnwaQ-w#%D0%A1%D1%82%D0%B0%D1%82%D1%83%D1%81-%D0%BE%D0%B1%D1%80%D0%BE%D0%B1%D0%BA%D0%B8-%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D1%96%D1%97-%E2%80%9COperationStatus%E2%80%9D)”. |`10` - успішне списання, </br> `21` - помилка проведення операції.| |`xrayOperationID`|Ні|Рядок|Унікальний ідентифікатор операції у системі Оператора.|`245786`| :::success <details> <summary>Приклад URL адреси "Успішне списання коштів"</summary> <br> ~~~md https://partner.host/cb_success?state=10&xrayOperationID=245786 ~~~ </details> ::: :::success <details> <summary>Приклад URL адреси "Помилка проведення операції"</summary> <br> ~~~md https://partner.host/cb_fail?state=21&xrayOperationID=245786 ~~~ </details> ::: ## Отримання поточного статусу операції Для отримання поточного статусу транзакції у будь-який момент може застосовуватись запит: [[20003] "Отримання статусу операції"](https://hackmd.io/fvd8btZLQXywluia6w5uxg). ## Тестове списання/зарахування на карту :::info Для тестування операцій списання/зарахування коштів заведено **Тестового Партнера**. Див. деталі у розділі: ["Тестове списання/зарахування на карту"](https://hackmd.io/kGejjgk0QaiwfpoZFnTadA#%D0%A2%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D0%B5-%D1%81%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%BD%D1%8F%D0%B7%D0%B0%D1%80%D0%B0%D1%85%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F-%D0%BD%D0%B0-%D0%BA%D0%B0%D1%80%D1%82%D1%83). ::: ## Пов'язані запити [[10101] Карта-карта](https://hackmd.io/ZpBbYAb4RsaTc8NU_0zwfA) [[10102] Карта-гаманець](https://hackmd.io/jxzgAy4nSt-Q-6chgRCZdQ) [[10103] Карта-IBAN фізична особа](https://hackmd.io/mQFXiO1USRuVX2-ah4h1FQ) [[101031] Карта-IBAN юридична особа](https://hackmd.io/-jgdOWRiRwaabSv5_YjAKQ) [[10150/10051] Карта-телефон-карта](https://hackmd.io/rXZuYXYwQp2W-QffXO99yA) **Оплата по токену** [[104021] Оплата картою по токену](https://hackmd.io/CCEZ0su4T3OBtY-_QBSzew) [[104121] Автосписання з карти по токену (МОТО-операції)](https://hackmd.io/-_Rj-iqZTMy22FxFgUc08w) **Отримання даних карти** [[20400/20410] Отримання даних карти за номером телефону](https://hackmd.io/EjF35e_sSfKad2ojsEoYWQ) [[20404] Отримання даних карти за токеном](https://hackmd.io/Fo0-oeZ4Sz-Gju6Qg01hiA) ## Довідкові матеріали Опис загальних параметрів системи XPAY див. у розділі ["Довідкові матеріали"](https://hackmd.io/aBE7H5cfQ-iqaN3SnwaQ-w): коди типів операцій, типи платіжних методів, коди статусів обробки операцій, відомості та помилки, що повертаються у відповіді та ін. ![](https://i.imgur.com/17gAyWb.png) :arrow_left: [XPAY API Зміст](/Mj2ZqCVpSq6A6Jzm6ladlw) :arrow_left: [XPASS API Зміст](https://hackmd.io/eSq3juGWQLS1wVvJZiTUAQ) :arrow_left: [Загальна інформація по підключенню (API)](https://hackmd.io/g3cItPVFStez0ql3Xj-2TA) <details> <summary>Служба підтримки XPAY</summary> </br> Телефон: +38 093 891 92 00 Email: info@xpay.com.ua Telegram: @xpaysupportbot </details>