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

Двухстадийная оплата (сессия)


Сценарий создания платежной сессии, на холдирование средств

Плательщик на сайте магазина выбирает услугу и условия платежа. Сайт предварительно передает реквизиты платежа в платежный шлюз МТС, а в ответ получает идентификатор платежной сессии (вызов метода идет с backend магазина, при вызове метода необходимо использовать SSL сертификат - полученный при интеграции). После чего пользователю отображается виджет, в котором проводится прием оплаты. По завершению сценария, средства на счете холдируются, Платежный шлюз МТС уведомляет сайт по указанному адресу о завершении этапа холдирования платежа. После этого вы сможете выполнить дополнительные операции над платежами.

Бизнес схемаБизнес схемаПлательщикСайтСайтВиджетПлатежныйПлатежныйПлатежныйПлатежныйПлатежныйПлательщикПлательщикСайтСайтВиджетВиджетПлатежныйПлатежныйПлательщикПлательщикСайтмагазинаСайтмагазинаВиджетМТС ОплатаВиджетМТС ОплатаПлатежныйшлюз МТСПлатежныйшлюз МТСПлательщикСайтСайтВиджетПлатежныйПлатежныйПлатежныйПлатежныйПлатежныйпередача реквизитов платежавозврат id сессииинициализация виджетазапрос параметров оплатывозврат информации о платежеотображение платежной формывыбор/указание платежных реквизитовпередача запроса на оплатуобработкаоплатывозврат результата оплатыотображение результата оплатыпередача уведомлениия о платеже (холдирование средств)opt[прошло более 5 дней с момента холдирования]отмена холдированияalt[подтверждение списания]подтверждение списания (capture)результат[отмена холдирования]отмена холдирования (cancel)результатТехническая схемаТехническая схемаМодуль оплатыПлательщикМерчантМерчантPrivateGatewayPrivateGatewayFrontAppПлательщикПлательщикМерчантМерчантPrivateGatewayPrivateGatewayFrontAppFrontAppПлательщикПлательщикМерчантМерчантPrivateGatewayPrivateGatewayFrontAppFrontAppПлательщикМерчантМерчантPrivateGatewayPrivateGatewayFrontAppСоздание платежной сессииrequest /payments/sessions/preauth/create (PrivateGateway)opt[Ошибка]erroralt[разовая оплата c предавторизацией]Идентификатор сессииresponse /payments/sessions/preauth/create (PrivateGateway)sessionIdЗапуск фронтального приложенияДанные платежа и способы оплатыВыбор способа оплаты и переход к оплатеopt[требуется аутентификация]Запрос подтверждения (3ds/3ds2/otp)Подтверждение оплатыОтображение результата оплаты, средства заблокированы на счетаОтправка уведомления о операцииrequest Уведомление о результате платежаstatus == authorizedРезультат обработки уведомленияresponse Уведомление о результате платежаalt[полное/частичное списание (capture)]Списание средств после предавторизацииrequest /payments/{id}/capture (PrivateGateway)amountРезультат списанияresponse /payments/{id}/capture (PrivateGateway)Отправка уведомления о операцииrequest Уведомление о результате платежаstatus == executedРезультат обработки уведомленияresponse Уведомление о результате платежа[полная/частичная отмена (cancel)]Отмена блокирования средств на счетеrequest /payments/{id}/cancel (PrivateGateway)amountРезультат отменыresponse /payments/{id}/cancel (PrivateGateway)Отправка уведомления о отменеrequest Уведомление о результате платежаstatus == canceledРезультат обработки уведомленияresponse Уведомление о результате платежа

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

  1. Для проведения платежа вам необходимо создать платежную сессию.
  2. С полученным после создания платежной сессии sessionId инициализируйте виджет (веб-виджет, iOS, Android).
  3. Получите уведомление о результате платежа (холдирования).
  4. Подтвердите списания средств - Метод для проведения списания после успешной предавторизации
  5. Отмените холдирование - Метод для отмены холдирования средств
  6. При необходимости можно:
    1. убедиться, что уведомление пришло от нас, получив самостоятельно информацию о платеже (статус платежа);
    2. отменить платеж или вернуть денежные средства.

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

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

POST
Endpoint:  https://sandbox.pay.mts.ru/private/v1/payments/sessions/preauth/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

Тело запроса

Поле

Тип

Обязат.

Описание

serviceId

int64

да

ID сервиса

serviceParams{}

object

нет

Набор пар "параметр":"значение", описывающих реквизиты платежа (специфичных для каждого поставщика)

sessionParams

object

нет

Набор дополнительных настроек платежной сессии

amount

amount

да

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

amountInfoobjectнетДанные о суммах оплаты

currency

string[3]

нет

Валюта платежа, по умолчанию 643

description

string[256]нетОписание к платежу
extClientIdstring[256]да

Идентификатор пользователя в системе Мерчанта

paymentToolsFilterobjectнетНабор инструкция для фильтрации ПМ/ПИ
receiptId

int64

нет

id операции фискализации

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

Поле

Тип

Обяз.

Описание

initialAmountamountнетИсходная сумма оплаты, положительное значение.

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

Поле

Тип

Обяз.

Описание

lifeTimeint64нетВремя жизни сессии (в минутах)
requestedCloseAtdatetime (UTC)нетДата и время окончания сессии. Если заполнены оба поля requestedCloseAt и lifeTime, сессия будет завершена в соответствии со значением параметра requestedCloseAt 

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

Поле

Тип

Обяз.

Описание

allowedPaymentToolsarrayнет

Допустимые платежный инструмент

  • mtsBankCard  
  • mtsDengiBankCard
  • boundCard 
  • newСard  

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

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

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

Тело ответа

Поле

Тип

Обяз.

Описание

sessionId

string[32]

да

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

Пример

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

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

Тело запроса

{
  "serviceId": "5560",
  "sessionParams": {
    "lifeTime": 14
  },
  "amount": 13.4,
  "currency": "643",
  "extClientId": "89150123456@box.net"
}
{
  "serviceId": "5560",
  "paymentToolsFilter": {
    "allowedPaymentTools": [
      "boundCard"
    ]
  },
  "sessionParams": {
    "lifeTime": 14
  },
  "amount": 13.4,
  "currency": "643",
  "extClientId": "89150123456@box.net"
}

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

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

Тело ответа

{
  "sessionId": "0b722ef4eb6b4cbe999e1c5bbcb4e456"
}

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

code

message

userMessage

00299998Validation errorНе пройдена валидация данных
00299999An unexpected error has occurredНепредвиденная ошибка
01000002Inactive merchantМерчант не активный
01000003Service not foundУслуга (serviceId) не найдена
01000004Service not availableВыбранный сервис недоступен мерчанту
00200037Payment with pre-authorization is not available for the serviceОперация холдирования недоступна для сервиса