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

Подписки (сессия)


Частотность регулярных платежей должна соответствовать требованиям НСПК: в случае неуспешной попытки списания эквайер имеет возможность в течение 30 дней провести повторные попытки, но не чаще одного раза в сутки.

Функционал подписок требует экосистемную авторизацию web sso. Карты, привязанные при оплате вашего продукта, будут доступны пользователю при оплате по другим продуктам экосистемы.
Управлять картами пользователь сможет на витринах profile.mts.ru и сайте/мобильном приложении МТС Деньги/МТС Банк.

Сценарии подписок

Работа с подписками подразумевает несколько сценариев использования:

Обычный 

По подписке с триальным периодом

По подписке с промо-периодом

С отложенной активацией подписки


  • С первичным платежом и последующими регулярными списаниями по подписке.
  • Необходимо, чтобы параметр trialPeriod имел значение 0, либо полностью отсутствовал. Тогда первый платеж будет проведен в рамках процедуры создания подписки. После проведения платежа вы получите соответствующее уведомление.


  • Предоставление услуги с триальным периодом и последующими регулярными списаниями.
  • Необходимо заполнить параметр trialPeriod, значение в параметре указывает сколько дней будет триальный период и через сколько дней начнутся обрабатываться регулярные списания.
  • Первого списания сейчас не будет. Будет лишь верификационный платеж в размере 1 рубля для проверки карты и сразу же произведена отмена. В этом случае не придет уведомление о платеже, уведомления будут только по регулярным платежам.
  • В течении нескольких периодов (в том числе первый) или до какой-то определенной даты будут списания со скидкой.
  • Промопериод не может работать вместе с триальным периодом.
  • При необходимости предоставления промопериода по подписке, необходимо заполнить соответствующий блок promo внутри структуры subscription.
  • Если промо подразумевает 100% скидку, то первичный платеж будет проведен в 1 рубль с моментальной отменой. Пока будут идти промо списания со 100% скидкой уведомления по платежам не будут приходить, будут лишь изменяться даты следующего списания.

Процесс взаимодействия

  1. Выбираете необходимый сценарий работы подписки.
  2. Создаете платежную сессию с расширением передачи данных по подписке и получаете в ответ sessionId и subscriptionId.
  3. С полученным sessionId инициализируете виджет (веб-виджет, iOS, Android).
  4. Получаете уведомление о результате платежа и уведомление о факте создания подписки - на основе этих двух уведомлений принимаете решение о предоставлении услуги плательщику.
  5. Ждете уведомления по регулярным платежам.
  6. При необходимости можно:
    1. убедиться, что уведомление поступило от нас, самостоятельно получив информацию по подписке и передав id подписки;
    2. отключить подписку и регулярные платежи проводиться не будут.
    3. измененить платежный инструмент для регулярных платежей.
    4. возобновить подписку, если у подписки статус repeatedPay или suspended.

Создание платежной сессии с расписанием регулярных платежей

Аналогично разделу создание платежной сессии, но с добавлением блока информации по подписке - subscription (Основные параметры - см. Разовая покупка.). В ответ вы получите не только id сессии, но и id подписки. 

При инициализации виджета - нужно обязательно передать tokenId.

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

Тело запроса

Поле

Тип

Обяз.

Описание

subscription

object subscription

нет

Набор параметров для формирования регулярного платежа (подписки)

merchantParamsobject

нет

Набор пар "параметр":"значение" - дополнительная информация от партнёра к сессии

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

Поле

Тип

Обяз.

Описание

subscriptionDetailsobjectнет

Если передан данный объект, то отображение графика подписок на экране оплаты будет кастомным.

Если не заполнены condition/descriptions текст под суммой не будет отображаться вовсе.


conditionstringнетУсловия отображаемые под суммой списания.

descriptionsarray of stringsнетДетальные условия по подписке (не более 2 строк).
resultDetailsobjectнетЕсли передан данный объект, то отображение информации на финальном экране будет кастомным.

descriptionsarray of stringsнет

Дополнительное описание для вывода на экран (не более 2 строк).

Если не заполнено поле descriptions текст не будет отображаться вовсе.

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

Поле

Тип

Обяз.

Описание

merchantMnemonic

string[512]

нет

Наименование подписки на стороне Мерчанта, можно по данному наименованию осуществлять поиск всех оформленных подписок

userMnemonic

string[512]

да

Наименование подписки на стороне Пользователя

description

string[512]

нет

Краткое описание подписки. Для экосистемных продуктов оно будет выведено как описание подписки на витрине Мой МТС в разделе подписок.

amount

amount

да

Сумма платежа по подписке

startDate

dateTime

да

Дата и время начала подписки. Если требуется отложенное списание – используется параметр trialPeriod

endDate

dateTime

нет

Дата и время окончания подписки. С этой даты перестают происходить списания.

