В главное меню

Миграция подписок


Введение

Данный метод позволяет произвести миграцию подписок с вашего сервиса - в платежный шлюз, при условии, что вы ранее работали напрямую с ПЦ ЭК.

Т.к. при создании подписки передается идентификатор платежного инструмента bindingId, который обязательно проверяется на наличие у указанного номера телефона. Если такого bindingId нет у данного номера телефона - получите код ошибки: 00200024.

Важно!

Гарантии идемпотентности:

  • Метод обеспечивает идемпотентность по полю Request-Id в течение 3 суток
  • Повторные запросы с одинаковым Request-Id не приведут к созданию дублирующих подписок
  • Система гарантирует обработку только уникальных запросов на основе Request-Id

Ответственность потребителя:

  • Создание и поддержание бизнес-логики единичности подписки для пользователя
  • Гарантия того, что в вашей системе не отправляются запросы с разными Request-Id для одной бизнес-подписки
  • Использование метода получения списка подписок для проверки существующих активных подписок перед созданием новой

Важно:
При передаче разных значений 
Request-Id для одной подписки будут созданы дубликаты идентичных подписок.

Для проверки существующих активных подписок у абонента - можно воспользоваться методом получения списка подписок: Получение списка подписок.

Указав параметры:

  • clientPhone - со значением номера телефона.
  • и status=active.

Входные параметры

Заголовок запроса

POST
Endpoint: https://sandbox.pay.mts.ru/private/v1/subscriptions/create HTTP/1.1
Content-Type: application/json
<Основные параметры>

Так же, передается SSL сертификат.

Основные параметры

Поле

Тип

Обяз.

Описание

Request-IdguidдаИдентификатор конкретного запроса

Requestor-Name

string

нет

Наименование сервиса.

  • Для веба - домен, на котором запущен виджет.
  • Для SDK - идентификатор приложения.
  • Для API - имя вызывающей системы.
Requestor-Typestringнет

Тип витрины.

  • API
  • Web Widget
  • Web Page
  • SDK Apple
  • SDK Android
Requestor-VersionstringнетВерсия виджета/sdk

Тело запроса

Поле

Тип

Обязат.

Описание

serviceIdint64даИдентификатор сервиса Мерчанта
extClientIdstring[256]даИдентификатор пользователя в системе Мерчанта
clientPhonestring[15]даНомер телефона пользователя
merchantMnemonicstring[512]нетНаименование подписки на стороне Мерчанта
userMnemonicstring[512]нетНаименование подписки на стороне Пользователя
amountamountдаСумма списания по подписке
currencystring[3]нетВалюта, по умолчанию 643
startDatedateTimeдаДата и время начала подписки
endDatedateTimeнетДата и время окончания подписки
periodint32[3]даПериодичность списания
periodQuantday|week|monthдаЕдиницы периода списания, может принимать значения "day", "week", "month"
serviceParams{}objectдаНабор пар "параметр":"значение", описывающих реквизиты платежа (специфичных для каждого поставщика).
paymentToolobjectдаСтруктура с данными по источнику оплаты
nextPaymentDatedateTimeнет

Дата и время следующего списания

*Если она не задана, тогда дату следующего списания сформируем мы, по алгоритму: к текущей дате и времени прибавляем период из сочетания параметров: period + periodQuant, без округления даты и времени (с точностью до секунд).

promoobjectнетНабор параметров отвечающих за промо период подписки

trialPeriod

int32

нет

Количество дней триального периода

Описание структуры paymentTool

Поле

Тип

Обяз.

Описание

ewalletBinding

objectда(условно)

Структура с данными, соответствующими типу ПИ (способу оплаты)

  • обязательно передается один из paymentTool, или ewalletBinding, или extMobileCommerce
extMobileCommerceobjectда(условно)

Оплата внешней мобильной коммерцией

  • обязательно передается один из paymentTool, или ewalletBinding, или extMobileCommerce

Описание структуры ewalletBinding

Поле

Тип

Обяз.

Описание

bindingId

string

да

Идентификатор счета/токена

Описание структуры extMobileCommerce

Поле

Тип

Обяз.

Описание

phone

msisdnда

Номер телефона (MSISND) 79158566908

Описание структуры promo

Поле

Тип

Обяз.

Описание

amount

amount

да

Сумма при списании в течение промо периода, положительное значение.

durationTypedurationTypeEnumдаТип учета промо, quant или date

period

int32

условно

Кол-во периодов, в течении которого списывается промо сумма

endDatedateTimeусловноДата окончания промо периода
Обязательность promo.period и promo.endDate полей - условно:
  • Если передано durationType=quant, то обязательно поле period.
  • Если передано durationType=date, то обязательно поле endDate.

Выходные параметры

Заголовок ответа

Content-Type: application/json; charset=utf-8
http-code: 200
http-status: OK

Тело ответа

Поле

Тип

Обяз.

Описание

idguidда

Идентификатор подписки

resultCodestirng[32]даКод результат операции

Примеры

Заголовок запроса

POST https://sandbox.pay.mts.ru/private/v1/subscriptions/create HTTP/1.1
Host:
Content-Type: application/json
Request-Id: 8df44628-5fe8-40b8-8a2d-e214209a5cae

Тело запроса

{
  "serviceId": 0,
  "extClientId": "string",
  "clientPhone": "string",
  "merchantMnemonic": "string",
  "userMnemonic": "string",
  "amount": 0,
  "currency": "string",
  "startDate": "2026-04-23T11:08:29.925Z",
  "endDate": "2026-04-23T11:08:29.925Z",
  "period": 0,
  "periodQuant": "day",
  "serviceParams": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "paymentTool": {
    "eWalletBinding": {
      "bindingId": "string"
    },
    "extMobileCommerce": {
      "phone": "string"
    }
  },
  "nextPaymentDate": "2026-04-23T11:08:29.925Z",
  "promo": {
    "amount": 0,
    "durationType": "quant",
    "period": 0,
    "endDate": "2026-04-23T11:08:29.925Z"
  },
  "trialPeriod": 0
}
{
  "serviceId": 6340,
  "clientPhone": "79685310278",
  "extClientId": "56ca5019-f8df-4baa-9406-961233799c6c",
  "serviceParams": {
    "id1": "108882256562"
  },
  "period": 1,
  "periodQuant": "day",
  "startDate": "2022-02-08T13:59:41.162Z",
  "amount": 13.4,
  "currency": "643",
  "nextPaymentDate": "2022-03-08T13:59:41.162Z",
  "promo": {
      "amount": 10.02,
      "durationType": "quant",
      "period": 4
           },
  "paymentTool": {
    "extMobileCommerce": {
      "phone": "7911223344"
    }
  }
}

Заголовок ответа

Content-Type: application/json; charset=utf-8
http-code: 200
http-status: OK

Тело ответа

{
  "id" : "3417b9ff-6906-4ba1-b741-024d7cbfd8b4",
  "resultCode" : "created"
}

Возможные коды ошибок

code

message

userMessage

isFatal

00299998Validation errorНе пройдена валидация данныхнет
00299999An unexpected error has occurredНепредвиденная ошибкада
00200001Certificate is not setСертификат отсутствуетда
00200002Certificate is not validСертификат не прошел проверкуда
00200003MerchantId is nullИдентификатор мерчанта отсутствуетда
00200011Payments not available for serviceПлатежи не доступны для сервисада
00200012Payment tool not available for serviceПлатежный инструмент не доступен для сервисада
00200022Subscription not available for serviceПодписки не доступны для сервисада
00200024Payment tool not availableОперация не выполнена. Измените способ оплаты и попробуйте снова.нет