Основні запити та відповіді: відмінності між версіями

Матеріал з apidocs
Перейти до: навігація, пошук
Немає опису редагування
Рядок 108: Рядок 108:
* [[MerchantAPI#Реєстрація точки та створення сесії|CreateApp]]
* [[MerchantAPI#Реєстрація точки та створення сесії|CreateApp]]
* [[MerchantAPI#Створення сесії|CreatePage]]
* [[MerchantAPI#Створення сесії|CreatePage]]
* [[MerchantAPI#Реєстрація точки та створення сесії|CreateApp]]
* [[MerchantAPI#Створення сесії|CreatePage]]
<br>
<p style="border: 1px solid #FFA500; background-color: rgba(255, 165, 0, 0.1); padding: 10px; border-radius: 8px; font-family: Arial, sans-serif; font-size: 14px; font-weight: normal; color: #333; position: relative;">
    ⚠️ <strong>Важливо!</strong> Для кожного нового запиту <span style="background-color: #EDEDED; padding: 2px 5px; border-radius: 4px; font-family: monospace; color: #D63384;">CreateOrder</span> потрібно використовувати унікальний <span style="background-color: #EDEDED; padding: 2px 5px; border-radius: 4px; font-family: monospace; color: #D63384;">PageID</span>.
</p>
<p style="border: 1px solid #9ACD32; background-color: rgba(144, 238, 144, 0.5); padding: 10px; border-radius: 8px; font-family: Arial, sans-serif; font-size: 14px; font-weight: normal; position: relative; padding-left: 80px;">
    <span style="position: absolute; top: 10px; left: 10px; background-color: #006400; color: white; padding: 2px 12px; border-radius: 4px; font-size: 14px; font-weight: bold;">POST</span>
    <span style="margin-left: 5px; font-weight: bold; font-size: 16px;"> /api/merchant/createOrder</span>
</p>
</p><syntaxhighlight lang="markdown" line="1">
headers
'Content-Type': 'application/json'
'PartnerKey': 'partnerName'
'locale': 'ua'
'AppId': 'a5806a5f-dbb8-496a-a23f-aab6d2fcbce1'
'PageId': '2ce7dba6-4600-456e-b9c8-f13cacf1c85d'
'Sign': 'e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4='
<br>
</syntaxhighlight><syntaxhighlight lang="json" line="1">
{
  "userInfo": {
      "phone": "string"
    },
Обов'язкові параметри:
    "order": {
      "serviceKey": "string",
      "orderId": "string",
      "description": "string",
      "amount":1.01, (decimal)
Необов'язкові параметри:
      "paymentOperation":"PaymentTokenization",
      "additionalItems": {},
      "expire": "2019-04-15T07:49:20",
      "isOneTimePay": true,
      "fields": [
          {
          "fieldName": "string",
          "fieldValue": "string",
          "fieldKey": "string",
          }
        ]
    },
  "urls": {
    "success": "string",
    "failed": "string",
    "back": "string",
  },
  "bankingDetailsId": "string",
"bankingDetails": {
    "payee": {
      "id": "string",
      "name": "string",
      "bank": {
        "name": "string",
        "mfo": "string",
        "account": "string"
      }
    },
    "payer": {
      "name": "string",
      "id": "string"
    },
    "narrative": {
      "name": "string"
    }
  },
  "reccurent": {
    "cronRule": "string",
    "dateExpire": "2019-01-21T08:24:38.741Z",
    "dateRun": "2019-01-20T08:24:38.741Z",
    "properties":
      {
        "failedCount":0,
        "failedRule":"string",
        "amount":1.0,
        "UrlNotify":"http://notify.url"
      }
  },
"splitting": {
    "items": [
      {
    "serviceKey": "string",
    "orderId": "string” 
    "bankingDetailsId": "string",
    "bankingDetails": {
                      "payee": {
                                    "id": "string",
                                    "name": "string",
                                      "bank": {
                                                    "name": "string",
                                                    "mfo": "string",
                                                    "account": "string"
                                                  }
                                    },
                      "payer": {
                                      "name": "string"
                                    },
                      "narrative": {
                                      "name": "string"
                                    }
                                  },
        "unit": "Amount|Percent",
        "value": 0,
        "withCommission": false|true
      }
    ]
  },
  "userPaymentInstrument": {
      "instrumentType": "Card",
      "cardGuid": "guid",
    "pan": "string",
      "expire": "MM/YY",
      "cvv": "string",
  },
"partnerInfo": {
      "id": "string",
      "name": "string",
      "account": "string"
}
}
</syntaxhighlight>'''Опис  параметрів''' <table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;">
<!-- Перший рядок - заголовок -->
    <tr>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Параметр</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Характеристика</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Коментарій</th>
    <!-- Другий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>serviceKey</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ідентифікатор послуги мерчанта (видає EasyPay)</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.</td>
    </tr>
    <!-- Третій рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>orderId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">унікальний ідентифікатор номера замовлення у системі партнера</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">магазину чи послуги
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.
</td>
    </tr>
    <!-- Четвертий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>description</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">опис замовлення (до 120 символів)</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">відомий лише торговцю та EasyPay
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.
</td>
    </tr>
    <!-- П'ятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>amount</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">сума замовлення, роздільник - точка </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td>
   
    </tr>
    <!-- Шостий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>paymentOperation</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">тип платіжного процесу </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Можливі значення:
* '''PaymentTokenization -''' використовується для токенізації картки, якою буде сплачено це замовлення.
* '''Працює лише для інструмента “карта”'''. Повинен бути заповнений ідентифікатор клієнта '''"userInfo": { "phone": "string"}'''
* Якщо передано URL для колбеку, то після успішної оплати відправляється колбек про платіж та колбек про токенізацію (приклади колбеків про оплату - в [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]], про [[MerchantAPI#Токенізація за допомогою введення даних картки користувачем на сторінці (сертифікація PCI:DSS не потрібна)|токенізацію]].
</td>
    </tr>
    <!-- Cьомий рядок-->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>userInfo/phone</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">номер телефону (або ідентифікатор) клієнта </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Номер телефону необхідний:
* для отримання списку токенізованих карток (інформація буде в масиві StoredCards)
* при оплаті із зазначенням токена картки
* для токенізації картки після успішної оплати разом із параметром
</td>
    </tr>
    <!-- Восьмий рядок->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>AppId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ідентифікатор торгової точки партнера </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td>
      </tr>
  <!-- Девятий рядок->
      <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>AppId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ідентифікатор торгової точки партнера </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td>
  </table>
 
      <!-- Десятий рядок->
      <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>AppId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ідентифікатор торгової точки партнера </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td>
      </tr>
    <!-- Одинадцятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>expire</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">час життя замовлення </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Після закінчення заданого часу замовлення сплатити неможливо. Час життя сторінки може відображатися на платіжній сторінці у вигляді таймера (за замовчуванням таймер вимкнено). Значення має бути більшим за поточний час на 6 хвилин.
'''Значення за замовчуванням - 3 дні'''</td>
    </tr>   
    <!-- Дванадцятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>sOneTimePay</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">включає можливість успішно оплатити замовлення лише 1 раз за конкретним forwardUrl </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Значення:
* True - за замовчуванням;
* False - оплатити замовлення по тому самому ''forwardUrl'' можна буде кілька разів;</td>
</tr>
    <!-- Тринадцятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>urls</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">
*'''back -''' URL для повернення на вказану сторінку з фінальної сторінки успіху EasyPay.
* '''success -''' URL сторінки успіху, для редиректу клієнта у разі успішної оплати.
* '''failed -''' URL сторінки помилки для редиректу клієнта у разі неуспішної оплати</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">
* '''back -'''  На фінальній сторінці EasyPay вгорі зліва з'явиться кнопка “Повернутись назад” з посиланням на вказану URL-адресу. Параметр не може бути порожнім і повинен відповідати формату URL.
* '''success''' -  у разі, якщо не було передано urls{success,failed} для редиректу після оплати. Після оплати клієнт може не дочекатися редиректу на цей url, тому редирект не можна використовувати як індикатор успішної оплати, отримання оповіщення про успішний платіж - '''див.''' [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]]
* '''faild -''' приклад get-параметрів, які приходять на '''url.failed та url.succes''' (те ж, але без ''errorCode''):
<code>?serviceKey=merchanttest-5310&orderId=re9r9er94jr&amount=1.20&description=</code>
<code>Тестове+описання+замовлення&transactionId=722443797&date=2019-06-11T14:49:07&recurrentId=&''errorCode=PAYMENT_ALFABANK_-2006''&sign=</code>
<code>eYkFYixpB3wnKoZDzkAiqWgdMkeHETDWmDsFMCaPO44=</code>
</td>
  </table>
<br>
'''Необов'язкові додаткові поля'''
'''<code>additionalItems</code> –''' необов'язкові додаткові параметри, наприклад:
<br>
<syntaxhighlight lang="json" line="1">
"additionalItems":{
  "PayerEmail":"[email protected]",
  "PayerPhone":"380930007603",
  "Merchant.UrlNotify":"https://notify.url",
  "Merchant.Param1":"CustomValue",
  "CurrencyAmountLabel":"123.56$"
},
</syntaxhighlight>'''Опис параметрів<br>'''
<table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;">
    <!-- Перший рядок - заголовок -->
    <tr>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Параметр</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Характеристика</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Коментарій</th>
    </tr>
    <!-- Другий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>PayerEmail</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">емейл клієнта для оповіщення його у разі неоплаченого замовлення та для автоматичного заповнення поля “Надіслати квитанцію на email” на сторінці оплати. </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Якщо параметр передається – він не може бути порожнім і має відповідати формату email.</td>
    </tr>
    <!-- Третій рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>PayerPhone</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">телефон клієнта, на який протягом 15-20 хв після виклику CreateOrder відправиться нагадування про неоплачене замовлення (смс або вайбер). </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Якщо параметр передається, він не може бути порожнім і повинен відповідати формату телефону.
</td>
    </tr>
    <!-- Четвертий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Merchant.UrlNotify</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">URL для надсилання нотифікації за успішним платежем (callback), див. [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]]. </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Параметр не може бути порожнім і має відповідати формату URL.
</td>
    </tr>
    <!-- П'ятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Merchant.Param1</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">індивідуальний параметр партнера Param1 узгоджується з EasyPay </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
   
    </tr>
</table>
<br>
'''<code>reccurentPayment</code> -''' інформація для створення рекурентного платежу на основі поточного. Рекурентний платіж буде створений за розкладом, якщо основний платіж виконаний за допомогою інструментів card, Rcard, Vcard, LifeMoney
<br><syntaxhighlight lang="json-object" line="1">
"reccurent": {
    "cronRule": "string",
    "dateExpire": "2019-01-21T08:24:38.741Z",
    "dateRun": "2019-01-20T08:24:38.741Z",
    "properties":
      {
        "failedCount":0,
        "failedRule":"string",
        "amount":1.0,
        "UrlNotify":"http://notify.url"
      }
</syntaxhighlight>'''Опис параметрів'''<table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;">
    <!-- Перший рядок - заголовок -->
    <tr>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Параметр</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Характеристика</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Коментарій</th>
    </tr>
    <!-- Другий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>cronRule</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">правило у cron-форматі, з якою періодичністю повторювати рекурентний платіж, наприклад 10 20 15 * * (кожного 15 числа місяця о 20:10). </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Якщо ця властивість порожня, значить рекурентний платіж виконуватиметься на вимогу продавця.
'''Плануйте перше виконання рекуренту щонайменше 20 хвилин від дати успішного платежу.'''</td>
    </tr>
    <!-- Третій рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>dateExpire</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">дата, після якої не проводити рекурентний платіж.</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">магазину чи послуги
передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.
</td>
    </tr>
    <!-- Четвертий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>dateRun</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">дата першого запуску рекурентного платежу (опціонально). </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Якщо не заданий, перший запуск розраховується за '''recurrent/cronRule'''
</td>
    </tr>
    <!-- П'ятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>properties</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">додаткові параметри (опціонально) </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">
* '''reccurent/properties/amount -''' сума кожного рекурентного платежу, наступного після основної оплати (опціонально)
* '''reccurent/properties/failedCount -''' ккількість поспіль неуспішних викликів рекурентних оплат, після чого рекурентний платіж видаляється (опціонально). За замовчуванням - 4 спроби: при неуспіху - повторюється спроба кожні 20-30 хвилин, 4 неуспішних спроби поспіль по одному recurrentId - і рекурент відключається. Якщо після 3 неуспішних спроб була 1 успішна, то лічильник неуспішних для цього рекурента скидається.
* '''reccurent/properties/failedRule -''' cron-правило (період) повтору при неуспішному виклику рекурента (опціонально)
* '''reccurent/properties/UrlNotify''' - URL для надсилання нотифікації за успішним '''рекурентним''' платежем (callback), див. [[MerchantAPI#Повідомлення про платіж|Повідомлення про платіж]]
</td>
  </table> 
<br>
'''<code>bankingDetails</code> -''' передача банківських реквізитів для перерахування коштів у випадку, якщо банківські реквізити можуть змінюватися щодо різних платежів одного сервісу продавця. На стороні EasyPay має бути увімкнено режим "Отримувати реквізити із запиту".
<br>
<syntaxhighlight lang="json" line="1">
{
  "bankingDetails": {
    "payee": {
      "id": "123664578",
      "name": "департамент патрульної поліції",
      "bank": {
        "name": "пат пумб",
        "mfo": "330556",
        "account": "123654778889"
      }
    },
    "payer": { "name": "Иванова Мария" },
    "narrative": { "name": "Переказ коштів згідно договору з ФК № 111/11-П від 11.11.1111 р. за виключенням винагороди за їх переказ згідно реєстру від [work_date]р." }
  }
}
</syntaxhighlight>'''Опис параметрів''' <table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;"><tr>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Параметр</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Характеристика</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Коментарій</th><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>payee/ID</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">код одержувача</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">ЄДРПОУ або ІПН</td>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>payee/Name</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">одержувач </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">до 38 символів
</td>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Payee/Bank/Name</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">банк отримувача</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">до 38 символів
</td>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Payee/Bank/Mfo</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">МФО банку </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">може не заповнюватися, якщо Payee/Bank/Account містить IBAN</td>
   
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Payee/Bank/Account</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">р/р одержувача або IBAN </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">
</td>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Payer/Name</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">платник </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">
</td>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>Narrative/Name</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">призначення платежу </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">до 157 символів</td>
    </tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>bankingDetailsId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">повну структуру bankingDetails можна не передавати, для цього достатньо передати  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
</tr><tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>bankingDetailsId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">
ідентифікатор банківських реквізитів із довідника, який узгоджений із конкретним партнером та перебуває в системі EasyPay.
</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">
</td>
  </table>
'''Splitting''' - інформація щодо сплітування (розщеплення) платежу.
Частина загальної суми з order/amount розподіляється відповідно до інформації в splitting/items/value, а залишок - йде на основні реквізити з bankingDetails (або bankingDetailsId). На стороні EasyPay має бути увімкнено режим “Отримувати реквізити із запиту
Структура '''items''' це масив. Основний платіж буде розщеплений стільки платежів, скільки міститься у цьому масиві плюс залишок. Кожен розщеплений платіж буде надіслано на відповідні банківські реквізити <code>items/bankingDetails</code>. Залишок коштів буде надіслано на реквізити основного платежу з <code>BankingDetails</code> або <code>bankingDetailsId,</code> які потрібно обов'язково вказувати під час сплітування.
<br>
<syntaxhighlight lang="json" line="1">
  },
"splitting": {
    "items": [
      {
    "serviceKey": "string",
    "orderId": "string"
    "bankingDetailsId": "string",
    "bankingDetails": {
                      "payee": {
                                    "id": "string",
                                    "name": "string",
                                      "bank": {
                                                    "name": "string",
                                                    "mfo": "string",
                                                    "account": "string"
                                                  }
                                    },
                      "payer": {
                                      "name": "string"
                                    },
                      "narrative": {
                                      "name": "string"
                                    }
                                  },
        "unit": "Amount|Percent",
        "value": 0,
        "withCommission": false|true
</syntaxhighlight><table style="border-collapse: collapse; width: 100%; font-family: Roboto, sans-serif; font-weight: 100; font-size: 0.8em; color: #333;">
    <!-- Перший рядок - заголовок -->
    <tr>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Параметр</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Характеристика</th>
      <th style="border: none; border-bottom: 1px solid #d3d3d3; text-align: center; padding: 8px;">Коментарій</th>
    </tr>
    <!-- П'ятий рядок -->    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/serviceKey</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">необов'язковий параметр. Ідентифікатор послуги, за якою ініціюється зарахування спліту (частини) платежу.  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Якщо параметр відсутній, використовується значення ServiceKey з тіла запиту CreateOrder'''.'''
</td>
</tr>
    <!-- П'ятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/orderId</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">необов'язковий параметр. Ідентифікатор внутрішнього замовлення Мерчант для маркування конкретного спліту (частини) платежу.  </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Якщо параметр відсутній, використовується значення OrderId, передане в тілі запиту CreateOrder.</td></tr>
    <!-- П'ятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/bankingDetails</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">банківські реквізити кожного розщепленого платежу. </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
</tr>           
    <!-- Восьмий рядок->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>AppId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ідентифікатор торгової точки партнера </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td>
      </tr>
  <!-- Десятий рядок->
      <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>AppId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ідентифікатор торгової точки партнера </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td>
  </table>
 
      <!-- Десятий рядок->
      <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>AppId</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">ідентифікатор торгової точки партнера </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)</td>
      </tr>
    <!-- П'ятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/unit</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">може бути '''Amount''' (сума розщепленого платежу в грн.) або '''Percent''' (сума розщепленого платежу вважається відсотком від загального). </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
    </tr>   
    <!-- П'ятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/value</code>''' </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">значення у цифрах. </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;"></td>
      </tr>
    <!-- П'ятий рядок -->
    <tr>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">'''<code>items/withCommission - true/false</code>'''</td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; padding-right: 10px; text-align: left;">Вказує з якого з одержувачів слід утримати внутрішню комісію. </td>
      <td style="border: none; border-bottom: 1px solid #d3d3d3; text-align: left;">Сума комісії розраховується із загальної суми платежу, а утримується - з першого одержувача зі '''splitting,''' у якого '''withCommission=true'''. Якщо ні в кого з '''splitting''' не зазначено '''withCommission=true''', то комісія втікає з “основного” одержувача, вказаного в bankingDetails.
Якщо у всіх значення '''withCommission=false''' (або не передали), то комісія утримається з "основного одержувача", вказаного в параметрі '''bankingDetails'''
Якщо всі значення '''withCommission=true,''' то комісія утримається з першого одержувача, зазначеного в splitting. Залишок буде надіслано на реквізити основного платежу з '''bankingDetails''' або '''bankingDetailsId.'''
При встановленому сервісом Типі розрахунків “За актами", одержувачам перераховується повна сума, без відрахування комісії, незалежно від значення WithComission.
</td>
</tr>
    <!-- П'ятий рядок --></table>
<br>
Після виконання сплітування під кожен спліт (частини) платежу на стороні EasyPay створюється фінансова   транзакція з унікальним transactionID.
<br>
* Якщо списання грошей з картки пройшло успішно і всі реквізити для спліту вказані корректно (доступні) - всі транзакції набувають успішного статусу і по кожній транзакції відправляється колбек.
* Якщо списання грошей з картки пройшло неуспішно – запит відхиляється з кодом фінансової помилки;
* Якщо списання грошей з картки пройшло успішно, але хоча б один із реквізитів зазначено неправильно – всі транзакції спліту (частини) платежу – будуть відхилені.
<br>
Після проведення успішного списання та сплітування по кожній фінансовій транзакції в рамках спліту направляється колбек (нотифікація) про успішний платіж. Приклад коллбека (нотифікації) вказаний у [[MerchantAPI#Повідомлення про платіж|повідомлення про платіж]]'''''.'''''
<p style="border: 1px solid #4A90E2; background-color: rgba(74, 144, 226, 0.1); padding: 10px; border-radius: 8px; font-family: Arial, sans-serif; font-size: 14px; font-weight: normal; color: #333; position: relative;">
    Якщо параметр <span style="background-color: #EDEDED; padding: 2px 5px; border-radius: 4px; font-family: monospace; color: #D63384;">userPaymentInstrument</span> не є порожнім, створення платежу буде відбуватися автоматично.
</p>
Для різних інструментів передаються такі параметри:
'''userPaymentInstrument –''' інструмент оплати.
'''*Картка (PCI DSS)'''<syntaxhighlight lang="json" line="1">
"userPaymentInstrument": {
      "instrumentType": "Card",
      "pan": "5168123456780123",
      "expire": "MM/YY",
      "cvv": "string" }
</syntaxhighlight>
'''*Токенізована Карта'''<syntaxhighlight lang="json" line="1">
{"userInfo":{"phone":"380935207603"}, /Phone,під яким токенізована карта/
"userPaymentInstrument": {
      "instrumentType": "Card",
      "cardGuid": "guid", /токен картки/
}
}
</syntaxhighlight>
'''Kyivstar Money/Life Money /VodafoneMoney'''<syntaxhighlight lang="json" line="1">
"userPaymentInstrument": {
      "instrumentType": "KSMoney / LifeMoney / VodafoneMoney",
      "phone": "380xxYYYYYYY" }
</syntaxhighlight>'''ApplePay/GooglePay'''
<syntaxhighlight lang="json" line="1">
"userPaymentInstrument": {
      "instrumentType": "ApplePay / GooglePay",
      "token": “string”/Токен, отриманий від Apple | Google /
}
</syntaxhighlight>
* '''partnerInfo –''' інформація про партнера
* '''partnerInfo.name –''' найменування партнера
* '''partnerInfo.id –''' ВД (ЄДРПОУ) партнера
* '''partnerInfo.account –''' рахунок партнера (особовий рахунок/IBAN…)
*
<br>

Версія за 13:55, 12 серпня 2025

Реєстрація точки та створення сесії

Цей метод слід викликати, коли користувач вперше звертається до платіжної сторінки. Якщо браузер або пристрій змінюються, метод знову з'являється

POST /api/system/createApp

Request

headers:

"PartnerKey": "partnerName",
"locale": "ua"

Response

body: 

{
  "logoPath": "https://cdn.easypay.ua/logo/",
  "hintImagesPath": "https://cdn.easypay.ua/hint_images/",
  "apiVersion": "1.0",
  "appId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1",
  "pageId": "f3f2b678-a3c4-45ba-a865-a136fe4a62bd",
  "error": null
}

Характеристика параметрів

Параметри
Параметр Характеристика Коментарій
AppId ідентифікатор торгової точки партнера за замовчуванням, якщо не було активності за запитами,

час життя AppId - 3 місяці. З кожним запитом життя AppId автоматично продовжується.

PageId ідентифікатор сесії параметр валідний протягом 20 хв. Для кожного запиту CreateOrder потрібно використовувати унікальний PageID


Створення сесії


Даний метод створює новий екземпляр сеансу для користувача , PageId.


POST /api/system/createPage

Request

headers

"PartnerKey":  "partnerName"
"locale": "ua"
"AppId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1"

Response

body:

{
    "logoPath": "https://cdn.easypay.ua/logo/",
    "hintImagesPath": null,
    "apiVersion": "1.0",
    "appId": "a5806a5f-dbb8-496a-a23f-aab6d2fcbce1",
    "pageId": "29bd7237-6b8d-4048-b028-6efc23d05988",
    "requestedSessionId": "fa3595d3-52de-4744-9fc6-ec2d3507d5a5",
    "error": null
}

Характеристика параметрів

Параметр Характеристика Коментарій
AppId ідентифікатор торгової точки партнера за замовчуванням, якщо не було активності за запитами,

час життя AppId - 3 місяці. З кожним запитом життя AppId автоматично продовжується.

PageId ідентифікатор сесії За замовчуванням, якщо не було активності за запитами, час життя PageId - 20 хвилин. З кожним запитом життя PageId автоматично продовжується.

Створення замовлення

Перед викликом цього методу потрібно викликати один із методів:


⚠️ Важливо! Для кожного нового запиту CreateOrder потрібно використовувати унікальний PageID.

POST /api/merchant/createOrder

headers

'Content-Type': 'application/json'
'PartnerKey': 'partnerName'
'locale': 'ua'
'AppId': 'a5806a5f-dbb8-496a-a23f-aab6d2fcbce1'
'PageId': '2ce7dba6-4600-456e-b9c8-f13cacf1c85d'
'Sign': 'e0v1vIOMyNt2qSmrG5+sjAq8wOhvgDDUEyfVP21mRU4='

<br>
{
   "userInfo": {
       "phone": "string"
    },
Обов'язкові параметри:

     "order": {
       "serviceKey": "string",
       "orderId": "string",
       "description": "string",
       "amount":1.01, (decimal)

Необов'язкові параметри:
       "paymentOperation":"PaymentTokenization",
       "additionalItems": {},
       "expire": "2019-04-15T07:49:20",
       "isOneTimePay": true,
       "fields": [
          {
           "fieldName": "string",
           "fieldValue": "string",
           "fieldKey": "string",
          }
        ]
     },
  "urls": {
    "success": "string",
    "failed": "string",
    "back": "string",
  },
  "bankingDetailsId": "string",
 "bankingDetails": {
    "payee": {
      "id": "string",
      "name": "string",
      "bank": {
        "name": "string",
        "mfo": "string",
        "account": "string"
      }
    },
    "payer": {
      "name": "string",
      "id": "string"
    },
    "narrative": {
      "name": "string"
    }
  },

  "reccurent": {
    "cronRule": "string",
    "dateExpire": "2019-01-21T08:24:38.741Z",
    "dateRun": "2019-01-20T08:24:38.741Z",
    "properties":
       {
         "failedCount":0,
         "failedRule":"string",
         "amount":1.0,
         "UrlNotify":"http://notify.url"
       }
  },
 "splitting": {
    "items": [
      {
     "serviceKey": "string",
     "orderId": "string”  
     "bankingDetailsId": "string",
     "bankingDetails": {
                      "payee": {
                                     "id": "string",
                                     "name": "string",
                                      "bank": {
                                                    "name": "string",
                                                     "mfo": "string",
                                                     "account": "string"
                                                  }
                                     },
                       "payer": {
                                      "name": "string"
                                     },
                       "narrative": {
                                      "name": "string"
                                     }
                                   },
        "unit": "Amount|Percent",
        "value": 0,
        "withCommission": false|true
      }
    ]
  },
  "userPaymentInstrument": {
      "instrumentType": "Card",
      "cardGuid": "guid",
     "pan": "string",
      "expire": "MM/YY",
      "cvv": "string",
  },
 "partnerInfo": {
      "id": "string",
      "name": "string",
      "account": "string"
}
}

Опис параметрів

Параметр Характеристика Коментарій
serviceKey ідентифікатор послуги мерчанта (видає EasyPay) передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.
orderId унікальний ідентифікатор номера замовлення у системі партнера магазину чи послуги

передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.

description опис замовлення (до 120 символів) відомий лише торговцю та EasyPay

передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.

amount сума замовлення, роздільник - точка параметр валідний протягом 90 днів. Один і той же AppID може використовуватись для декількох платежів)
paymentOperation тип платіжного процесу Можливі значення:
  • PaymentTokenization - використовується для токенізації картки, якою буде сплачено це замовлення.
  • Працює лише для інструмента “карта”. Повинен бути заповнений ідентифікатор клієнта "userInfo": { "phone": "string"}
  • Якщо передано URL для колбеку, то після успішної оплати відправляється колбек про платіж та колбек про токенізацію (приклади колбеків про оплату - в Повідомлення про платіж, про токенізацію.
userInfo/phone номер телефону (або ідентифікатор) клієнта Номер телефону необхідний:
  • для отримання списку токенізованих карток (інформація буде в масиві StoredCards)
  • при оплаті із зазначенням токена картки
  • для токенізації картки після успішної оплати разом із параметром
expire час життя замовлення Після закінчення заданого часу замовлення сплатити неможливо. Час життя сторінки може відображатися на платіжній сторінці у вигляді таймера (за замовчуванням таймер вимкнено). Значення має бути більшим за поточний час на 6 хвилин. Значення за замовчуванням - 3 дні
sOneTimePay включає можливість успішно оплатити замовлення лише 1 раз за конкретним forwardUrl Значення:
  • True - за замовчуванням;
  • False - оплатити замовлення по тому самому forwardUrl можна буде кілька разів;
urls
  • back - URL для повернення на вказану сторінку з фінальної сторінки успіху EasyPay.
  • success - URL сторінки успіху, для редиректу клієнта у разі успішної оплати.
  • failed - URL сторінки помилки для редиректу клієнта у разі неуспішної оплати
  • back - На фінальній сторінці EasyPay вгорі зліва з'явиться кнопка “Повернутись назад” з посиланням на вказану URL-адресу. Параметр не може бути порожнім і повинен відповідати формату URL.
  • success - у разі, якщо не було передано urls{success,failed} для редиректу після оплати. Після оплати клієнт може не дочекатися редиректу на цей url, тому редирект не можна використовувати як індикатор успішної оплати, отримання оповіщення про успішний платіж - див. Повідомлення про платіж
  • faild - приклад get-параметрів, які приходять на url.failed та url.succes (те ж, але без errorCode):

?serviceKey=merchanttest-5310&orderId=re9r9er94jr&amount=1.20&description=

Тестове+описання+замовлення&transactionId=722443797&date=2019-06-11T14:49:07&recurrentId=&errorCode=PAYMENT_ALFABANK_-2006&sign=

eYkFYixpB3wnKoZDzkAiqWgdMkeHETDWmDsFMCaPO44=


Необов'язкові додаткові поля

additionalItems необов'язкові додаткові параметри, наприклад:

"additionalItems":{
  "PayerEmail":"[email protected]",
  "PayerPhone":"380930007603",
  "Merchant.UrlNotify":"https://notify.url",
  "Merchant.Param1":"CustomValue",
  "CurrencyAmountLabel":"123.56$"
},

Опис параметрів

Параметр Характеристика Коментарій
PayerEmail емейл клієнта для оповіщення його у разі неоплаченого замовлення та для автоматичного заповнення поля “Надіслати квитанцію на email” на сторінці оплати. Якщо параметр передається – він не може бути порожнім і має відповідати формату email.
PayerPhone телефон клієнта, на який протягом 15-20 хв після виклику CreateOrder відправиться нагадування про неоплачене замовлення (смс або вайбер). Якщо параметр передається, він не може бути порожнім і повинен відповідати формату телефону.
Merchant.UrlNotify URL для надсилання нотифікації за успішним платежем (callback), див. Повідомлення про платіж. Параметр не може бути порожнім і має відповідати формату URL.
Merchant.Param1 індивідуальний параметр партнера Param1 узгоджується з EasyPay


reccurentPayment - інформація для створення рекурентного платежу на основі поточного. Рекурентний платіж буде створений за розкладом, якщо основний платіж виконаний за допомогою інструментів card, Rcard, Vcard, LifeMoney


"reccurent": {
    "cronRule": "string",
    "dateExpire": "2019-01-21T08:24:38.741Z",
    "dateRun": "2019-01-20T08:24:38.741Z",
    "properties":
       {
         "failedCount":0,
         "failedRule":"string",
         "amount":1.0,
         "UrlNotify":"http://notify.url"
       }

Опис параметрів

Параметр Характеристика Коментарій
cronRule правило у cron-форматі, з якою періодичністю повторювати рекурентний платіж, наприклад 10 20 15 * * (кожного 15 числа місяця о 20:10). Якщо ця властивість порожня, значить рекурентний платіж виконуватиметься на вимогу продавця. Плануйте перше виконання рекуренту щонайменше 20 хвилин від дати успішного платежу.
dateExpire дата, після якої не проводити рекурентний платіж. магазину чи послуги

передається партнеру після реєстрації у системі EasyPay відповідальним менеджером.

dateRun дата першого запуску рекурентного платежу (опціонально). Якщо не заданий, перший запуск розраховується за recurrent/cronRule
properties додаткові параметри (опціонально)
  • reccurent/properties/amount - сума кожного рекурентного платежу, наступного після основної оплати (опціонально)
  • reccurent/properties/failedCount - ккількість поспіль неуспішних викликів рекурентних оплат, після чого рекурентний платіж видаляється (опціонально). За замовчуванням - 4 спроби: при неуспіху - повторюється спроба кожні 20-30 хвилин, 4 неуспішних спроби поспіль по одному recurrentId - і рекурент відключається. Якщо після 3 неуспішних спроб була 1 успішна, то лічильник неуспішних для цього рекурента скидається.
  • reccurent/properties/failedRule - cron-правило (період) повтору при неуспішному виклику рекурента (опціонально)
  • reccurent/properties/UrlNotify - URL для надсилання нотифікації за успішним рекурентним платежем (callback), див. Повідомлення про платіж


bankingDetails - передача банківських реквізитів для перерахування коштів у випадку, якщо банківські реквізити можуть змінюватися щодо різних платежів одного сервісу продавця. На стороні EasyPay має бути увімкнено режим "Отримувати реквізити із запиту".

{
  "bankingDetails": {
    "payee": {
      "id": "123664578",
      "name": "департамент патрульної поліції",
      "bank": {
        "name": "пат пумб",
        "mfo": "330556",
        "account": "123654778889"
      }
    },
    "payer": { "name": "Иванова Мария" },
    "narrative": { "name": "Переказ коштів згідно договору з ФК № 111/11-П від 11.11.1111 р. за виключенням винагороди за їх переказ згідно реєстру від [work_date]р." }
  }
}

Опис параметрів

Параметр Характеристика Коментарій
payee/ID код одержувача ЄДРПОУ або ІПН
payee/Name одержувач до 38 символів
Payee/Bank/Name банк отримувача до 38 символів
Payee/Bank/Mfo МФО банку може не заповнюватися, якщо Payee/Bank/Account містить IBAN
Payee/Bank/Account р/р одержувача або IBAN
Payer/Name платник
Narrative/Name призначення платежу до 157 символів
bankingDetailsId повну структуру bankingDetails можна не передавати, для цього достатньо передати
bankingDetailsId


ідентифікатор банківських реквізитів із довідника, який узгоджений із конкретним партнером та перебуває в системі EasyPay.



Splitting - інформація щодо сплітування (розщеплення) платежу.

Частина загальної суми з order/amount розподіляється відповідно до інформації в splitting/items/value, а залишок - йде на основні реквізити з bankingDetails (або bankingDetailsId). На стороні EasyPay має бути увімкнено режим “Отримувати реквізити із запиту

Структура items це масив. Основний платіж буде розщеплений стільки платежів, скільки міститься у цьому масиві плюс залишок. Кожен розщеплений платіж буде надіслано на відповідні банківські реквізити items/bankingDetails. Залишок коштів буде надіслано на реквізити основного платежу з BankingDetails або bankingDetailsId, які потрібно обов'язково вказувати під час сплітування.

  },
 "splitting": {
    "items": [
      {
     "serviceKey": "string",
     "orderId": "string" 
     "bankingDetailsId": "string",
     "bankingDetails": {
                      "payee": {
                                     "id": "string",
                                     "name": "string",
                                      "bank": {
                                                    "name": "string",
                                                     "mfo": "string",
                                                     "account": "string"
                                                  }
                                     },
                       "payer": {
                                      "name": "string"
                                     },
                       "narrative": {
                                      "name": "string"
                                     }
                                   },
        "unit": "Amount|Percent",
        "value": 0,
        "withCommission": false|true
Параметр Характеристика Коментарій
items/serviceKey необов'язковий параметр. Ідентифікатор послуги, за якою ініціюється зарахування спліту (частини) платежу. Якщо параметр відсутній, використовується значення ServiceKey з тіла запиту CreateOrder.
items/orderId необов'язковий параметр. Ідентифікатор внутрішнього замовлення Мерчант для маркування конкретного спліту (частини) платежу. Якщо параметр відсутній, використовується значення OrderId, передане в тілі запиту CreateOrder.
items/bankingDetails банківські реквізити кожного розщепленого платежу.
items/unit може бути Amount (сума розщепленого платежу в грн.) або Percent (сума розщепленого платежу вважається відсотком від загального).
items/value значення у цифрах.
items/withCommission - true/false Вказує з якого з одержувачів слід утримати внутрішню комісію. Сума комісії розраховується із загальної суми платежу, а утримується - з першого одержувача зі splitting, у якого withCommission=true. Якщо ні в кого з splitting не зазначено withCommission=true, то комісія втікає з “основного” одержувача, вказаного в bankingDetails.

Якщо у всіх значення withCommission=false (або не передали), то комісія утримається з "основного одержувача", вказаного в параметрі bankingDetails

Якщо всі значення withCommission=true, то комісія утримається з першого одержувача, зазначеного в splitting. Залишок буде надіслано на реквізити основного платежу з bankingDetails або bankingDetailsId.

При встановленому сервісом Типі розрахунків “За актами", одержувачам перераховується повна сума, без відрахування комісії, незалежно від значення WithComission.


Після виконання сплітування під кожен спліт (частини) платежу на стороні EasyPay створюється фінансова   транзакція з унікальним transactionID.

  • Якщо списання грошей з картки пройшло успішно і всі реквізити для спліту вказані корректно (доступні) - всі транзакції набувають успішного статусу і по кожній транзакції відправляється колбек.
  • Якщо списання грошей з картки пройшло неуспішно – запит відхиляється з кодом фінансової помилки;
  • Якщо списання грошей з картки пройшло успішно, але хоча б один із реквізитів зазначено неправильно – всі транзакції спліту (частини) платежу – будуть відхилені.


Після проведення успішного списання та сплітування по кожній фінансовій транзакції в рамках спліту направляється колбек (нотифікація) про успішний платіж. Приклад коллбека (нотифікації) вказаний у повідомлення про платіж.

Якщо параметр userPaymentInstrument не є порожнім, створення платежу буде відбуватися автоматично.


Для різних інструментів передаються такі параметри:

userPaymentInstrument – інструмент оплати.

*Картка (PCI DSS)

 "userPaymentInstrument": {
      "instrumentType": "Card",
      "pan": "5168123456780123",
      "expire": "MM/YY",
      "cvv": "string" }

*Токенізована Карта

{"userInfo":{"phone":"380935207603"}, /Phone,під яким токенізована карта/

"userPaymentInstrument": {
      "instrumentType": "Card",
      "cardGuid": "guid", /токен картки/
 }
}

Kyivstar Money/Life Money /VodafoneMoney

"userPaymentInstrument": {
      "instrumentType": "KSMoney / LifeMoney / VodafoneMoney",
      "phone": "380xxYYYYYYY" }

ApplePay/GooglePay

"userPaymentInstrument": {
      "instrumentType": "ApplePay / GooglePay",
      "token": “string”/Токен, отриманий від Apple | Google /
 }
  • partnerInfo – інформація про партнера
  • partnerInfo.name – найменування партнера
  • partnerInfo.id – ВД (ЄДРПОУ) партнера
  • partnerInfo.account – рахунок партнера (особовий рахунок/IBAN…)