Например, дата списания 01.10.2021, endDate=20.10.2021, period=1 и periodQuant=month.
Тогда, когда пройдет успешное списание 01.10.2021 - будет отправлено уведомление об успешном списании и произойдет отключение подписки, так же будет отправлено соответствующее уведомление со статусом disabled.
Это произойдет потому, что следующая дата списания должна была быть 01.11.2021, но эта дата за пределом endDate

period

int32

да

Периодичность списания

periodQuant

periodQuantEnum

да

Единицы периода списания, может принимать значения "day", "week", "month"

trialPeriod

int32

нет

Количество дней триального периода. Значение определяет сколько дней Плательщик пользуется триальным периодом услуги без оплаты, и через сколько дней провести первую оплату и запустить регулярное списание

isDelayed

boolean

нет

Признак отложенной активации подписки, по умолчанию false

promo

object promo

нет

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

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

Поле

Тип

Обяз.

Описание

amount

amount

да

Сумма при списании в течение промо периода (или сумма для оплаты первого периода подписки, при наличии блока subscription)

durationType

durationTypeEnum

да

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

period

int34

условно

Кол-во периодов, в течении которого списывается промо сумма. Обязательность - условно, если передано durationType=quant, то обязательно поле period

endDate

dateTime

условно

Дата окончания промо периода. Обязательность - условно, если передано durationType=date, то обязательно поле endDate

Обязательность period и endDate полей - условно:

  • Если передано durationType=quant, то обязательно поле period.
  • Если передано durationType=date, то обязательно поле endDate.

Дополнительное описание некоторых полей:

  • extClientId – логин или иной идентификатор Плательщика в системе Партнера;
  • productId – в данный момент работа с продуктами в реализации, не заполняется;
  • merchantMnemonic – наименование подписки в системе Партнера, можно по данному наименованию осуществлять поиск всех оформленных подписок;
  • startDate – дата начала подписки, текущее дата и время. Если требуется отложенное списание – используется параметр trialPeriod;
  • endDate – дата окончания подписки, с этой даты перестают происходить списания;
  • trialPeriod – числовое значение, которое определяет сколько дней Плательщик пользуется триальным периодом услуги без оплаты, и через сколько дней провести первую оплату и запустить регулярное списание.
  • subscription.amount - сумма по регулярным списаниям.
  • amount - сумма платежа (или сумма для оплаты первого периода подписки, при наличии блока subscription).

Использование триального периода "trialPeriod" и promo, при платеже с блоком подписка (subscription):

  • если передан в блоке subscription блок promo, тогда смотрим на amount и его значение из пути subscription.promo.amount;
  • если передан параметр amount>0, а trialPeriod=0 или отсутствует, тогда первый платеж будет со списанием этой суммы. Все последующие регулярные платежи будут с суммой указанной в subscription.amount;
  • если передан параметр trialPeriod>0, тогда значение в параметре amount никак не обрабатывается. Будет проведен платеж в 1р (верификационный) и последующая отмена этого платежа, с возвратом средств. Все последующие регулярные платежи будут с суммой указанной в subscription.amount;
  • если передан amount=0, а trialPeriod=0 или отсутствует, тогда будет проведен платеж в 1р (верификационный) и последующая отмена этого платежа, с возвратом средств. Все последующие регулярные платежи будут с суммой указанной в subscription.amount.

Разница между amount=0 и trialPeriod>0 в том, что:

  • при amount=0 - первый регулярный платеж будет установлен согласно графику period и periodQuant к текущей дате;
  • при trialPeriod>0 - первый регулярный платеж будет установлен к текущей дате + значение из trialPeriod.

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

Тело ответа

Поле

Тип

Обяз.

Описание

subscriptionId

guid

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

Пример

Тело запроса

{   
  "serviceId": "5560",
  "serviceParams": {
    "NUMBER": "79160026188",
    "payerEmail": "tests12345@mts.ru",
    "id1": "108882256562"
  },
  "amount": 13.4,
  "currency": "643",
  "extClientId": "89150123456",
  "subscription": {
    "productId": 0,
    "merchantMnemonic": "MonthlyPayment",
    "userMnemonic": "Моя подписка",
    "amount": 13.4,
    "startDate": "2020-11-18T19:06:16.778Z",
    "endDate": "2021-11-18T00:00:00.778Z",
    "period": 1,
    "periodQuant": "day",
    "trialPeriod": 30,
    "promo": {
      "amount": 10.02,
      "durationType": "quant",
      "period": 4
    }
  }
}

Тело ответа

{ 
  "sessionId": "0b722ef4eb6b4cbe999e1c5bbcb4e456",
  "subscriptionId": "0af1362b-cad2-42dc-a9eb-1f159757c397"
}

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

Основные коды ошибок - см. Разовая покупка.

code

message

userMessage

00200022Subscription not available for serviceПодписки не доступны для сервиса
00200030Subscription could not be created, because there are two promotions trial and promoПодписка не может быть создана, т.к. указаны две акции триал и промо