Skip to Content

Создать контракт абонента

POST /api/v3/projects/{projectId}/contracts

Инициирует привязку абонента (как правило, номера мобильного телефона) для повторных платежей в рамках проекта.

Payload подписи v4: {merchant_contract_id}{customerPayload}{pin_code}{client_ip}

Параметры запроса

ПолеТипОбяз.Описание
projectIdinteger (int32)да

Тело запроса

ПолеТипОбяз.Описание
client_ipstring—
customerobject—Полиморфный блок клиента. Фактический набор полей зависит от type: - mobile_phone: msisdn, email - bank_card: source, country, merchant_customer_id, email и — только на хосте контура PCI DSS — bank_card с реквизитами карты - undefined_bank_card: те же поля, что у bank_card, без реквизитов Как выбрать между карточными типами. Это разные платёжные маршруты, поэтому тип указывается явно и никогда не выводится из других полей: - undefined_bank_card — плательщик вводит карту на платёжной странице; - bank_card — реквизиты собирает мерчант (контур PCI DSS) либо списание идёт по контракту.
customer.typemobile_phone · bank_card · undefined_bank_card—
customer.msisdnstring—MSISDN абонента в международном формате E.164 (без +). Обязателен для mobile_phone.
customer.emailstring (email)—Email клиента
customer.countrystring—Код страны (ISO 3166-1 alpha-2). Обязателен для bank_card.
customer.networkobject—
customer.network.idinteger (int32)—ID сети (см. справочник операторов)
customer.network.namestring—
customer.operatorobject—
customer.operator.idinteger (int32)—ID оператора (см. справочник операторов)
customer.operator.namestring—
customer.sourcestring—Имя источника в системе продавца (уникально в рамках партнёра). Обязателен для bank_card.
customer.merchant_customer_idstring—Уникальный ID клиента в системе продавца. Обязателен для bank_card.
customer.bank_cardobject—
merchant_contract_idstring—ID контракта в системе продавца. Контракт создаётся по ключу клиент + merchant_contract_id.
Пример запроса — Mobile phone (DCB)
{ "client_ip": "10.20.30.40", "customer": { "type": "mobile_phone", "msisdn": "79600000000" }, "merchant_contract_id": "1234567890" }
Пример запроса — Bank card with card details (PCI DSS contour host only)
{ "client_ip": "10.20.30.40", "customer": { "type": "bank_card", "source": "my_app", "country": "RU", "merchant_customer_id": "client_12345", "email": "test@test.com", "bank_card": { "pan": "4111111111111111", "expiration_month": "12", "expiration_year": "2030", "security_code": "123", "cardholder": "IVAN IVANOV" } }, "merchant_contract_id": "1234567890" }
Пример запроса — Contracts_Create / duplicate (HTTP 409)
{ "client_ip": "127.0.0.1", "customer": { "type": "bank_card", "source": "app", "country": "RU", "merchant_customer_id": "CUSTOMER-000000001", "email": "test@test.com", "bank_card": { "pan": "1111222233334444", "expiration_month": "12", "expiration_year": "2030", "security_code": "123", "cardholder": "IVAN IVANOV" } }, "contract": { "merchant_contract_id": "CONTRACT-000000001" } }
Пример запроса — Contracts_Create / mobile_phone (HTTP 201)
{ "merchant_contract_id": "CONTRACT-000000001", "customer": { "type": "mobile_phone", "msisdn": "79600000000" }, "client_ip": "127.0.0.1" }
Пример ответа
{ "success": true, "data": { "contract_id": "0d0f3c58-9b1e-4a77-9a0c-000000000002", "authorization_type": "SMS_PIN", "expires_at": "2026-09-21T12:00:00Z", "merchant_contract_id": "CONTRACT-000000001", "customer": { "type": "mobile_phone", "msisdn": "79600000000" } } }

Коды ответов

КодОписание
201Контракт создан
400Ошибка валидации или бизнес-ошибка запроса
401Ошибка аутентификации (отсутствует/неверна подпись или временная метка)
403Доступ к проекту запрещён или IP не в белом списке
409Контракт уже существует или уже существует черновик контракта
422Ошибка бизнес-валидации
500Непредвиденная ошибка платформы
503Сервис временно недоступен