Авторизовать контракт PIN-кодом
JSON API v3
POST /api/v3/projects/{projectId}/contracts/{contractId}/authorize
Подтверждает созданный контракт с помощью PIN-кода, отправленного абоненту по SMS.
Payload подписи v4: {contract_id}{merchant_contract_id}{pin_code}{client_ip}
Параметры запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
projectId | integer (int32) | да | |
contractId | string (uuid) | да |
Тело запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
client_ip | string | — | |
pin_code | string | — |
Пример запроса
{
"pin_code": "1234"
}Пример ответа
{
"success": true,
"data": {
"contract_id": "0d0f3c58-9b1e-4a77-9a0c-000000000002",
"status": "active"
}
}Коды ответов
| Код | Описание |
|---|---|
200 | Контракт авторизован |
400 | Ошибка валидации или бизнес-ошибка запроса |
401 | Ошибка аутентификации (отсутствует/неверна подпись или временная метка) |
403 | Доступ к проекту запрещён или IP не в белом списке |
404 | Контракт не найден |
422 | Ошибка бизнес-валидации |
500 | Непредвиденная ошибка платформы |
503 | Сервис временно недоступен |
XML API v2.9
POST /API/XML/InvoiceManagementService.ashx
Авторизует контракт абонента с помощью PIN-кода. Тип XML-запроса: <AuthorizeCustomerContractRequest>.
После создания контракта Платформа отправляет SMS на MSISDN с PIN-кодом. Приложение продавца должно передать этот PIN-код для авторизации контракта. Если PIN-код верный, контракт становится «живым» — до его истечения все последующие платежи не требуют дополнительных подтверждений.
HTTP-заголовки:
Callisto-Protocol-Version: 2SignatureVersion: 3
Параметры запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
Callisto-Protocol-Version | 2 | да | Версия протокола |
SignatureVersion | integer (int32, по умолчанию 1) | — | Номер версии подписи |
Тело запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
AuthorizeCustomerContractRequest | object | да | |
AuthorizeCustomerContractRequest. | integer (int32) | да | Идентификатор проекта в системе Платформы. Выдаётся при заведении проекта. |
AuthorizeCustomerContractRequest. | string | — | IP-адрес, с которого клиент выполняет запрос. По умолчанию обязателен (настраивается в параметрах проекта). |
AuthorizeCustomerContractRequest. | object | да | Ссылка на контракт абонента для операций подтверждения и отмены. |
AuthorizeCustomerContractRequest. | string (uuid) | да | Уникальный идентификатор контракта, который нужно авторизовать или отменить |
AuthorizeCustomerContractRequest. | string | — | Идентификатор контракта в системе продавца |
AuthorizeCustomerContractRequest. | object | — | Тип клиента платформы. Песочница его не поддерживает — используйте MobilePhoneCustomer. |
AuthorizeCustomerContractRequest. | integer (int32) | да | |
AuthorizeCustomerContractRequest. | string | — | |
AuthorizeCustomerContractRequest. | object | — | Идентификация клиента по номеру мобильного телефона. Основной идентификатор — MSISDN. |
AuthorizeCustomerContractRequest. | string | да | MSISDN клиента (Mobile Subscriber Integrated Services Digital Number) в международном формате без знака ’+’ |
AuthorizeCustomerContractRequest. | string (email) | — | Адрес электронной почты клиента |
AuthorizeCustomerContractRequest. | object | — | Идентификация клиента по банковской карте. Используется в сценариях оплаты картой. |
AuthorizeCustomerContractRequest. | string (email) | — | Адрес электронной почты клиента |
AuthorizeCustomerContractRequest. | string | да | Имя источника (Source Name) в системе продавца (уникально для сервиса партнёра). Должно быть уникальным идентификатором (например, имя ресурса/бренда), гарантирующим глобальную уникальность пары параметров source+MerchantCustomerId во всех системах. |
AuthorizeCustomerContractRequest. | string | да | Код страны (ISO 3166-1 alpha-2, в нижнем регистре) |
AuthorizeCustomerContractRequest. | string | да | Идентификатор клиента в системе продавца (уникальный) |
AuthorizeCustomerContractRequest. | object | — | Идентификация карточного клиента без полного набора данных. Используется при первой оплате картой, когда реквизиты ещё не известны. |
AuthorizeCustomerContractRequest. | string | — | Имя источника (Source Name) в системе продавца (уникально для сервиса партнёра). Должно гарантировать глобальную уникальность пары параметров source+MerchantCustomerId. |
AuthorizeCustomerContractRequest. | string | да | Код страны (ISO 3166-1 alpha-2, в нижнем регистре) |
AuthorizeCustomerContractRequest. | string | да | Идентификатор клиента в системе продавца (уникальный) |
AuthorizeCustomerContractRequest. | string (email) | — | Адрес электронной почты клиента |
AuthorizeCustomerContractRequest. | object | — | Тип клиента платформы. Песочница его не поддерживает — используйте MobilePhoneCustomer, BankCardCustomer или UndefinedBankCardCustomer. |
AuthorizeCustomerContractRequest. | string | — | |
AuthorizeCustomerContractRequest. | string | — | |
AuthorizeCustomerContractRequest. | object | да | Данные авторизации — PIN-код, введённый абонентом для подтверждения платежа или контракта. |
AuthorizeCustomerContractRequest. | string | да | PIN-код, введённый абонентом для подтверждения контракта/инвойса |
AuthorizeCustomerContractRequest. | object | — | Тестовая информация для авторизации |
AuthorizeCustomerContractRequest. | boolean | да | |
Header | object | да | Заголовок запроса с аутентификацией. Присутствует в каждом запросе API. |
Header. | object | да | Данные аутентификации запроса. Все три поля обязательны в каждом запросе. |
Header. | string | да | Логин продавца, назначенный Платформой |
Header. | string | да | Текущее время UTC в формате yyyyMMddHHmmss. Не должно отличаться от системного времени платформы более чем на 20 минут. |
Header. | string | да | HMAC-подпись запроса. Вычисляется как: LOWERCASE(HMACSHA256(Password, Login + LOWERCASE(HMACSHA256(Password, NowUtc)))) |
Header. | integer (int32) | — | Порядковый номер запроса инвойса (для идемпотентности). Начинается с 0. |
Header. | object | — | Служебный блок платформы в заголовке запроса. Песочница его не читает: присланный блок игнорируется и не влияет ни на подпись, ни на обработку. |
Header. | string | — | |
Header. | object | — | |
Header. | string (date-time) | — |
Пример запроса
<?xml version="1.0" encoding="utf-8"?>
<Request>
<Header>
<Authentication>
<Login>demo_login</Login>
<NowUtc>20260921120000</NowUtc>
<Signature>0000000000000000000000000000000000000000000000000000000000000000</Signature>
<SignatureVersion>3</SignatureVersion>
</Authentication>
</Header>
<AuthorizeCustomerContractRequest>
<ProjectID>1001</ProjectID>
<ClientIP>127.0.0.1</ClientIP>
<CustomerContractInfo>
<ContractID>0d0f3c58-9b1e-4a77-9a0c-000000000002</ContractID>
</CustomerContractInfo><AuthorizeInfo><PinCode>1234</PinCode></AuthorizeInfo>
</AuthorizeCustomerContractRequest>
</Request>Пример ответа
<?xml version="1.0" encoding="utf-8"?>
<Response>
<AuthorizeCustomerContractResponse />
<ResultCode>0</ResultCode>
<ResultDescription>OK</ResultDescription>
</Response>