- Параметри протоколу
- Аутентифікація та ідентифікація
- Формати параметрів
- Команди
- Коди відповіді на запит
- Результати виконання команд
- Статуси операції
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 Параметри відповіді на команди
ResultCode
ResultMessage
ResultData
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 | Скасовано контрактором |