Для взаємодії слід отримати наступні значенння:
URL адреса для запитів - https://api-applepay.ipay.ua
Формат передачі - JSON методом POST
Кодування у UTF-8
Алгоритм підпису (поле sign у запиті):
Потрібно об\'єднати наступні строки в одну: "час запиту" та ключ для підпису (sign_key) і зашифрувати алгоритмом SHA3-512.
Приклад на PHP:
$ sign = hash(\'sha3-512\', \'2017-01-01 00:00:00\' . $ sign_key );
1. Потрібно надати запит до нас на формування CertificateSigningRequest.certSigningRequest в форматі (ecc 256)
2. Згенерувати у appleDev кабінеті PaymentProcessing.cert під мерчанта який вказаний в додатку.
3. Передати нам діючий сертифікат.
Після проведення цих процедур Ви будете отримувати відповідь від Apple, яку потрібно буде попередньо закодувати
в Base64, та передавати нам у полі apple_data в запросі PaymentCreate
{ "paymentData":{ "version":"EC_v1", "data":"gvMXusr6e.....qB5qSlCzNv9Ugy", "signature":"MIAGCSq ..... 0dMx/d80r97Pf1MPxkhAAAAAAA", "header":{ "ephemeralPublicKey":"MFkwEwYH.....SXc10Qt5NVkFjSRq8tk0dDw==", "publicKeyHash":"aVc7v.....qepG4=", "transactionId":"3e80774bbc385ec08a57e02acbf00fc74a3d032be84c42481e2cfc4f4446082b" } }, "paymentMethod":{ "displayName":"Visa 4655", "network":"Visa", "type":"debit" }, "transactionIdentifier":"3E80774BBC385EC08A57E02ACBF00FC74A3D032BE84C42481E2CFC4F4446082B" }Цю відповідь потрібно закодувати у Base64 та передати у полі apple_data в запросі PaymentCreate
Структура запитів відрізняється полями action (назва запиту) та body (тіло запиту).
Поле | Тип | Опис |
---|---|---|
request | object | Об\'єкт запиту |
request.version | string | Версія API |
request.auth | object | Об\'єкт аутентифікації |
request.auth.login | string | ID мерчанта |
request.auth.time | string | Час запиту у часовому поясі Europe/Kiev Формат: YYYY-MM-DD HH:MM:SS Приклад: 2017-01-01 00:00:00 |
request.auth.sign | string | Підпис запиту |
request.action | string | Назва запиту |
request.body | object | Об\'єкт тіла запиту |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00dc94b74a7cfdced473 ..." }, "action": "PaymentCreate", "body": { "msisdn": "380931234567", "invoice": 100, "apple_data": "eyJwYXltZW50RGF0YSI6eyJ2ZXJzaW9uIjoiRUNfdjEiLCJkYXRhIjoiZ3ZNWHVzcjZlWDE3WWFkNTduRmt5UUJoRkxOUUc4WmtSS3BUZlZuak12V0V0K2RmYVpnSUVnWmpJRzV3ODgzUWozbkNNQTBpaWVnSUpFbkNuNkJJakJPZ0dhRlFXSXN2YkNBVXFaUDMrOGF3QWFZRy9oYjFHNm1SOHY1cFlGdFNYOVU3UUVyajVMREFERlJ1Q05ZQlUvOFplc04rZG0vdkUwVDA2VkpydjhJRVR6Zm5BT3JIVDdqZ2hPTEVYVkNHNWN0SlVXL25aZUQrVFN4Y1BoMC93RTdMY3BIRDJQK09waks2dlZVL1A5UlB3cERoSXlQODBvNHNMbDI4L2xZS0gxb1hBZTYzTC8wL1Rrc1YzN0g5cFQ3b2NzOWhPNjFXcGViUDkxemk5VTNZOEdBZGxkZ2U0VG1hbDZTWTJacjNkWXNCbk5WTGt1RkNQNHlqOFd2Yjc4dFN1Z2tLaDFvZ3lGN24wRjNJQ2hZaDJTd0FvbmVRM1dGZWhRbThHaGRQNDZIUU5XbURMdm9KRG8vU0xrOE1EYlFhTytxQjVxU2xDek52OVVneSIsInNpZ25hdHVyZSI6Ik1JQUdDU3FHU0liM0RRRUhBcUNBTUlBQ0FRRXhEekFOQmdsZ2hrZ0JaUU1FQWdFRkFEQ0FCZ2txaGtpRzl3MEJCd0VBQUtDQU1JSUQ0akNDQTRpZ0F3SUJBZ0lJSkVQeXFBYWQ5WGN3Q2dZSUtvWkl6ajBFQXdJd2VqRXVNQ3dHQTFVRUF3d2xRWEJ3YkdVZ1FYQndiR2xqWVhScGIyNGdTVzUwWldkeVlYUnBiMjRnUTBFZ0xTQkhNekVtTUNRR0ExVUVDd3dkUVhCd2JHVWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhreEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUI0WERURTBNRGt5TlRJeU1EWXhNVm9YRFRFNU1Ea3lOREl5TURZeE1Wb3dYekVsTUNNR0ExVUVBd3djWldOakxYTnRjQzFpY205clpYSXRjMmxuYmw5VlF6UXRVRkpQUkRFVU1CSUdBMVVFQ3d3TGFVOVRJRk41YzNSbGJYTXhFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXdoVjM3ZXZXeDdJaGoyamRjSkNoSVkzSHNMMXZMQ2c5aEdDVjJVcjBwVUViZzBJTzJCSHpRSDZETXg4Y1ZNUDM2eklnMXJyVjFPLzBrb21KUG53UEU2T0NBaEV3Z2dJTk1FVUdDQ3NHQVFVRkJ3RUJCRGt3TnpBMUJnZ3JCZ0VGQlFjd0FZWXBhSFIwY0RvdkwyOWpjM0F1WVhCd2JHVXVZMjl0TDI5amMzQXdOQzFoY0hCc1pXRnBZMkV6TURFd0hRWURWUjBPQkJZRUZKUlgyMi9WZElHR2lZbDJMMzVYaFFmbm0xZ2tNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVJL0pKeEUrVDVPOG41c1QyS0d3L29ydjlMa3N3Z2dFZEJnTlZIU0FFZ2dFVU1JSUJFRENDQVF3R0NTcUdTSWIzWTJRRkFUQ0IvakNCd3dZSUt3WUJCUVVIQWdJd2diWU1nYk5TWld4cFlXNWpaU0J2YmlCMGFHbHpJR05sY25ScFptbGpZWFJsSUdKNUlHRnVlU0J3WVhKMGVTQmhjM04xYldWeklHRmpZMlZ3ZEdGdVkyVWdiMllnZEdobElIUm9aVzRnWVhCd2JHbGpZV0pzWlNCemRHRnVaR0Z5WkNCMFpYSnRjeUJoYm1RZ1kyOXVaR2wwYVc5dWN5QnZaaUIxYzJVc0lHTmxjblJwWm1sallYUmxJSEJ2YkdsamVTQmhibVFnWTJWeWRHbG1hV05oZEdsdmJpQndjbUZqZEdsalpTQnpkR0YwWlcxbGJuUnpMakEyQmdnckJnRUZCUWNDQVJZcWFIUjBjRG92TDNkM2R5NWhjSEJzWlM1amIyMHZZMlZ5ZEdsbWFXTmhkR1ZoZFhSb2IzSnBkSGt2TURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dVlYQndiR1V1WTI5dEwyRndjR3hsWVdsallUTXVZM0pzTUE0R0ExVWREd0VCL3dRRUF3SUhnREFQQmdrcWhraUc5Mk5rQmgwRUFnVUFNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJSEtLbncrU295cTVtWFFyMVY2MmMwQlhLcGFIb2RZdTlUV1hFUFVXUHBicEFpRUFrVGVjZlc2K1c1bDByMEFEZnpUQ1BxMll0YlMzOXcwMVhJYXlxQk55OGJFd2dnTHVNSUlDZGFBREFnRUNBZ2hKYlMrL09wamFsekFLQmdncWhrak9QUVFEQWpCbk1Sc3dHUVlEVlFRRERCSkJjSEJzWlNCU2IyOTBJRU5CSUMwZ1J6TXhKakFrQmdOVkJBc01IVUZ3Y0d4bElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Rc3dDUVlEVlFRR0V3SlZVekFlRncweE5EQTFNRFl5TXpRMk16QmFGdzB5T1RBMU1EWXlNelEyTXpCYU1Ib3hMakFzQmdOVkJBTU1KVUZ3Y0d4bElFRndjR3hwWTJGMGFXOXVJRWx1ZEdWbmNtRjBhVzl1SUVOQklDMGdSek14SmpBa0JnTlZCQXNNSFVGd2NHeGxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBBWEVZUVoxMlNGMVJwZUpZRUhkdWlBb3UvZWU2NU40STM4UzVQaE0xYlZabHMxcmlMUWwzWU5JazU3dWdqOWRoZk9pTXQydTJad3Zzam9LWVQvVkVXamdmY3dnZlF3UmdZSUt3WUJCUVVIQVFFRU9qQTRNRFlHQ0NzR0FRVUZCekFCaGlwb2RIUndPaTh2YjJOemNDNWhjSEJzWlM1amIyMHZiMk56Y0RBMExXRndjR3hsY205dmRHTmhaek13SFFZRFZSME9CQllFRkNQeVNjUlBrK1R2SitiRTlpaHNQNks3L1M1TE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0h3WURWUjBqQkJnd0ZvQVV1N0Rlb1ZnemlKcWtpcG5ldnIzcnI5ckxKS3N3TndZRFZSMGZCREF3TGpBc29DcWdLSVltYUhSMGNEb3ZMMk55YkM1aGNIQnNaUzVqYjIwdllYQndiR1Z5YjI5MFkyRm5NeTVqY213d0RnWURWUjBQQVFIL0JBUURBZ0VHTUJBR0NpcUdTSWIzWTJRR0FnNEVBZ1VBTUFvR0NDcUdTTTQ5QkFNQ0EyY0FNR1FDTURyUGNvTlJGcG14aHZzMXcxYktZci8wRiszWkQzVk5vbzYrOFp5QlhrSzNpZmlZOTV0Wm41alZRUTJQbmVuQy9nSXdNaTNWUkNHd293VjNiRjN6T0R1UVovMFhmQ3doYlpaUHhuSnBnaEp2VlBoNmZSdVp5NXNKaVNGaEJwa1BDWklkQUFBeGdnR01NSUlCaUFJQkFUQ0JoakI2TVM0d0xBWURWUVFERENWQmNIQnNaU0JCY0hCc2FXTmhkR2x2YmlCSmJuUmxaM0poZEdsdmJpQkRRU0F0SUVjek1TWXdKQVlEVlFRTERCMUJjSEJzWlNCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdTVzVqTGpFTE1Ba0dBMVVFQmhNQ1ZWTUNDQ1JEOHFnR25mVjNNQTBHQ1dDR1NBRmxBd1FDQVFVQW9JR1ZNQmdHQ1NxR1NJYjNEUUVKQXpFTEJna3Foa2lHOXcwQkJ3RXdIQVlKS29aSWh2Y05BUWtGTVE4WERURTVNREl3TlRFME1UZ3dNRm93S2dZSktvWklodmNOQVFrME1SMHdHekFOQmdsZ2hrZ0JaUU1FQWdFRkFLRUtCZ2dxaGtqT1BRUURBakF2QmdrcWhraUc5dzBCQ1FReElnUWdrcVhiV2lWUGI0KzIxWkg4Y2RGQVpISzJ3Y1M1cjhZc3l4L1p6YUpIbkdnd0NnWUlLb1pJemowRUF3SUVSekJGQWlFQTdjT3ZVK01QVHZMVnpmenJFckMwdGpJL1pCb2FsTmFiQWJUcWUvRFdzeVlDSUF5dTdGa1FZV0o4Z0doTW4wZE14L2Q4MHI5N1BmMU1QeGtobDlXVjNzNjdBQUFBQUFBQSIsImhlYWRlciI6eyJlcGhlbWVyYWxQdWJsaWNLZXkiOiJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzaFhkdFl2dE5RL2JoNEJSWnZXQmM5Mk5aeUlYR0ltbU9PN0xoY0V4SG94YTZMS3U1aXhLZEpEcGx6cDNyTXJTWGMxMFF0NU5Wa0ZqU1JxOHRrMGREdz09IiwicHVibGljS2V5SGFzaCI6ImFWYzd2UTRTTzEyUnVEWUlyajhOT25zL05ncUJYZm1EaWE1ZmZKcWVwRzQ9IiwidHJhbnNhY3Rpb25JZCI6IjNlODA3NzRiYmMzODVlYzA4YTU3ZTAyYWNiZjAwZmM3NGEzZDAzMmJlODRjNDI0ODFlMmNmYzRmNDQ0NjA4MmIifX0sInBheW1lbnRNZXRob2QiOnsiZGlzcGxheU5hbWUiOiJWaXNhIDQ2NTUiLCJuZXR3b3JrIjoiVmlzYSIsInR5cGUiOiJkZWJpdCJ9LCJ0cmFuc2FjdGlvbklkZW50aWZpZXIiOiIzRTgwNzc0QkJDMzg1RUMwOEE1N0UwMkFDQkYwMEZDNzRBM0QwMzJCRTg0QzQyNDgxRTJDRkM0RjQ0NDYwODJCIn0=", "pmt_desc": "Тестовий платіж", "pmt_info": { "custom_merchant_field": 1234567 }, "ext_id": "AD68E7675FE111E79A65005056B960DF" } } }
Поле | Тип | Опис |
---|---|---|
Обов\'язкові поля | ||
invoice | string | Сума платежу, у копійках |
Опціональні поля | ||
msisdn | string | Номер телефону |
transactions | array | Масив транзакцій |
transactions[].smch_id | array | ID юридичної особи |
transactions[].invoice | array | Сума |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00dc94b74a7cfdced473 ..." }, "action": "CalculateFee", "body": { "msisdn": "380931234567", "invoice": 100 } } }
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00dc94b74a7cfdced473 ..." }, "action": "CalculateFee", "body": { "msisdn": "380931234567", "invoice": 100, "transactions": [ {"smch_id": 123456, "invoice": 100} ] } } }
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.invoice | string | Сума платежу, у копійках |
response.amount | string | Сума до сплати (з урахуванням комісії), у копійках |
response.fee | string | Сума комісії, у копійках |
{ "response": { "invoice":"1000", "amount":"1100", "fee":"100", } }
Поле | Тип | Опис |
---|---|---|
Обов\'язкові поля | ||
invoice | string | Сума платежу, у копійках |
apple_data | string | PaymentToken ApplePay у форматі JSON закодований в Base64 (поле не є обов\'язковим якщо передано поле recurrent_token) |
pmt_desc | string | Опис платежу |
pmt_info | object | Інформація до платежу, надається мерчантом при створенні, якщо присутнє значення (integer) smch_id - буде обиратись зазначена юридична особа |
threeds_info | object | Дані для 3D Secure верифікації |
threeds_info.notification_url | string | URL, на який буде відправлений результат проходження 3D Secure перевірки |
threeds_info.threeds_requestor_url | string | Адреса сайту, на якому виконується оплата |
threeds_info.browser_language | string | Мова браузера користувача, визначений відповідно до IETF BCP 47, наприклад "en-US" |
threeds_info.browser_screen_height | string | Висота екрану користувача в пікселях |
threeds_info.browser_screen_width | string | Ширина екрану користувача в пікселях |
threeds_info.browser_accept_header | string | Точне значення HTTP заголовків, відправлених з браузера користувача на сайт, на якому виконується оплата |
threeds_info.browser_tz | string | Зміщення часового поясу між Гринвічем та місцевим часом користувача, в хвилинах, наприклад "-120" для часового поясу Europe/Kiev |
threeds_info.browser_user_agent | string | Точний зміст HTTP заголовка user-agent |
Опціональні поля | ||
deferred_payment | bool | Платіж буде виконано без списання коштів, далі платіж потрібно завершити через запит ProcessPayment |
recurrent | bool | Рекурентний платіж (true або false). Використовується для першого запиту щоб отримати у відповідь recurrent_token (якщо рекурент можливий по даному платежу) |
recurrent_token | string | Токен рекурентного платежу |
msisdn | string | Номер телефону |
ext_id | string | Унікальний ідентифікатор оплати в системні мерчанта (максимальна довжина - 50 символів) |
transactions | array | Масив транзакцій. Дозволяє розщепити платіж на декілька отримувачів коштів. |
transactions[].invoice | integer | Сума транзакції, у копійках |
transactions[].smch_id | integer | ID отримувача коштів, надається iPay |
transactions[].desc | string | Призначення платежу, надається мерчантом при створенні (у форматі текст до 100 знаків) |
transactions[].info | object | Інформація до платежу, надається мерчантом при створенні |
Реквізити відправника та одержувача | ||
sender | object | Дані відправника |
sender.lastname | string | Прізвище відправника |
sender.firstname | string | Ім\'я відправника |
sender.middlename | string | По-батькові відправника |
sender.document | string | Номер паспорта відправника (наприклад: АН123456) |
sender.address | string | Адреса відправника (наприклад: Київ, вул. Тестова, 10) |
sender.identification_number | string | ІПН (Індивідуальний податковий номер) / ЄДРПОУ (ідентифікаційний код суб\'єкта Єдиного державного реєстру підприємств України) |
sender.account_number | string | Розрахунковий рахунок відправника (фіз.особа/підприємство) |
receiver | object | Дані одержувача |
receiver.lastname | string | Прізвище одержувача |
receiver.firstname | string | Ім\'я одержувача |
receiver.middlename | string | По-батькові одержувача |
receiver.document | string | Номер документа одержувача (например: АН123456) |
receiver.address | string | Адреса одержувача (наприклад: Київ, вул. Тестова, 10) |
receiver.identification_number | string | ІПН (Індивідуальний податковий номер) / ЄДРПОУ (ідентифікаційний код суб\'єкта Єдиного державного реєстру підприємств України) |
receiver.account_number | string | Розрахунковий рахунок одержувача (фіз.особа/підприємство) |
Для Торговців, що інтегруються з фіскалізацією платежів | ||
receipt_data | object | Інформація для фіскалізації платежу |
receipt_data.cashier_id | integer | ID касира в системі iPay |
receipt_data.cash_register_id | integer | ID каси в системі iPay |
receipt_data.goods | array | Масив товарів |
receipt_data.goods[].id | string | ID товара в форматі UUID |
receipt_data.goods[].code | string | Код товара |
receipt_data.goods[].name | string | Назва товара |
receipt_data.goods[].barcode | string | Штрих-код товару |
receipt_data.goods[].price | integer | Вартість в копійках |
receipt_data.goods[].quantity | integer | Кількість (наприклад: 1 шт = 1000, 2.25 кг = 2250) |
receipt_data.discounts | array | Зчижка чи надбавка |
receipt_data.discounts[].type | string | Тип знижки. Доступні значення: DISCOUNT (знижка), EXTRA_CHARGE (надбавка) |
receipt_data.discounts[].mode | string | Режим знижки. Доступні значення: PERCENT (відсоткова знижка), VALUE (абсолютне значення) |
receipt_data.discounts[].value | integer|float | Значення знижки чи надбавки |
receipt_data.delivery_email | string | Email для відправки чека |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00dc94b74a7cfdced473 ..." }, "action": "PaymentCreate", "body": { "msisdn": "380931234567", "invoice": 100, "apple_data": "eyJwYXltZW50RGF0YSI6eyJ2ZXJzaW9uIjoiRUNfdjEiLCJkYXRhIjoiZ3ZNWHVzcjZlWDE3WWFkNTduRmt5UUJoRkxOUUc4WmtSS3BUZlZuak12V0V0K2RmYVpnSUVnWmpJRzV3ODgzUWozbkNNQTBpaWVnSUpFbkNuNkJJakJPZ0dhRlFXSXN2YkNBVXFaUDMrOGF3QWFZRy9oYjFHNm1SOHY1cFlGdFNYOVU3UUVyajVMREFERlJ1Q05ZQlUvOFplc04rZG0vdkUwVDA2VkpydjhJRVR6Zm5BT3JIVDdqZ2hPTEVYVkNHNWN0SlVXL25aZUQrVFN4Y1BoMC93RTdMY3BIRDJQK09waks2dlZVL1A5UlB3cERoSXlQODBvNHNMbDI4L2xZS0gxb1hBZTYzTC8wL1Rrc1YzN0g5cFQ3b2NzOWhPNjFXcGViUDkxemk5VTNZOEdBZGxkZ2U0VG1hbDZTWTJacjNkWXNCbk5WTGt1RkNQNHlqOFd2Yjc4dFN1Z2tLaDFvZ3lGN24wRjNJQ2hZaDJTd0FvbmVRM1dGZWhRbThHaGRQNDZIUU5XbURMdm9KRG8vU0xrOE1EYlFhTytxQjVxU2xDek52OVVneSIsInNpZ25hdHVyZSI6Ik1JQUdDU3FHU0liM0RRRUhBcUNBTUlBQ0FRRXhEekFOQmdsZ2hrZ0JaUU1FQWdFRkFEQ0FCZ2txaGtpRzl3MEJCd0VBQUtDQU1JSUQ0akNDQTRpZ0F3SUJBZ0lJSkVQeXFBYWQ5WGN3Q2dZSUtvWkl6ajBFQXdJd2VqRXVNQ3dHQTFVRUF3d2xRWEJ3YkdVZ1FYQndiR2xqWVhScGIyNGdTVzUwWldkeVlYUnBiMjRnUTBFZ0xTQkhNekVtTUNRR0ExVUVDd3dkUVhCd2JHVWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhreEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUI0WERURTBNRGt5TlRJeU1EWXhNVm9YRFRFNU1Ea3lOREl5TURZeE1Wb3dYekVsTUNNR0ExVUVBd3djWldOakxYTnRjQzFpY205clpYSXRjMmxuYmw5VlF6UXRVRkpQUkRFVU1CSUdBMVVFQ3d3TGFVOVRJRk41YzNSbGJYTXhFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXdoVjM3ZXZXeDdJaGoyamRjSkNoSVkzSHNMMXZMQ2c5aEdDVjJVcjBwVUViZzBJTzJCSHpRSDZETXg4Y1ZNUDM2eklnMXJyVjFPLzBrb21KUG53UEU2T0NBaEV3Z2dJTk1FVUdDQ3NHQVFVRkJ3RUJCRGt3TnpBMUJnZ3JCZ0VGQlFjd0FZWXBhSFIwY0RvdkwyOWpjM0F1WVhCd2JHVXVZMjl0TDI5amMzQXdOQzFoY0hCc1pXRnBZMkV6TURFd0hRWURWUjBPQkJZRUZKUlgyMi9WZElHR2lZbDJMMzVYaFFmbm0xZ2tNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVJL0pKeEUrVDVPOG41c1QyS0d3L29ydjlMa3N3Z2dFZEJnTlZIU0FFZ2dFVU1JSUJFRENDQVF3R0NTcUdTSWIzWTJRRkFUQ0IvakNCd3dZSUt3WUJCUVVIQWdJd2diWU1nYk5TWld4cFlXNWpaU0J2YmlCMGFHbHpJR05sY25ScFptbGpZWFJsSUdKNUlHRnVlU0J3WVhKMGVTQmhjM04xYldWeklHRmpZMlZ3ZEdGdVkyVWdiMllnZEdobElIUm9aVzRnWVhCd2JHbGpZV0pzWlNCemRHRnVaR0Z5WkNCMFpYSnRjeUJoYm1RZ1kyOXVaR2wwYVc5dWN5QnZaaUIxYzJVc0lHTmxjblJwWm1sallYUmxJSEJ2YkdsamVTQmhibVFnWTJWeWRHbG1hV05oZEdsdmJpQndjbUZqZEdsalpTQnpkR0YwWlcxbGJuUnpMakEyQmdnckJnRUZCUWNDQVJZcWFIUjBjRG92TDNkM2R5NWhjSEJzWlM1amIyMHZZMlZ5ZEdsbWFXTmhkR1ZoZFhSb2IzSnBkSGt2TURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dVlYQndiR1V1WTI5dEwyRndjR3hsWVdsallUTXVZM0pzTUE0R0ExVWREd0VCL3dRRUF3SUhnREFQQmdrcWhraUc5Mk5rQmgwRUFnVUFNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJSEtLbncrU295cTVtWFFyMVY2MmMwQlhLcGFIb2RZdTlUV1hFUFVXUHBicEFpRUFrVGVjZlc2K1c1bDByMEFEZnpUQ1BxMll0YlMzOXcwMVhJYXlxQk55OGJFd2dnTHVNSUlDZGFBREFnRUNBZ2hKYlMrL09wamFsekFLQmdncWhrak9QUVFEQWpCbk1Sc3dHUVlEVlFRRERCSkJjSEJzWlNCU2IyOTBJRU5CSUMwZ1J6TXhKakFrQmdOVkJBc01IVUZ3Y0d4bElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Rc3dDUVlEVlFRR0V3SlZVekFlRncweE5EQTFNRFl5TXpRMk16QmFGdzB5T1RBMU1EWXlNelEyTXpCYU1Ib3hMakFzQmdOVkJBTU1KVUZ3Y0d4bElFRndjR3hwWTJGMGFXOXVJRWx1ZEdWbmNtRjBhVzl1SUVOQklDMGdSek14SmpBa0JnTlZCQXNNSFVGd2NHeGxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBBWEVZUVoxMlNGMVJwZUpZRUhkdWlBb3UvZWU2NU40STM4UzVQaE0xYlZabHMxcmlMUWwzWU5JazU3dWdqOWRoZk9pTXQydTJad3Zzam9LWVQvVkVXamdmY3dnZlF3UmdZSUt3WUJCUVVIQVFFRU9qQTRNRFlHQ0NzR0FRVUZCekFCaGlwb2RIUndPaTh2YjJOemNDNWhjSEJzWlM1amIyMHZiMk56Y0RBMExXRndjR3hsY205dmRHTmhaek13SFFZRFZSME9CQllFRkNQeVNjUlBrK1R2SitiRTlpaHNQNks3L1M1TE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0h3WURWUjBqQkJnd0ZvQVV1N0Rlb1ZnemlKcWtpcG5ldnIzcnI5ckxKS3N3TndZRFZSMGZCREF3TGpBc29DcWdLSVltYUhSMGNEb3ZMMk55YkM1aGNIQnNaUzVqYjIwdllYQndiR1Z5YjI5MFkyRm5NeTVqY213d0RnWURWUjBQQVFIL0JBUURBZ0VHTUJBR0NpcUdTSWIzWTJRR0FnNEVBZ1VBTUFvR0NDcUdTTTQ5QkFNQ0EyY0FNR1FDTURyUGNvTlJGcG14aHZzMXcxYktZci8wRiszWkQzVk5vbzYrOFp5QlhrSzNpZmlZOTV0Wm41alZRUTJQbmVuQy9nSXdNaTNWUkNHd293VjNiRjN6T0R1UVovMFhmQ3doYlpaUHhuSnBnaEp2VlBoNmZSdVp5NXNKaVNGaEJwa1BDWklkQUFBeGdnR01NSUlCaUFJQkFUQ0JoakI2TVM0d0xBWURWUVFERENWQmNIQnNaU0JCY0hCc2FXTmhkR2x2YmlCSmJuUmxaM0poZEdsdmJpQkRRU0F0SUVjek1TWXdKQVlEVlFRTERCMUJjSEJzWlNCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdTVzVqTGpFTE1Ba0dBMVVFQmhNQ1ZWTUNDQ1JEOHFnR25mVjNNQTBHQ1dDR1NBRmxBd1FDQVFVQW9JR1ZNQmdHQ1NxR1NJYjNEUUVKQXpFTEJna3Foa2lHOXcwQkJ3RXdIQVlKS29aSWh2Y05BUWtGTVE4WERURTVNREl3TlRFME1UZ3dNRm93S2dZSktvWklodmNOQVFrME1SMHdHekFOQmdsZ2hrZ0JaUU1FQWdFRkFLRUtCZ2dxaGtqT1BRUURBakF2QmdrcWhraUc5dzBCQ1FReElnUWdrcVhiV2lWUGI0KzIxWkg4Y2RGQVpISzJ3Y1M1cjhZc3l4L1p6YUpIbkdnd0NnWUlLb1pJemowRUF3SUVSekJGQWlFQTdjT3ZVK01QVHZMVnpmenJFckMwdGpJL1pCb2FsTmFiQWJUcWUvRFdzeVlDSUF5dTdGa1FZV0o4Z0doTW4wZE14L2Q4MHI5N1BmMU1QeGtobDlXVjNzNjdBQUFBQUFBQSIsImhlYWRlciI6eyJlcGhlbWVyYWxQdWJsaWNLZXkiOiJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzaFhkdFl2dE5RL2JoNEJSWnZXQmM5Mk5aeUlYR0ltbU9PN0xoY0V4SG94YTZMS3U1aXhLZEpEcGx6cDNyTXJTWGMxMFF0NU5Wa0ZqU1JxOHRrMGREdz09IiwicHVibGljS2V5SGFzaCI6ImFWYzd2UTRTTzEyUnVEWUlyajhOT25zL05ncUJYZm1EaWE1ZmZKcWVwRzQ9IiwidHJhbnNhY3Rpb25JZCI6IjNlODA3NzRiYmMzODVlYzA4YTU3ZTAyYWNiZjAwZmM3NGEzZDAzMmJlODRjNDI0ODFlMmNmYzRmNDQ0NjA4MmIifX0sInBheW1lbnRNZXRob2QiOnsiZGlzcGxheU5hbWUiOiJWaXNhIDQ2NTUiLCJuZXR3b3JrIjoiVmlzYSIsInR5cGUiOiJkZWJpdCJ9LCJ0cmFuc2FjdGlvbklkZW50aWZpZXIiOiIzRTgwNzc0QkJDMzg1RUMwOEE1N0UwMkFDQkYwMEZDNzRBM0QwMzJCRTg0QzQyNDgxRTJDRkM0RjQ0NDYwODJCIn0=", "pmt_desc": "Тестовий платіж", "pmt_info": { "custom_merchant_field": 1234567, "smch_id": 112233 }, "threeds_info": { "notification_url": "https://www.merchantsite.com/notification", "threeds_requestor_url": "https://www.merchantsite.com", "browser_color_depth": "24", "browser_language": "en-US", "browser_screen_height": "1920", "browser_screen_width": "1080", "browser_tz": "-120", "browser_accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9", "browser_user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36" } } } }
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00dc94b74a7cfdced473 ..." }, "action": "PaymentCreate", "body": { "msisdn": "380931234567", "invoice": 100, "apple_data": "eyJwYXltZW50RGF0YSI6eyJ2ZXJzaW9uIjoiRUNfdjEiLCJkYXRhIjoiZ3ZNWHVzcjZlWDE3WWFkNTduRmt5UUJoRkxOUUc4WmtSS3BUZlZuak12V0V0K2RmYVpnSUVnWmpJRzV3ODgzUWozbkNNQTBpaWVnSUpFbkNuNkJJakJPZ0dhRlFXSXN2YkNBVXFaUDMrOGF3QWFZRy9oYjFHNm1SOHY1cFlGdFNYOVU3UUVyajVMREFERlJ1Q05ZQlUvOFplc04rZG0vdkUwVDA2VkpydjhJRVR6Zm5BT3JIVDdqZ2hPTEVYVkNHNWN0SlVXL25aZUQrVFN4Y1BoMC93RTdMY3BIRDJQK09waks2dlZVL1A5UlB3cERoSXlQODBvNHNMbDI4L2xZS0gxb1hBZTYzTC8wL1Rrc1YzN0g5cFQ3b2NzOWhPNjFXcGViUDkxemk5VTNZOEdBZGxkZ2U0VG1hbDZTWTJacjNkWXNCbk5WTGt1RkNQNHlqOFd2Yjc4dFN1Z2tLaDFvZ3lGN24wRjNJQ2hZaDJTd0FvbmVRM1dGZWhRbThHaGRQNDZIUU5XbURMdm9KRG8vU0xrOE1EYlFhTytxQjVxU2xDek52OVVneSIsInNpZ25hdHVyZSI6Ik1JQUdDU3FHU0liM0RRRUhBcUNBTUlBQ0FRRXhEekFOQmdsZ2hrZ0JaUU1FQWdFRkFEQ0FCZ2txaGtpRzl3MEJCd0VBQUtDQU1JSUQ0akNDQTRpZ0F3SUJBZ0lJSkVQeXFBYWQ5WGN3Q2dZSUtvWkl6ajBFQXdJd2VqRXVNQ3dHQTFVRUF3d2xRWEJ3YkdVZ1FYQndiR2xqWVhScGIyNGdTVzUwWldkeVlYUnBiMjRnUTBFZ0xTQkhNekVtTUNRR0ExVUVDd3dkUVhCd2JHVWdRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhreEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUI0WERURTBNRGt5TlRJeU1EWXhNVm9YRFRFNU1Ea3lOREl5TURZeE1Wb3dYekVsTUNNR0ExVUVBd3djWldOakxYTnRjQzFpY205clpYSXRjMmxuYmw5VlF6UXRVRkpQUkRFVU1CSUdBMVVFQ3d3TGFVOVRJRk41YzNSbGJYTXhFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXdoVjM3ZXZXeDdJaGoyamRjSkNoSVkzSHNMMXZMQ2c5aEdDVjJVcjBwVUViZzBJTzJCSHpRSDZETXg4Y1ZNUDM2eklnMXJyVjFPLzBrb21KUG53UEU2T0NBaEV3Z2dJTk1FVUdDQ3NHQVFVRkJ3RUJCRGt3TnpBMUJnZ3JCZ0VGQlFjd0FZWXBhSFIwY0RvdkwyOWpjM0F1WVhCd2JHVXVZMjl0TDI5amMzQXdOQzFoY0hCc1pXRnBZMkV6TURFd0hRWURWUjBPQkJZRUZKUlgyMi9WZElHR2lZbDJMMzVYaFFmbm0xZ2tNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVJL0pKeEUrVDVPOG41c1QyS0d3L29ydjlMa3N3Z2dFZEJnTlZIU0FFZ2dFVU1JSUJFRENDQVF3R0NTcUdTSWIzWTJRRkFUQ0IvakNCd3dZSUt3WUJCUVVIQWdJd2diWU1nYk5TWld4cFlXNWpaU0J2YmlCMGFHbHpJR05sY25ScFptbGpZWFJsSUdKNUlHRnVlU0J3WVhKMGVTQmhjM04xYldWeklHRmpZMlZ3ZEdGdVkyVWdiMllnZEdobElIUm9aVzRnWVhCd2JHbGpZV0pzWlNCemRHRnVaR0Z5WkNCMFpYSnRjeUJoYm1RZ1kyOXVaR2wwYVc5dWN5QnZaaUIxYzJVc0lHTmxjblJwWm1sallYUmxJSEJ2YkdsamVTQmhibVFnWTJWeWRHbG1hV05oZEdsdmJpQndjbUZqZEdsalpTQnpkR0YwWlcxbGJuUnpMakEyQmdnckJnRUZCUWNDQVJZcWFIUjBjRG92TDNkM2R5NWhjSEJzWlM1amIyMHZZMlZ5ZEdsbWFXTmhkR1ZoZFhSb2IzSnBkSGt2TURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dVlYQndiR1V1WTI5dEwyRndjR3hsWVdsallUTXVZM0pzTUE0R0ExVWREd0VCL3dRRUF3SUhnREFQQmdrcWhraUc5Mk5rQmgwRUFnVUFNQW9HQ0NxR1NNNDlCQU1DQTBnQU1FVUNJSEtLbncrU295cTVtWFFyMVY2MmMwQlhLcGFIb2RZdTlUV1hFUFVXUHBicEFpRUFrVGVjZlc2K1c1bDByMEFEZnpUQ1BxMll0YlMzOXcwMVhJYXlxQk55OGJFd2dnTHVNSUlDZGFBREFnRUNBZ2hKYlMrL09wamFsekFLQmdncWhrak9QUVFEQWpCbk1Sc3dHUVlEVlFRRERCSkJjSEJzWlNCU2IyOTBJRU5CSUMwZ1J6TXhKakFrQmdOVkJBc01IVUZ3Y0d4bElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Rc3dDUVlEVlFRR0V3SlZVekFlRncweE5EQTFNRFl5TXpRMk16QmFGdzB5T1RBMU1EWXlNelEyTXpCYU1Ib3hMakFzQmdOVkJBTU1KVUZ3Y0d4bElFRndjR3hwWTJGMGFXOXVJRWx1ZEdWbmNtRjBhVzl1SUVOQklDMGdSek14SmpBa0JnTlZCQXNNSFVGd2NHeGxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQlBBWEVZUVoxMlNGMVJwZUpZRUhkdWlBb3UvZWU2NU40STM4UzVQaE0xYlZabHMxcmlMUWwzWU5JazU3dWdqOWRoZk9pTXQydTJad3Zzam9LWVQvVkVXamdmY3dnZlF3UmdZSUt3WUJCUVVIQVFFRU9qQTRNRFlHQ0NzR0FRVUZCekFCaGlwb2RIUndPaTh2YjJOemNDNWhjSEJzWlM1amIyMHZiMk56Y0RBMExXRndjR3hsY205dmRHTmhaek13SFFZRFZSME9CQllFRkNQeVNjUlBrK1R2SitiRTlpaHNQNks3L1M1TE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0h3WURWUjBqQkJnd0ZvQVV1N0Rlb1ZnemlKcWtpcG5ldnIzcnI5ckxKS3N3TndZRFZSMGZCREF3TGpBc29DcWdLSVltYUhSMGNEb3ZMMk55YkM1aGNIQnNaUzVqYjIwdllYQndiR1Z5YjI5MFkyRm5NeTVqY213d0RnWURWUjBQQVFIL0JBUURBZ0VHTUJBR0NpcUdTSWIzWTJRR0FnNEVBZ1VBTUFvR0NDcUdTTTQ5QkFNQ0EyY0FNR1FDTURyUGNvTlJGcG14aHZzMXcxYktZci8wRiszWkQzVk5vbzYrOFp5QlhrSzNpZmlZOTV0Wm41alZRUTJQbmVuQy9nSXdNaTNWUkNHd293VjNiRjN6T0R1UVovMFhmQ3doYlpaUHhuSnBnaEp2VlBoNmZSdVp5NXNKaVNGaEJwa1BDWklkQUFBeGdnR01NSUlCaUFJQkFUQ0JoakI2TVM0d0xBWURWUVFERENWQmNIQnNaU0JCY0hCc2FXTmhkR2x2YmlCSmJuUmxaM0poZEdsdmJpQkRRU0F0SUVjek1TWXdKQVlEVlFRTERCMUJjSEJzWlNCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdTVzVqTGpFTE1Ba0dBMVVFQmhNQ1ZWTUNDQ1JEOHFnR25mVjNNQTBHQ1dDR1NBRmxBd1FDQVFVQW9JR1ZNQmdHQ1NxR1NJYjNEUUVKQXpFTEJna3Foa2lHOXcwQkJ3RXdIQVlKS29aSWh2Y05BUWtGTVE4WERURTVNREl3TlRFME1UZ3dNRm93S2dZSktvWklodmNOQVFrME1SMHdHekFOQmdsZ2hrZ0JaUU1FQWdFRkFLRUtCZ2dxaGtqT1BRUURBakF2QmdrcWhraUc5dzBCQ1FReElnUWdrcVhiV2lWUGI0KzIxWkg4Y2RGQVpISzJ3Y1M1cjhZc3l4L1p6YUpIbkdnd0NnWUlLb1pJemowRUF3SUVSekJGQWlFQTdjT3ZVK01QVHZMVnpmenJFckMwdGpJL1pCb2FsTmFiQWJUcWUvRFdzeVlDSUF5dTdGa1FZV0o4Z0doTW4wZE14L2Q4MHI5N1BmMU1QeGtobDlXVjNzNjdBQUFBQUFBQSIsImhlYWRlciI6eyJlcGhlbWVyYWxQdWJsaWNLZXkiOiJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVzaFhkdFl2dE5RL2JoNEJSWnZXQmM5Mk5aeUlYR0ltbU9PN0xoY0V4SG94YTZMS3U1aXhLZEpEcGx6cDNyTXJTWGMxMFF0NU5Wa0ZqU1JxOHRrMGREdz09IiwicHVibGljS2V5SGFzaCI6ImFWYzd2UTRTTzEyUnVEWUlyajhOT25zL05ncUJYZm1EaWE1ZmZKcWVwRzQ9IiwidHJhbnNhY3Rpb25JZCI6IjNlODA3NzRiYmMzODVlYzA4YTU3ZTAyYWNiZjAwZmM3NGEzZDAzMmJlODRjNDI0ODFlMmNmYzRmNDQ0NjA4MmIifX0sInBheW1lbnRNZXRob2QiOnsiZGlzcGxheU5hbWUiOiJWaXNhIDQ2NTUiLCJuZXR3b3JrIjoiVmlzYSIsInR5cGUiOiJkZWJpdCJ9LCJ0cmFuc2FjdGlvbklkZW50aWZpZXIiOiIzRTgwNzc0QkJDMzg1RUMwOEE1N0UwMkFDQkYwMEZDNzRBM0QwMzJCRTg0QzQyNDgxRTJDRkM0RjQ0NDYwODJCIn0=", "transactions": [ {"invoice":50,"smch_id":"5410","desc":"Тестовий платіж","info":{"custom_field_1":"test"}}, {"invoice":50,"smch_id":"5472","desc":"Тестовий платіж","info":{"custom_field_1":"test"}} ] } } }
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.pmt_id | string | ID платежу в системі iPay |
response.invoice | string | Сума платежу, у копійках |
response.amount | string | Сума до сплати (з урахуванням комісії), у копійках |
response.pmt_status | string | Статус платежу (1 - верифікація платежу, 3 - кошти успішно заблоковані, 4 - неуспішний, 5 - успішний) |
response.card_mask | string | Маска картки |
response.bank_response | object | Відповідь банку |
response.bank_response.error_group | integer | Група помилки |
response.bank_acquirer_name | string | Назва банка екваєра |
response.transactions | array | Масив транзакцій |
response.transactions[].trn_id | integer | ID транзакції |
response.transactions[].smch_id | integer | ID юр.особи |
response.transactions[].invoice | integer | Сума транзакції у копійках |
response.transactions[].amount | integer | Сума транзакції (з урахуванням комісії) у копійках |
У випадку успішного платежу повертаються додаткові поля | ||
response.recurrent_token | string | Токен рекурентного платежу, повертається якщо на запит PaymentCreate був переданий recurrent = true (якщо рекурент можливий по даному платежу) |
response.rrn | string | RRN |
response.terminal_id | string|null | ID терміналу (повертається для статусу платежу - 3, 5) |
response.auth_code | string | Код авторізації |
response.mch_amount | array | Дані про зарахування Торговцю |
response.mch_amount[].smch_id | string | Внутрішній ідентифікатор юридичної особи |
response.mch_amount[].amount | string | Сума зарахування Торговцю в копійках |
{ "response": { "pmt_id":"1234567", "invoice":"100", "amount":"100", "pmt_status":"4", "card_mask":"****************", "bank_response": { "error_group":12 }, "bank_acquirer_name": "АТ «Ощадбанк»", "transactions": [ { "trn_id": 1234567, "smch_id": 5410, "invoice": 100, "amount": 100 } ] } }Приклад відповіді (3DS верифікація)
{ "response": { "pmt_id": 1234567, "invoice": 100, "amount": 100, "pmt_status": 1, "security_rate": "3D", "security_data": { "redirect_url": "https://example.com/acs" }, "card_mask": "111111******1111", "bank_response": { "error_group": null }, "bank_acquirer_name": "АТ «Ощадбанк»" } }
У випадку 3DS верифікації потрібно перенаправити користувача по URL, що вказаний у полі security_data.redirect_url. Після проходження верифікації користувачем, результат перевірки буде відправлено HTTP методом POST на threeds_info.notification_url вказаний у запиті PaymentCreate, результат перевірки містить наступне поле: threedsData, значення цього поля треба відправити на запит "PaymentVerify3DS", якщо верифікація пройшла успішно кошти на рахунку клієнту будуть списані або заблоковані в залежності від типу платежу - одностадійний або двухстадійний.
Поле | Тип | Опис |
---|---|---|
pmt_id | integer | Номер платежу в системі iPay |
threeds_data | string | Результат проходження 3DS верифікації |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00 ..." }, "action": "PaymentVerify3DS", "body": { "pmt_id": 1234567, "threeds_data": "eJxlUttygjAQ\/RXHDzAJIoKzZgbr1MEp3mBa7UsnQkZRucjFol..." } } }
Показником того, що верифікація платежу пройшла успішно є статус 5 (одностадійний платіж) і статус 3 (двохстадійний платіж) у відповіді на запит.
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.pmt_id | string | ID платежу в системі iPay |
response.invoice | string | Сума платежу, у копійках |
response.amount | string | Сума до сплати (з урахуванням комісії), у копійках |
response.pmt_status | string | Статус платежу (3 - кошти успішно заблоковані, 4 - неуспішний, 5 - успішний) |
response.card_mask | string | Маска картки |
response.bank_response | object | Відповідь банку |
response.bank_response.error_group | integer | Група помилки |
response.bank_acquirer_name | string | Назва банка екваєра |
response.transactions | array | Масив транзакцій |
response.transactions[].trn_id | integer | ID транзакції |
response.transactions[].smch_id | integer | ID юр.особи |
response.transactions[].invoice | integer | Сума транзакції у копійках |
response.transactions[].amount | integer | Сума транзакції (з урахуванням комісії) у копійках |
У випадку успішного платежу повертаються додаткові поля | ||
response.recurrent_token | string | Токен рекурентного платежу, повертається якщо на запит PaymentCreate був переданий recurrent = true (якщо рекурент можливий по даному платежу) |
response.rrn | string | RRN |
response.terminal_id | string|null | ID терміналу (повертається для статусу платежу - 3, 5) |
response.auth_code | string | Код авторізації |
response.mch_amount | array | Дані про зарахування Торговцю |
response.mch_amount[].smch_id | string | Внутрішній ідентифікатор юридичної особи |
response.mch_amount[].amount | string | Сума зарахування Торговцю в копійках |
{ "response": { "pmt_id":"1234567", "invoice":"100", "amount":"100", "pmt_status":"4", "card_mask":"****************", "bank_response":{ "error_group":12 }, "bank_acquirer_name": "АТ «Ощадбанк»", "transactions": [ { "trn_id": 1234567, "smch_id": 5410, "invoice": 100, "amount": 100 } ] } }
Поле | Тип | Опис |
---|---|---|
Обов\'язкові поля | ||
pmt_id | string | ID платежу в системі iPay |
Опціональні поля | ||
invoice | string | invoice integer Остаточна сума покупки у копійках
У випадку якщо сумма заменьша ніж була на запиті PaymentCreate, буде викононо повернення різниці |
transactions | array | Масив транзакцій. Дозволяє розщепити платіж на декілька отримувачів коштів. |
transactions[].invoice | integer | Сума транзакції, у копійках |
transactions[].smch_id | integer | ID отримувача коштів, надається iPay |
transactions[].desc | string | Призначення платежу, надається мерчантом при створенні (у форматі текст до 100 знаків) |
transactions[].info | object | Інформація до платежу, надається мерчантом при створенні |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00 ..." }, "action": "PaymentSale", "body": { "pmt_id": "1234567", "invoice": 100 } } }
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00 ..." }, "action": "PaymentSale", "body": { "pmt_id": "1234567", "transactions":[ { "invoice":20, "smch_id":111, "desc":"Test1", "info":{ "custom_merchant_field":12345 } }, { "invoice":25, "smch_id":222, "desc":"Test2", "info":{ "custom_merchant_field":67890 } } ] } } }
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.pmt_id | string | ID платежу в системі iPay |
response.invoice | string | Сума платежу, у копійках |
response.amount | string | Сума до сплати (з урахуванням комісії), у копійках |
response.pmt_status | string | Статус платежу (4 - неуспішний, 5 - успішний) |
response.card_mask | string | Маска картки |
response.bank_response | object | Відповідь банку |
response.bank_response.error_group | integer | Група помилки |
response.bank_acquirer_name | string | Назва банка екваєра |
response.transactions | array | Масив транзакцій |
response.transactions[].trn_id | integer | ID транзакції |
response.transactions[].smch_id | integer | ID юр.особи |
response.transactions[].invoice | integer | Сума транзакції у копійках |
response.transactions[].amount | integer | Сума транзакції (з урахуванням комісії) у копійках |
У випадку успішного платежу повертаються додаткові поля | ||
response.recurrent_token | string | Токен рекурентного платежу, повертається якщо на запит PaymentCreate був переданий recurrent = true (якщо рекурент можливий по даному платежу) |
response.rrn | string | RRN |
response.terminal_id | string|null | ID терміналу (повертається для статусу платежу - 3, 5) |
response.auth_code | string | Код авторізації |
response.mch_amount | array | Дані про зарахування Торговцю |
response.mch_amount[].smch_id | string | Внутрішній ідентифікатор юридичної особи |
response.mch_amount[].amount | string | Сума зарахування Торговцю в копійках |
{ "response": { "pmt_id":"1234567", "invoice":"100", "amount":"100", "pmt_status":"4", "card_mask":"****************", "bank_response":{ "error_group":12 }, "bank_acquirer_name": "АТ «Ощадбанк»", "transactions": [ { "trn_id": 1234567, "smch_id": 5410, "invoice": 100, "amount": 100 } ] } }
Поле | Тип | Опис |
---|---|---|
Обов'язкові поля | ||
pmt_id | string | ID платежу в системі iPay |
Опціональні поля | ||
amount | integer | Сума часткового повернення, у копійках |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00 ..." }, "action": "PaymentCancel", "body": { "pmt_id": "1234567", "amount": 100 } } }
Поле | Тип | Опис |
---|---|---|
Обов'язкові поля | ||
pmt_id | string | ID платежу в системі iPay |
Опціональні поля | ||
transactions | array | Масив транзакцій |
transactions[].trn_id | integer | ID транзакції |
transactions[].amount | integer | Сума часткового повернення, у копійках |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00 ..." }, "action": "PaymentCancel", "body": { "pmt_id": "1234567", "transactions": [ { "trn_id": 6636, "amount": 50 }, { "trn_id": 6638, "amount": 30 } ] } } }
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.pmt_id | string | ID платежу в системі iPay |
response.invoice | string | Сума платежу, у копійках |
response.amount | string | Сума до сплати (з урахуванням комісії), у копійках |
response.pmt_status | string | Статус платежу (4 - неуспішний, 9 - відмінений) |
response.card_mask | string | Маска картки |
response.bank_response | object | Відповідь банку |
response.bank_response.error_group | integer | Група помилки |
response.bank_acquirer_name | string | Назва банка екваєра |
response.transactions | array | Масив транзакцій |
response.transactions[].trn_id | integer | ID транзакції |
response.transactions[].smch_id | integer | ID юр.особи |
response.transactions[].invoice | integer | Сума транзакції у копійках |
response.transactions[].amount | integer | Сума транзакції (з урахуванням комісії) у копійках |
{ "response": { "pmt_id":"1234567", "invoice":"100", "amount":"100", "pmt_status":"9", "card_mask":"****************", "bank_response":{ "error_group":12 }, "bank_acquirer_name": "АТ «Ощадбанк»", "transactions": [ { "trn_id": 1234567, "smch_id": 5410, "invoice": 100, "amount": 100 } ] } }
Поле | Тип | Опис |
---|---|---|
Обов\'язкові поля | ||
pmt_id | string | ID платежу в системі iPay |
{ "request":{ "version": 1.10, "auth":{ "login":"test", "time":"2019-02-19 10:47:35", "sign":"a468afe066f57e08d2b36dd74c03218f3701b17aba8fa15ebea..." }, "action":"GetPaymentInvoice", "body":{ "pmt_id":"1234567" } } }
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.invoice | string | Посилання на квитанцію |
{ "response": { "invoice": "https://example.com/invoice/23d53e29722d2b03c954718c1d54b53787985090" } }
Поле | Тип | Опис |
---|---|---|
Обов\'язковим є одне поле - pmt_id або ext_id | ||
pmt_id | integer | ID платежу в системі iPay |
ext_id | integer | ID платежу в системі iPay |
{ "request":{ "version": 1.10, "auth":{ "login":"test", "time":"2019-02-19 10:47:35", "sign":"a468afe066f57e08d2b36dd74c03218f3701b17aba8fa15ebea..." }, "action":"GetPaymentStatus", "body":{ "pmt_id":1234567 } } }
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.pmt_id | string | ID платежу в системі iPay |
response.invoice | string | Сума платежу, у копійках |
response.amount | string | Сума до сплати (з урахуванням комісії), у копійках |
response.pmt_status | string | Статус платежу (1 - верифікація платежу, 3 - кошти успішно заблоковані, 4 - неуспішний, 5 - успішний, 9 - відмінений) |
response.card_mask | string | Маска картки |
response.bank_response | object | Відповідь банку |
response.bank_response.error_group | integer | Група помилки |
response.bank_acquirer_name | string | Назва банка екваєра |
response.transactions | array | Масив транзакцій |
response.transactions[].trn_id | integer | ID транзакції |
response.transactions[].smch_id | integer | ID юр.особи |
response.transactions[].invoice | integer | Сума транзакції у копійках |
response.transactions[].amount | integer | Сума транзакції (з урахуванням комісії) у копійках |
{ "response": { "pmt_id":"1234567", "invoice":"100", "amount":"100", "pmt_status":"9", "card_mask":"****************", "bank_response":{ "error_group":12 }, "bank_acquirer_name": "АТ «Ощадбанк»", "transactions": [ { "trn_id": 1234567, "smch_id": 5410, "invoice": 100, "amount": 100 } ] } }
Поле | Тип | Опис |
---|---|---|
Обов\'язкові поля | ||
pmt_id | integer | ID платежу в системі iPay |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2019-02-19 10:47:35", "sign": "a468afe066f57e08d2b36dd74c03218f3701b17aba8fa15ebea..." }, "action": "GetReceipt", "body": { "pmt_id": 1234567 } } }
У відповіді повертається чек у форматі PDF з HTTP-заголовком Content-type: application/pdf.
Відповідь повертається у форматі JSON. Фінальним статусом є тільки статус ERROR, в такому випадку створення чеку є неуспішним і робити повторні запити для отриманная чеку не потрібно.
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.pmt_id | string | ID платежу в системі iPay |
response.status | string | CREATED, INPROCESS, ERROR |
{ "response": { "pmt_id": 1234567, "status": "INPROCESS" } }
Поле | Тип | Опис |
---|---|---|
Обов\'язкові поля | ||
pmt_id | string | ID платежу в системі iPay |
{ "request": { "version": 1.10, "auth": { "login": "test", "time": "2018-07-09 03:40:37", "sign": "a12a4d5eb7da121bc04d360a5c11fd7be246817f7ac1845b17eb00 ..." }, "action": "PaymentSale", "body": { "pmt_id": "1234567", "invoice": 100 } } }
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.pmt_id | string | ID платежу в системі iPay |
response.invoice | string | Сума платежу, у копійках |
response.amount | string | Сума до сплати (з урахуванням комісії), у копійках |
response.pmt_status | string | Статус платежу (4 - неуспішний, 5 - успішний) |
response.card_mask | string | Маска картки |
response.bank_response | object | Відповідь банку |
response.bank_response.error_group | integer | Група помилки |
response.bank_acquirer_name | string | Назва банка екваєра |
У випадку успішного платежу повертаються додаткові поля | ||
response.recurrent_token | string | Токен рекурентного платежу, повертається якщо на запит PaymentCreate був переданий recurrent = true (якщо рекурент можливий по даному платежу) |
response.rrn | string | RRN |
response.terminal_id | string|null | ID терміналу (повертається для статусу платежу - 3, 5) |
response.auth_code | string | Код авторізації |
response.mch_amount | array | Дані про зарахування Торговцю |
response.mch_amount[].smch_id | string | Внутрішній ідентифікатор юридичної особи |
response.mch_amount[].amount | string | Сума зарахування Торговцю в копійках |
{ "response": { "pmt_id":"1234567", "invoice":"100", "amount":"100", "pmt_status":"4", "card_mask":"****************", "bank_response":{ "error_group":12 }, "bank_acquirer_name": "АТ «Ощадбанк»" } }
1. Ваш сайт повинен працювати за схемою HTTPS і підтримувати протокол TLS 1.2.
2. Потрібно погодитись з умовами надання послуг Apple Pay.
3. Необхідно укласти договір з Ipay.ua
1. Необхідно мати аккаунт в Apple Developer
2. Додайте новий Merchant ID в Apple Developer Account
3. Створіть Apple Pay Merchant Identity Certificate:
3. Створіть Apple Pay Payment processing certificate :
developer.apple.com/documentation/passkit/apple_pay/setting_up_apple_pay_requirements
if(window.ApplePaySession && window.ApplePaySession.canMakePayments() ){
var merchantIdentifier=\'{YourMchName}\';
var promise = ApplePaySession.canMakePaymentsWithActiveCard(merchantIdentifier);
promise.then(function (canMakePayments) {
if (canMakePayments){
}
});
}
});
function applePayButtonClick() { var merchantID = \'{YourMchName}\'; var session= new ApplePaySession(3,createPaymentRequest()); session.begin(); session.onvalidatemerchant = (event) => { const validationURL = event.validationURL; var promise = performValidation(event.validationURL); promise.then(function (merchantSession) { session.completeMerchantValidation(merchantSession); }); }; session.onpaymentauthorized = function (event) { if (event.payment.token) { //event.payment.token (Токен який треба передаты до Ipay.ua) session.completePayment(ApplePaySession.STATUS_SUCCESS); } else { session.completePayment(ApplePaySession.STATUS_FAILURE); } }; }
function createPaymentRequest() { var request = { "countryCode": "UA", "currencyCode": "UAH", "merchantCapabilities": [ "supports3DS" ], "supportedNetworks": [ "visa", "masterCard" ], "total": { "label": "{yourLabel}", "type": "final", "amount": "{yourAmount}" } }; return request; }
function performValidation(valURL) {
return new Promise(function(resolve, reject) {
var body=\'url=\'+valURL;
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var data = JSON.parse(this.responseText);
resolve(data);
};
xhr.onerror = reject;
xhr.open(\'POST\',\'{yourUrlForGetAppleSession}\',true);
xhr.setRequestHeader(\'Content-Type\', \'application/x-www-form-urlencoded\');
xhr.send(body);
});
}
Поле | Тип | Опис |
---|---|---|
response | object | Тіло відповіді |
response.error | string | Назва помилки, що виникла |
{ "response": { "error": "invalid request structure" } }
Помилка | Опис |
---|---|
overall error | Загальна помилка |
invalid request structure | Невірна структура запиту |
unknown field {field_name} | У запиті передано поле, яке невідоме системі |
invalid pan | Невірне значення pan |
invalid expm | Невірне значення expm |
invalid expy | Невірне значення expy |
invalid cvv | Невірне значення cvv |
invalid auth | Помилка аутентифікації |
invalid auth time | Невірний час запиту |
access denied | Доступ заборонено |
{ "response":{ "pmt_id":"1234567", "invoice":"100", "amount":"100", "pmt_status":"4", "card_mask":"****************", "bank_response": { "error_group":12 }, "bank_acquirer_name": "АТ «Ощадбанк»" } }
Група помилки | Опис |
---|---|
41 | Відмова емітента |
42 | Недостатньо коштів |
43 | Ліміт емітента |
50 | Невірний CVV |
51 | Помилка верифікації (3D Secure) |
52 | Помилка з\'єднання |
55 | Невідома помилка |
56 | Термін дії картки закінчився |
57 | Невірний номер картки |
58 | Ліміт на картці |
60 | Помилка верифікації (3D Secure) |
66 |
Операція відхилена через необхідність пройти 3DSecure верифікацію. Рекомендується повторно відправити запит, але з параметром pmt_info.force_security_rate=3D |
67 | Операція відхилена через те, що дана картка іноземного банку і заборонена для операції. Рекомендується зробити новий платіж з іншою платіжною картою |
Дата | Версія | Опис змін |
---|---|---|
2019-02-10 | 1.0.0 | Налаштування запитів PaymentCreate, PaymentSale. |
2019-04-04 | 1.0.1 | Додано запит CalculateFee - розрахунок коміссії перед створенням платежу.
PaymentCreate - у pmt_info опис переданого значення smch_id PaymentSale - invoice переведений в опціональне поле |
2021-10-25 | 1.0.2 | Додано запит PaymentVerify3DS - підтвердження результатів проходження 3D Secure.
PaymentCreate - у запит додано поле threeds_info з параметрами для проходженная 3D Secure. PaymentCreate - у відповідь додано поля security_rate та security_data. |
2021-11-05 | 1.0.2 | В запит CalculateFee додана можливість передачі масива транзакцій для розрахунку комісії. |
2023-07-07 | 1.0.3 |
В базову структуру запиту додано можливість передавати версію API - поле "version". В запит PaymentSale додано можливість передавати транзакції. В запит PaymentCreate додано можливість передавати ext_id (унікальний ідентифікатор оплати в системі мерчанта) |
2023-12-22 | 1.0.4 | Додано опціональні поля з реквізитами відправника та отримувача. |
2024-03-27 | 1.0.5 | Додано опціональні поля для роботи з рекурентними платежами в запит PaymentCreate. |
2024-04-30 | 1.0.6 | У відповіді з інформацією платежу додано поле terminal_id. |
2024-07-11 | 1.0.7 |
В запит PaymentCreate додано поле deferred_payment. Додано запит ProcessPayment. |
2024-08-01 | 1.0.8 | В запит PaymentCancel додана можливість повернень по транзакціям. |
2024-08-12 | 1.10 | У відповідь до запитів PaymentCreate, PaymentVerify3DS, PaymentSale, PaymentCancel, GetPaymentStatus додано масив транзакцій. |