- Параметри протоколу
- Аутентифікація та ідентифікація
- Формати параметрів
- Команди
- Коди відповіді на запит
- Результати виконання команд
- Статуси операції
1. Параметри протоколу
1.1 Вступ
Контрактор і сервер обмінюються повідомленнями через HTTP методом POST у форматі text/xml. Кодування повідомлень — UTF-8.
HTTP-заголовок Content-Type вказує на формат повідомлення:
Content-Type: text/xml; charset=utf-8
1.2 URL сервісу
Усі запити надсилаються на адресу:
https://core.c-b-g.company/ContractorApi.php
1.3 Відповідь сервера
- Успіх: HTTP
200 OKта<ReturnCode>0</ReturnCode><ReturnMessage>OK</ReturnMessage> - Помилки: інші
ReturnCode, пояснення вReturnMessage.
Відсутність відповіді або HTTP-код який відрізняється від 200 не означає відмову. Повторіть запит після вирішення проблем.
2. Аутентифікація та ідентифікація
2.1 Ідентифікація Контрактора
HTTP-заголовок:
X-GC-Auth-Point: <номер точки>
2.2 Аутентифікація запиту за ЕЦП
HTTP-заголовок:
X-GC-Auth-Sign: <підпис у Base64>
- Алгоритм: RSA/SHA1
- Підпис формується за тілом запиту
2.3 ЕЦП відповіді сервера
Сервер додає підпис в заголовок відповіді:
X-GC-Auth-Sign: <підпис у Base64>
3. Формати параметрів
3.1 Ідентифікатор операції (OperationId)
Унікальний рядок (до 64 символів), напр.:
"1112""1113_1228""1114_12282359"
3.2 Ідентифікатор сервісу (ServiceId)
Унікальний ідентифікатор типу сервісу. Доступні сервіси — в Каталозі.
3.3 Обсяг угоди (Volume)
Типи:
- A — кількість (у.о., штуки)
- V — вартість (в UAH)
Наприклад: "12345.012V"
3.4 Позначення
- INT - рядок цифр, що містить ціле невід'ємне число, не більше 2^16, наприклад, "12345";
- LONG - рядок цифр, що містить ціле невід'ємне число не більше 2^32, наприклад, "12345";
- VARCHAR(n) - рядок довільних символів, довжиною трохи більше n, наприклад, "qwerty";
- MONEY - рядок, що містить невід'ємне число фіксованої точності від 0 до 4 знаків у дробовій частині з роздільником крапка, та з непустою цілою частиною, наприклад, "1.0000" "0.01";
- VOLUME - рядок, що містить значення типу MONEY, об'єднаний з типом обсягу операції (A або V) шляхом об'єднання рядків, наприклад, "12345.012V";
- DATETIME - рядок, що містить дату та час у форматі YYYY-MM-DDTHH:MM:SS. Приклад: "2025-01-01T15: 52:50";
- PARAMS – рядок, який містить значення реквізитів конкатенованих символом “;”.
4. Команди
4.1 Типи команд
Operation— провести операціюCheck— перевірити стан операції
4.2 Параметри відповіді на команди
ResultCodeResultMessageResultData
4.3 Команда Operation
Параметри запиту:
| Назва | Тип | Обов’язково | Приклад |
|---|---|---|---|
| OperationId | VARCHAR(64) | + | 123_250509 |
| ServiceId | INT | + | 1 |
| Volume | MONEY | +* | 1 |
| Price | MONEY | +* | 1.12 |
| Params | PARAMS | + | 380913016166 |
| ConfirmMode | INT | - | 1 |
| Timeout | INT | - | 30 |
| OrderId | INT | - | 123 |
| Timestamp | INT | - | 1194966781 |
| Paid | MONEY | - | 10.30 |
| TerminalId | INT | - | 21 |
* — хоча б один із параметрів обов’язковий: Volume або Price
Приклад запиту:
<OperationRequest>
<Commands>
<OperationRequestCommand>
<ServiceId>1</ServiceId>
<OperationId>125206188472552900</OperationId>
<Volume>1</Volume>
<Params>380913016166</Params>
<Timeout>30</Timeout>
</OperationRequestCommand>
</Commands>
</OperationRequest>
Приклад відповіді:
<Response>
<ReturnCode>0</ReturnCode>
<ReturnMessage>OK</ReturnMessage>
<Commands>
<OperationResponseCommand>
<ResultCode>412</ResultCode>
<ResultMessage>Очікується підтвердження або скасування операції</ResultMessage>
<OperationId>125206188472552900</OperationId>
<Id>14507921</Id>
</OperationResponseCommand>
</Commands>
</Response>
4.4 Команда Check
Параметри запиту:
| Назва | Тип | Приклад |
|---|---|---|
| OperationId | VARCHAR(64) | 123_250509 |
Приклад запиту:
<CheckRequest>
<Commands>
<CheckRequestCommand>
<OperationId>125206188472552900</OperationId>
</CheckRequestCommand>
</Commands>
</CheckRequest>
Приклад відповіді:
<Response>
<ReturnCode>0</ReturnCode>
<ReturnMessage>OK</ReturnMessage>
<Commands>
<CheckResponseCommand>
<ResultCode>412</ResultCode>
<ResultMessage>Очікується підтвердження або скасування операції</ResultMessage>
<OperationId>125206188472552900</OperationId>
</CheckResponseCommand>
</Commands>
</Response>
5. Коди відповіді на запит (ReturnCode)
| Код | Повідомлення |
|---|---|
| 0 | Успішно |
| 101 | Внутрішня помилка сервера |
| 201 | Неправильний формат запиту або помилки при спробі декомпресії тіла повідомлення |
| 202 | Потрібен метод POST |
| 203 | Потрібен SSL |
| 204 | Тайм-аут на читання запиту вичерпано, клієнт передає дані надто повільно |
| 205 | Потрібен http-заголовок Content-Length |
| 206 | Розмір запиту перевищує максимально допустимий (Максимум - 1048576 байт (1 Мб)) |
| 207 | Неприпустиме значення http-заголовка Content-Type |
| 208 | Неприпустиме значення http-заголовка Content-Encoding |
| 209 | Відсутність або помилка формату http-заголовків |
| 210 | Відмова сервера в авторизації запиту |
| 301 | Неправильно вказано ідентифікатор точки контрактора |
6. Результати виконання команд (ResultCode)
| Код | Повідомлення |
|---|---|
| 0 | Команда виконана успішно |
| 304 | Неправильно вказано ідентифікатор сервісу (ServiceId) |
| 302 | Неправильно вказано ідентифікатор операції |
| 305 | Неправильно вказано обсяг операції |
| 306 | Неправильно вказані реквізити операції |
| 307 | Неправильно вказано режим підтвердження операції |
| 308 | Неправильно вказано тайм-аут операції |
| 309 | Неправильно вказано ідентифікатор чека |
| 310 | Неправильно вказано дату/час формування операції |
| 311 | Неправильно вказано суму оплати клієнтом |
| 312 | Неправильно вказано ідентифікатор терміналу |
| 313 | Неправильно вказана дата |
| 315 | Сума менша за допустиму |
| 314 | Сума більша за допустиму |
| 401 | Команда відхилена з технічних причин |
| 402 | Команда виконана Неуспішно |
| 410 | Команда знаходиться на виконанні. Перевірте статус |
| 418 | Параметри не пройшли валідацію на стороні провайдера |
| 404 | Операція знаходиться на обробці |
| 405 | Операція з таким ідентифікатором вже існує |
| 406 | Операція з таким ідентифікатором не існує |
| 407 | Операція успішно оброблена |
| 408 | Операція відхилена системою |
| 409 | Сервіс тимчасово недоступний |
| 411 | Перевищено ліміт команд у черзі |
| 412 | Очікується підтвердження або скасування операції |
| 413 | Очікується оплата операції через мерчант |
| 414 | Запит по операції прийнято |
| 415 | Операцію скасовано контрактором |
| 416 | Підтверджену операцію неможливо скасувати |
| 417 | У процесі виконання |
| 418 | Параметри не пройшли валідацію на стороні провайдера |
| 419 | Перевірка не вдалася |
| 420 | Відмова від провайдера |
| 421 | Транзакція неуспішна. Кошти повернуто платнику або на баланс |
| 422 | Очікуються додаткові параметри платежу |
| 423 | Очікується завершення транзакції |
| 512 | Платіж вже існує |
| 505 | Платіж не прийнято |
| 506 | Валідація провалена під час перевірки достатності даних |
| 507 | Валідацію провалено під час перевірки підпису |
| 508 | Валідація провалена під час перевірки параметрів платежу |
| 509 | Валідацію провалено під час перевірки суми платежу |
| 510 | Платіж скасовано |
| 511 | Недостатньо коштів на балансі у контрактора. Поповніть баланс |
7. Статуси операції (ResultCode)
| Код | Опис |
|---|---|
| 404 | В обробці – повторіть Check |
| 407 | Успішно |
| 408 | Відхилено |
| 412 | Очікується підтвердження або скасування |
| 415 | Скасовано контрактором |