Skip to Content
Разовые платежиПротокол XML

Протокол XML v2.9

XML API платформы Callisto Mobile Payment. Все запросы отправляются методом POST с XML-телом на один адрес; тип операции определяется именем дочернего элемента внутри <Request> — например <CreateInvoiceRequest>.

Адрес APIhttps://pay-sandbox.digitalspb.com
Справочник и MCPhttps://i-free.money/developers/ru/sandbox
ПараметрЗначение
Content-Typetext/xml
Методвсегда POST, тип операции — по имени дочернего элемента <Request>

Версия протокола: 2.9.0

Обязательные HTTP-заголовки

Callisto-Protocol-Version: 2 SignatureVersion: 3 Content-Type: text/xml

Структура запроса

Каждый запрос обёрнут в корневой элемент <Request> с обязательным блоком аутентификации <Header>. Ответ приходит в корневом <Response> с полями ResultCode и ResultDescription.

Каркас запроса
<?xml version="1.0" encoding="utf-8"?> <Request> <Header> <Authentication> <Login>demo_login</Login> <NowUtc>20210329200008</NowUtc> <Signature>802c4e0aa711a24888ea571dd8df6608d03e74bfe7cf8be040fb8b9aba8d3a4f</Signature> </Authentication> <RequestAttempt>1</RequestAttempt> </Header> <!-- тело операции: <CreateInvoiceRequest>, <GetInvoiceRequest>, … --> </Request>

Подпись

Подпись передаётся в Header/Authentication/Signature. Дополнительно применяется whitelist IP-адресов на уровне ProjectID.

Формула
Signature = LOWERCASE(HMACSHA256(Password, Login + LOWERCASE(HMACSHA256(Password, NowUtc))))

NowUtc в XML-протоколе имеет формат yyyyMMddHHmmss — без разделителей и без Z, в отличие от ISO 8601 в JSON API. Отклонение от системного времени более 20 минут даёт ResultCode=101.

Расчёт подписи XML

LOGIN=demo_login PASSWORD=demo_password NOW=$(date -u +%Y%m%d%H%M%S) INNER=$(printf '%s' "$NOW" \ | openssl dgst -sha256 -hmac "$PASSWORD" | awk '{print $NF}') SIG=$(printf '%s%s' "$LOGIN" "$INNER" \ | openssl dgst -sha256 -hmac "$PASSWORD" | awk '{print $NF}')

Группы операций

ГруппаОперацииНазначение
InvoiceManagement5Счета — создание, авторизация, получение, отмена, возврат
CustomerContract3Контракты клиента — создание, авторизация, отмена
CustomerBilling2Проверка поддержки биллинга и доступные методы оплаты

Вне групп спека описывает ещё две операции — ConfirmPaymentTransaction и SendInvoiceContent. Песочница их не реализует: запрос с таким корневым элементом получает HTTP 400 и ResultCode 400 с текстом Unknown operation element.