Описание протокола электронной коммерции

Просмотр версии для печати текущей страницы.

История изменений

Дата Версия Описание Автор
25.01.11 0.1 Документ создан Степанян Карлен
28.01.11 0.2 Бета-версия документа Степанян Карлен
28.01.11 0.3 Исправлена аутентификация ЭМ при вызовах операции, вместо логина/пароль ЭМ передает их хеш код. Степанян Карлен
02.02.11 0.7 Внесены исправления в коды возврата в соответствии с рецензированием. Степанян Карлен
02.02.11 1 Релиз документа. Степанян Карлен
04.02.11 1.3 Исправлены коды ошибок, добавлен раздел Введение Степанян Карлен
07.02.11 1.4 Ревью документа. Кошкарова Екатерина
07.02.11 1.5 Небольшие коррекции ошибок и мелкая детализация. Степанян Карлен
07.02.11 2 Согласованная версия. Степанян Карлен
17.03.11 2.1 В операции ConfirmPayment и CancelPayment добавлен новый код возврата. Степанян Карлен
18.03.11 2.2 Описаны тестовые реквизиты платежей, для получения различного рода ошибок. Осипов Евгений
21.03.11 2.3 Уточнены тестовые сценарии. Осипов Евгений
21.03.11 2.4 Исправлены ссылки, добавлен положительный сценарий. Степанян Карлен
05.06.13 2.5 Добавлены параметры в CreatePayment Алимурадов Рустам
29.05.15 3 В термины добавлено «Версия интернет-эквайринга»
  В CreatePayment добавлены PAYER_PHONE, LINKED_CARDS, CARD_ID.  Добавлена операция InitRecurrent.  В оповещение ЭМ о результате платежа добавлены PAYER_PHONE, PTYPE и CARD_ID.  В ответ на GetPaymentStatus добавлены PAYER_PHONE, PTYPE и CARD_ID.  Добавлены операции LinkCard, CheckCard, UnlinkCard, GetLinkedCards, SendLinkCode, ConfirmLinkCode  Внесены изменения в раздел «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ»
Алимурадов Рустам
03.06.15 3.1 Добавлен параметр NEW_CARD в CreatePayment.  В оповещение ЭМ о результате платежа добавлены RETURN_URL, FAIL_URL, 3DS.  В ответ на GetPaymentStatus добавлены RETURN_URL, FAIL_URL, 3DS и «Другие параметры».  Из ответа на InitRecurrent убран параметр SIG.  В ответы на UnlinkCard и GetLinkedCards добавлен параметр PAYER_PHONE Алимурадов Рустам
04.06.15 3.2 В ответе на InitRecurrent добавлен код 4 и два параметра: PREV_PAY_ID и PREV_MPAY_ID.  В LinkCard и CheckCard добавлен необязательный параметр MPAY_ID.  В оповещении ЭМ о результате платежа и при возврате клиента, MPAY_ID может не приходить (если не передали в LinkCard, CheckCard).  В ответ на GetPaymentStatus будет приходить MPAY_ID, если он есть.  В оповещение ЭМ о результате платежа и в ответ на GetPaymentStatus добавлены параметры OPERATION и CARD_NAME. Также изменено описание CARD_ID.  В ответ на ConfirmLinkCode добавлен параметр FOREIGN_LINKS. Алимурадов Рустам
19.06.15 3.3 PAYER_PHONE в ответе на SendLinkCode может отсутствовать в случае ошибок.  Из ответов на SendLinkCode, ConfirmLinkCode убран HASH.  Добавлены новые коды ошибок в ответ на SendLinkCode и ConfirmLinkCode.  Добавлен параметр SIG в ответы на операции LinkCard и CheckCard.  В оповещение ЭМ о результате платежа и в ответ на GetPaymentStatus добавлено новое значение для PTYPE - 3.  В ответы для всех операций добавлено новое возможное значение RESULT - 108. Алимурадов Рустам
29.06.15 3.4 Добавлено описание возможных значений параметра TIMEOUT в операции SendLinkCode.  Исправлено название операции в CheckCard (было LinkCard)  Исправлено описание параметра CARD_ID и добавлен новый параметр PAY_ID в операции CheckCard. Алимурадов Рустам
13.07.15 3.4.1 В описание возможных кодов ошибок для LinkCard и CheckCard добавлен код 106.  В описание возможных кодов ошибок операций CreatePayment, InitRecurrent и CheckCard добавлен код 109.  Расширено описание формата списка карт в операциях UnlinkCard и GetLinkedCards - добавлено описание параметра expired. Алимурадов Рустам
29.07.15 3.4.2 Исправлено описание параметров CARD_ID и PAYER_PHONE в ответе на ConfirmLinkCode Алимурадов Рустам
31.07.15 3.4.3 Исправлен пример формата LINKED_CARDS в ответах на операции UnlinkCard и GetLinkedCards.  Расширено описание формата списка карт в операциях UnlinkCard и GetLinkedCards - добавлено описание параметра cardtype Алимурадов Рустам
06.08.15 3.5.0 Добавлен новый термин "криптограмма" Расширена информация о данных получаемых ТСП при регистрации ЭМ Добавлено примечание в "Протокол взаимодействия" В раздел "Процесс обработки платежа" добавлен подраздел "Платеж с криптограммой" Добавлен раздел "Формирование криптограммы" Добавлена новая операция ProcessPayment Алимурадов Рустам
12.08.15 3.5.1 В оповещение ЭМ о результате платежа, а также в ответ на GetPaymentStatus, UnlinkCard, ConfirmLinkCode добавлен новый параметр CARD_HASH. В списке привязанных карт (см. LINKED_CARDS в операциях UnlinkCard и GetLinkedCards) у карты будет приходить новый параметр cardhash Алимурадов Рустам
13.08.15 3.5.2 В ответе на ProcessPayment добавлен новый параметр CARD_HASH. Алимурадов Рустам
14.08.15 3.5.3 В операцию ProcessPayment добавлен параметр SIG Алимурадов Рустам
18.08.15 3.5.4 В операцию ProcessPayment добавлен параметр PAYER_IP, в ответ добавлен код 103. Алимурадов Рустам
01.09.15 3.5.5 Уточнено что PAY_ID и STATUS могут приходить при RESULT=106 для операций ConfirmPayment и CancelPayment Алимурадов Рустам
03.09.15 3.5.6 Добавлен необязательный параметр CARD_ID в операции ProcessPayment Алимурадов Рустам
10.09.15 3.5.7 Добавлен параметр PAYER_ID как альтернатива PAYER_PHONE. Алимурадов Рустам
16.09.15 3.5.8 Исправлено описание параметров для ProcessPayment Алимурадов Рустам
17.09.15 3.5.9 Добавлен пример страницы работающей с криптограммой (см. Приложение №3) Обновлен раздел "Формирование криптограммы" Алимурадов Рустам
06.11.15 3.5.10 Добавлено описание кода ошибки "1" в ответе на операцию ProcessPayment Алимурадов Рустам
24.12.15 3.5.11 Добавлено описание кода ошибки "21" в ответах операций ProcessPayment и ConfirmPayment. В оповещение ЭМ о результате платежа добавлена информация о возврате Клиента при платеже со статусом 4 (в процессе) Алимурадов Рустам
27.01.16 3.5.12 Добавлено описание OFFER_URL в операции CreatePayment. Дополнено описание параметра PAYER_ID Алимурадов Рустам
28.03.16 3.5.13 Добавлено описание параметра RETURN_AMOUNT в запросе CreatePayment и параметра AMOUNT в ответе. Алимурадов Рустам
05.04.16 3.6.1 Добавлено описание нового статуса платежа  partially refunded (6). Добавлено описание отмены и возврата платежа. Добавлен параметр REFUNDED_AMOUNT в ответе на операцию GetPaymentStatus. Добавлено описание новых операций ReversalPayment и RefundPayment. Алимурадов Рустам
26.08.16 3.6.2 Исправлены имена полей в разделе "Формирование криптограммы", в Приложении №3 имена полей были указаны правильно. Алимурадов Рустам
14.11.16 3.6.3 Обновлены детализирующие коды в разделе "Статусы платежа" Алимурадов Рустам
12.04.17 3.6.5 Добавлен параметр AP_TOKEN в операции ProcessPayment Алимурадов Рустам
25.06.18 3.6.6 Добавлена информация об ограничении длины PAYER_ID Алимурадов Рустам

Изменения в 3.6.x помечены *

Предисловие

Данный документ описывает техническое взаимодействие ТСП с сервисом интернет-эквайринга компании ЗАО «МОБИ.Деньги» для проведения платежей за товары и услуги с использованием банковских карт.

Термины и определения

Термин Описание
Клиент Конечный потребитель услуги или товара ТСП.
Товар Товар или услуга, которую предоставляет ТСП своим Клиентам.
Сервис Сервис интернет-эквайринга - совокупность информационных и технологических решений Компании предоставляющих возможность оплаты Клиенту товара ТСП с помощью банковских карт через интернет.
Компания Компания ЗАО «МОБИ.Деньги»
Платежная система Одна из международных платежных систем VISA или MasterCard.
ТСП Торгово-сервисное предприятие использующее сервис для предоставления возможности оплаты своих товаров с помощью банковских карт.
ЭМ Электронный магазин, через который Клиент оплачивает товар ТСП
Карта Банковская карта платежных систем Visa, MasterCard, JCB и DCL.
Платеж Процесс оплаты товара/услуги, предоставляемого ТПС, Клиентом денежными средствами банковской карты.
Версия интернет-эквайринга Условный номер версии Сервиса, равен 2 для всех ЭМ подключавшихся к Сервису до версии документа 2.5 включительно.  Равен 3 для всех подключившихся по версии документа 3.х  Используется в некоторых случаях, для сохранения совместимости. Настраивается в Сервисе для терминала.
Криптограмма Данные банковской карты, зашифрованные открытым ключом

Введение

Сервис Интернет-эквайринга Компании (далее Сервис) позволяет оплачивать Клиентам торгово-сервисного предприятия (ТСП) товары и/или услуги через интернет с банковских карт платежных систем Visa, MasterCard, JCB и DCL.

Взаимодействие Сервиса происходит с одним или несколькими электронными магазинами (ЭМ), через которые ТСП производит распространение своих товаров.

Сервис предоставляет возможность проводить однофазные и двухфазные платежи:

  • Однофазный платеж - списание денежных средств с Карты Клиента в счет ТСП происходит в момент подтверждения Клиентом Платежа без предварительного резервирования средств.
  • Двухфазный платеж - в момент подтверждения Клиентом Платежа происходит резервирование денежных средств на Карте Клиента, списание денежных средств с Карты Клиента происходит после подтверждения ЭМ (в случае возможности предоставления Товара Клиенту). Если товар не может быть предоставлен Клиенту резервирование денежных средств может быть отменено по инициативе ЭМ, либо автоматически по истечению срока резервирования.

Двухфазные платежи полезны в случае отсутствия точной информации о доступности оплачиваемого товара на момент оплаты. Процесс проведения платежей подробно описан в разделе «Процесс обработки Платежа».

Взаимодействие с ЭМ осуществляется по протоколу HTTP.

Сервис позволяет получать автоматические оповещения о результатах Платежа, а так же получить их по запросу.

При настройке подключении ЭМ доступна опция отображения результатов Платежа Клиенту после его проведения.

Регистрация

Для начала технического взаимодействия с Сервисом, необходимо зарегистрировать ТСП, продаваемый товар(ы) (или услугу) и один или несколько ЭМ. Для этого необходимо указать:

  • Наименование ТСП;
  • Наименование ЭМ;
  • Для каждого ЭМ:По каждому товару заполнить анкету, приведенную в Приложение № 1;
    • Адрес обратной связи общий (CALLBACK_URL) и, при желании, адрес обратной связи в случае неудачи (CALLBACK_FAIL_URL) - для автоматического оповещения;
    • Адрес по умолчанию для возврата пользователя (DEF_RETURN_URL) и, при желании, адрес возврата пользователя в случае неудачи (DEF_FAIL_URL) - указанные адреса будут использоваться если RETURN_URL и FAIL_URL не будут переданы в CreatePayment, LinkCard, CheckCard.
    • Необходимость показывать страницу с результатами платежа Клиенту перед перенаправлением обратно в ЭМ (Да/Нет);
  • Передать файл логотипа магазина (установленного формата и размера);
  • С целью усиления информационной безопасности, возможно, настроить список IP адресов, с которых будет происходить обращение от ЭМ в Сервис.

Если регистрируемый товар связан с пополнением лицевого счета Клиента (определяется Компанией), то ЭМ должен указывать счет-получатель в отдельном параметре операции CreatePayment при создании платежа за этот товар (см. раздел «Операция  CreatePayment»).
В результате регистрации, ТСП получает следующую информацию:

  • MERCHANT_ID - уникальный идентификатор ТСП;

для каждого зарегистрированного ЭМ:

  • TERMINAL_ID - уникальный идентификатор ЭМ;
  • LOGIN - логин для авторизации запросов;
  • PASSWD - пароль для авторизации запросов;
  • Если для ЭМ доступна возможность оплаты по криптограмме: ссылка для загрузки скрипта шифрования данных и UUID (дополнительный идентификатор для создания криптограммы) *

для каждого зарегистрированного товара:

  • ARTICLE_ID - уникальный идентификатор товара;
  • признак необходимости передавать счет-получатель.

Выданные логин и пароль являются конфиденциальной информацией. ТСП ни в коем случае не должно передавать третьим лицам эту информацию. В случае подозрения на компрометацию этой информации сотрудники ТСП должны незамедлительно обратиться в Службу информационной безопасности Компании: телефон: +7 960 270 50 42, e-mail: isecurity@1mps.ru.

Процесс обработки Платежа

Тип проводимого платежа: однофазный или двухфазный, определяется параметром  PTYPE в операции  CreatePayment (см. раздел «Операция  CreatePayment»). Процесс оплаты зависит от типа платежа.

Однофазный платеж

Однофазный платеж позволяет списать денежные средства в пользу ТСП с банковской карты Клиента в счет оплаты предоставляемого товара. Данный тип платежа необходимо использовать в случае, если ТСП может поставить товар Клиенту в момент оплаты. Процесс оплаты при однофазном платеже выглядит следующим образом:

  1. Клиент в ЭМ выбирает опцию оплатить товар с помощью Сервиса.
  2. ЭМ инициирует Платеж в Сервисе (операция  CreatePayment, параметр PTYPE=1).
  3. ЭМ переадресовывает Клиента на страницу оплаты Сервиса.
  4. Клиент указывает реквизиты банковской карты и авторизует Платеж с помощью одноразового пароля высылаемого в sms сообщении на указанный им телефон.
  5. Сервис проводит списание денежных средств с банковской карты.
  6. Сервис оповещает ЭМ о результатах проведения Платежа.
  7. Сервис отображает Клиенту страницу с результатами проведения Платежа и кнопкой возврата в ЭМ.
  8. Клиент обратно возвращается в ЭМ.

ВНИМАНИЕ: клиент должен быть перенаправлен на страницу оплаты не позже чем спустя 1 час после выполнение шага 2. Иначе созданный Платеж автоматически отменяется по таймауту.
Шаги 6 и 7 являются опциональными:

  • Шаг 6 может быть пропущен, если ЭМ не подразумевает обратной связи от Сервиса. В этом случае ЭМ должен самостоятельно запросить статус платежа (операция  GetPaymentStatus).
  • Шаг 7 может быть пропущен, если Клиент должен автоматически перенаправляться обратно в ЭМ. В этом случае ожидается, что ЭМ самостоятельно отобразит результаты проведения Платежа.

Логика оповещения ЭМ и возврата Клиента на сайт ЭМ описана в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».

Двухфазный платеж

В случае если на момент проведения Платежа ТСП не может гарантировать поставку товара Клиенту, ЭМ должен использовать двухфазный платеж. Первая фаза такого полностью совпадает с однофазным платежом, описанным в разделе выше, с тем отличием, что на шаге 5 происходит не списание, а резервирование денежных средств на карте Клиента. После того как определяется доступность товара ЭМ должен подтвердить или отменить платеж, что является второй фазой двухфазного платежа. Таким образом, полный процесс оплаты при двухфазном платеже выглядит следующим образом:

  1. Клиент в ЭМ выбирает опцию оплатить товар с помощью Сервиса.
  2. ЭМ инициирует Платеж в Сервисе (операция  CreatePayment, параметр  PTYPE=2).
  3. ЭМ переадресовывает Клиента на страницу оплаты Сервиса.
  4. Клиент указывает реквизиты банковской карты и авторизует Платеж с помощью одноразового пароля высылаемого в sms сообщении на указанный им телефон.
  5. Сервис проводит резервирование денежных средств на банковской карте.
  6. Сервис оповещает ЭМ о результатах проведения Платежа.
  7. Сервис отображает Клиенту страницу с результатами проведения Платежа и кнопкой возврата в ЭМ.
  8. Клиент обратно возвращается в ЭМ.
  9. После того как доступность товара Клиенту будет определена, но не позднее чем спустя 12 часов после выполнения шага 5, ЭМ производит:
    • подтверждение Платежа (операция  ConfirmPayment)
    • или отмену Платежа (операция  CancelPayment)

ВНИМАНИЕ: клиент должен быть перенаправлен на страницу оплаты не позже чем спустя 1 час после выполнение шага 2. Иначе созданный Платеж отменится по таймауту.
Шаги 6 и 7 являются опциональными:

  • Шаг 6 может быть пропущен, если ЭМ не подразумевает обратной связи от Сервиса. В этом случае ЭМ должен самостоятельно запросить статус платежа (операция  GetPaymentStatus).
  • Шаг 7 может быть пропущен, если Клиент должен автоматически перенаправляться обратно в ЭМ. В этом случае ожидается, что ЭМ самостоятельно отобразит результаты проведения Платежа.

Логика оповещения и возврата Клиента описана в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».
Если ЭМ не выполняет шаг 9 в течение обозначенного времени (12 часов), Платеж автоматически отменяется, и резервирование денежных средств на Карте Клиента снимается.

Платеж с криптограммой

Если для ЭМ включена возможность работы с криптограммами, то вместо перенаправления пользователя на сайт Сервиса в однофазном и двухфазном платежах выполняется:

  1. Клиент вводит данные карты на странице ЭМ и формируется криптограмма
  2. Криптограмма передается в ЭМ на время проведения платежа
  3. ЭМ вызывает в Сервисе операцию ProcessPayment, в том числе передав криптограмму
  4. При необходимости, Клиент направляется на страницу 3-D Secure аутентификации, и после возврата пользователя повторно вызывается ProcessPayment
  5. Средства списываются (1Ф платеж) или резервируются (2Ф платеж)

Статусы Платежа

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

Однофазный платеж

Однофазный платеж может принимать следующие статусы, в скобках цифровой код:

  • preauthorized (0) - Платеж успешно инициирован ЭМом в Сервисе. Ожидается ввод реквизитов Карты и авторизация Платежа Клиентом.
  • inprogress (4) - Платеж находится в обработке.
  • completed (2) - Платеж успешно завершен.
  • canceled (3) - Платеж отменен.
  • declined (5) - Платеж отвергнут Сервисом или платежной системой.
  • partially refunded* (6) - По платежу выполнен частичный возврат средств

Для статуса  canceled (3) могут быть следующие детализирующие коды:

401 - Платеж отменен, т.к. Клиент не авторизовал его в течение одного (1) часа после создания;
402 - Платеж отменен, т.к. ЭМ не подтвердил его в течение двенадцати (12) часов после успешного резервирования денежных (только для двухфазных платежей);
403 - Платеж явно отменен Клиентом (т.е. Клиент нажал кнопку отмены на сайте ввода реквизитов);
404 - Платеж отменен ЭМом;
405 - Платеж отменен тех. поддержкой Компании.

*Для статуса  partially refunded (6) могут быть следующие детализирующие коды:

404 - Платеж отменен ЭМом;
405 - Платеж отменен тех. поддержкой Компании.

Для статуса  declined могут быть следующие детализирующие коды:

1 - при обработке Платежа возник внутренний сбой в Сервисе;
101 - Клиент ошибся критическое число раз при вводе данных;
210 - в обработке операции по указанным платежным реквизитам отказано;
220 - операции по указанным платежным реквизитам временно запрещены;
303 - недостаточно средств;
304 - неверный код CVC2/CVV2;
307 - карта просрочена;
309 - отклонено платежной системой;
310 - техническая ошибка взаимодействия с платежной системой;
311 - карта не найдена;
312 - ошибка 3-D Secure;
313 - превышен лимит суммы операций по карте;
314 - превышен лимит активности использования карты;

Рис. 1 иллюстрирует логику изменения статуса у однофазного платежа.


Рис. 1 Изменение статуса однофазного платежа

В случае если ЭМ инициирует Платеж, а Клиент по какой-либо причине не авторизует Платеж и не отменит его (например, просто закроет браузер), Платеж останется в состоянии  preauthorized.

При необходимости ЭМ может снова перенаправить Клиента для проведения этого Платежа (если прошло менее одного (1) часа), либо инициировать новый платеж.

*Если платёж имеет статус  completed (2), можно выполнить отмену платежа или возврат средств, полный или частичный. При полном возврате средств платёж перейдет в статус  canceled (3), при частичном в  partially refunded (6).

*Если платеж имеет статус  partially refunded (6), можно выполнить частичный возврат на сумму не превышающую разницу между суммой платежа и суммой ранее совершенных частичных возвратов. Если сумма частичных возвратов сравняется с суммой платежа,

тогда платеж перейдет в статус  canceled (3).

Двухфазный платеж

У двухфазного платежа множество статусов, в котором он может находиться, расширено одним дополнительным:
authorized (1) - денежные средства на Карте Клиента успешно зарезервированы, Платеж ожидает подтверждения со стороны ЭМ.
Для статуса  authorized могут быть следующие детализирующие коды (см. описание изменения статусов ниже):
1 - при обработке Платежа возник внутренний сбой в Сервисе;
210 - операция отвергнута платежной системой;
309 - техническая ошибка взаимодействия с платежной системой.

Рис. 2 иллюстрирует логику изменения статуса у двухфазного платежа.


Рис. 2 Изменение статуса двухфазного платежа

После авторизации Платежа Клиентом происходит резервирование денежных средств (Платеж находится в статусе inprogress) и в случае успешного резервирования принимает статус  authorized.

Если резервирование прошло неуспешно, то Платеж принимает статус  cancel или  declined.

В статусе  authorized Платеж ожидает подтверждения или отмены от ЭМ. В случае отмены он принимает статус canceled. Иначе происходит запрос на списание денежных средств (Платеж находится в это время опять в статусе  inprogress).

Если списание проходит успешно, то он принимает статус  completed. Если списание проходит неуспешно, то Платеж опять принимает статус  authorized. В данном случае причиной неуспешного списания может быть только технический сбой (причину определяет детализирующий код). Поэтому ЭМ может попробовать довести Платеж повторно.

В случае неуспешных повторений следует обратиться в техническую поддержку Компании (email: support@mobi-money.ru) и обработать данный платеж в частном порядке.

*Если платёж имеет статус  completed (2), можно выполнить отмену платежа или возврат средств, полный или частичный. При полном возврате средств платёж перейдет в статус canceled (3), при частичном в  partially refunded (6).

*Если платеж имеет статус  partially refunded (6), можно выполнить частичный возврат на сумму не превышающую разницу между суммой платежа и суммой ранее совершенных частичных возвратов. Если сумма частичных возвратов сравняется с суммой платежа,

тогда платеж перейдет в статус  canceled (3).

Отмена Платежа

Если для ЭМ отключена возможность самостоятельно выполнять отмены и возвраты, то в случае возникновения необходимости отменить один или несколько проведенных Платежей надо обратиться в Службу технической поддержки Компании (email: support@mobi-money.ru) с предоставлением Поручения о возврате средств, согласно агентскому договору.

Формирование криптограммы

Для формирования криптограммы должен использоваться специальный скрипт с сайта Сервиса, ссылка на скрипт выдается ЭМ.

Скрипт указывается на странице вашего сайта, и с помощью него формируется криптограмма алгоритмом RSA.

Криптограмма передается по защищенному каналу (SSL) на сервер ЭМ, затем передается в Сервис, в запросе ProcessPayment.

ВНИМАНИЕ: взаимодействие с Сервисом со страницы ЭМ напрямую недопустимо!

Требования к форме ввода данных:

  1. У полей с карточными данными не должно быть атрибута "name", чтобы данные не попали на сервер при отправке формы.
  1. Данные из формы должны передаваться по SSL с корректным сертификатом

Требования к криптограмме:

  1. Должна формироваться оригинальным скриптом, загруженным с Сервиса
  1. Криптограмму нельзя хранить после оплаты и использовать повторно

Требования к безопасности по PCI DSS:

С точки зрения PCI DSS, подобный способ подключения классифицируется как "E-commerce merchants who outsource all payment processing to PCI DSS validated third parties, and who have a website(s) that doesn't directly receive cardholder data but that can impact the security of the payment transaction. No electronic storage, processing, or transmission of any cardholder data on the merchant's systems or premises.", то есть обработка платежных данных выполняется третьей стороной, но сайт влияет на безопасность карточных данных.

Для соблюдения требований стандарта, необходимо заполнять лист самооценки  SAQ-EP и ежеквартально проходить ASV тестирование.

Сканирование должно проводится аккредитованным вендором (ASV) из  списка, представленного на сайте совета PCI.

Пример формы:

[lt]script src="https://scripturl"[gt][lt]/script[gt]
.....
[lt]form id="sampleForm" autocomplete="off"[gt]
[nbsp][lt]input type="text" data-mm="cardNumber"[gt]
[nbsp][lt]input type="text" name="otherParam"[gt]
[nbsp][lt]input type="text" data-mm="expDateMonthYear"[gt]
[nbsp][lt]input type="text" data-mm="cvv"[gt]
[nbsp][lt]input type="text" data-mm="name"[gt]
[nbsp][lt]button type="submit"[gt]OK[lt]/button[gt]
[lt]/form[gt]

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

  • data-mm="cardNumber" - поле с номером карты
  • data-mm="expDateMonthYear" - поле со сроком действия в формате MMYY
  • data-mm="expDateMonth" - поле с месяцем срока действия
  • data-mm="expDateYear" - поле с годом срока действия
  • data-mm="cvv" - поле с кодом CVV
  • data-mm="name" - поле с именем держателя карты

Пример скрипта по созданию криптограммы:

this.createCryptogram = function () {
[nbsp]var result = encodeScript.makeCryptogram();
[nbsp]if (result.success) {
[nbsp][nbsp]//успех
[nbsp]}
[nbsp]else {
[nbsp][nbsp]//ошибки в введенных данных
[nbsp]}
};

$(function () {
[nbsp]/* инициализация */
[nbsp]encodeScript = new mm.EncodeScript("SHOP UUID",
[nbsp][nbsp]document.getElementById("sampleForm"));
});

Полный пример страницы приведен в Приложении № 3

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

ЭМ взаимодействует с Сервисом по HTTPS. Вызов операции представляет собой HTTP-POST запрос, в котором в параметре OPERATION передается название операции, а в других параметрах запроса передаются url encoded параметры операции. Все значения параметров должны быть в кодировке UTF-8.

В ответ на этот вызов Сервис возвращает HTTP ответ с кодом 200 в теле, которого указываются результаты операции как

<имя1>=<значение1>&<имя2>=<значение2>&...

Все значения возвращаются url encoded в кодировке UTF-8.

Пример успешного ответа на операцию  CreateTransaction:

RESULT=0&STATUS=0&SDCODE=-1&PAY_LINK=http%3A%2F%2Fwww.mobimoney.ru%3 FPAY_ID%3D123456%26SIG%3D3cb32e05315c4792b75448cefd158a3a&SIG=3cb32e05315c4792b75448cefd158a3a&PAY_ID=123456

В каждом вызове операции Сервиса присутствует входной параметр IDENTITY или HASH, который удостоверяет сторону делающую вызов. Значение IDENTITY ЭМ должен вычислить, используя хеш-функцию md5 для строки, состоящей из следующих значений: ID_TERMINAL, LOGIN, PASSWD. Значения должны быть склеены без всяких разделяющих символов. Т.е. если номер ЭМ 233, его логин «goodshop», а пароль «3xe45OQ», то хеш необходимо вычислить от следующей строки:

233goodshop3xe45OQ

Он будет равен

f88182579ad3372015780385beef5753

Вычисление HASH описано в разделах соответствующих операций (ReversalPayment, RefundPayment)

ЭМ должен адекватно реагировать (сохранять работоспособность) при получении «неожиданных» параметров в ответах и неизвестных ему кодов ошибок. Неизвестные ЭМ параметры нужно игнорировать, неизвестные коды ошибок интерпретировать как неизвестную ошибку.

Для проведения тестовых платежей запросы необходимо отправлять по адресу:

Тестовый адрес: ???

Тестовые платежные реквизиты и получаемые результаты указаны в Приложении №2.

Примечание: с Сервисом обязательно взаимодействует ЭМ, а не пользователь через браузер.

Операция CreatePayment

Операция  CreatePayment создает платеж.  CreatePayment должна быть выполнена перед перенаправлением Клиента на платежную страницу Сервиса.

С точки зрения Сервиса платеж ЭМ определяется параметром MPAY_ID.

В штатных ситуациях для каждого платежа в ЭМ должен быть выполнен один вызов  CreatePayment. В случае если Платеж не завершился по той или иной причине, допустимо инициировать новый Платеж с таким же значением MPAY_ID.

ВНИМАНИЕ: между инициацией Платежа и авторизацией Платежа Клиентом на стороне Сервиса должно пройти не более одного (1) часа. Иначе созданный Платеж считается устаревшим и отменяется автоматически.

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

Параметр Тип и формат данных Описание
OPERATION Константа "CreatePayment"  Обязательное поле.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательное поле.
ARTICLE_ID Целое (long) Идентификатор товара, выданный при подключении.  Обязательное поле.
MPAY_ID Строка, длиной до 150 символов Идентификатор платежа в системе учета ЭМ. Должен быть уникальным в рамках одного ЭМ.  Обязательное поле.
MDATETIME Дата в формате
«YYYY-MM-DDThh:mm:ss[±hhmm]»
Время Платежа в системе учета ТСП. В случае если часовой пояс не указан, то считается что время указано по Москве (т.е. +0300).  Например: «2011-01-31T13:48:22+0300»  Обязательное поле.
AMOUNT Целое (int) Сумма к списанию в копейках  Обязательное поле.
CURRENCY Константа «RUR»  Обязательное поле.
ACCOUNT Строка Номер счета-получателя.  Обязательное поле, в случае если товаром является пополнение счета (см. раздел «Регистрация»).
PTYPE Число («1» или «2») Тип платежа:  «1» - однофазный платеж, деньги будут списаны с Карты Клиента при подтверждении Клиентом Платежа;  «2» - двухфазный платеж, деньги будут зарезервированы на Карте Клиента, для окончательного списания ЭМ должен подтвердить Платеж.  Обязательное поле.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766 Телефон должен быть указан обязательно для платежа с криптограммой.
PAYER_ID Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Должен быть указан обязательно для платежа с криптограммой.  Можно использовать только после согласования с менеджером.
LINKED_CARDS Число («0» или «1») Отображать привязанные к телефону карты на странице ввода реквизитов карты.  «0» - нет (значение по умолчанию);  «1» - да, ЭМ может использовать это значение только в случае аутентификации PAYER_PHONE/PAYER_ID на своей стороне.  Необязательное поле
CARD_ID Целое (long) Используется только в случае передачи параметра LINKED_CARDS со значением 1.  Идентификатор привязанной к номеру телефона плательщика карты (см. GetLinkedCards, ConfirmLinkCode), которую нужно выбрать для ввода CVV. Если не указан, используется карта по умолчанию, настроенная в системе.  Если номер плательщика (PAYER_PHONE/PAYER_ID) не указан и/или у него нет привязанных карт - отображается форма ввода реквизитов карты.  Необязательное поле
NEW_CARD Число («0» или «1») Отображать возможность ввода реквизитов новой карты.  «0» - нет, пользователь не может ввести реквизиты карты вручную и использует выбор из ранее привязанных;  «1» - да (значение по умолчанию)  Используется если LINKED_CARDS=1.  Если LINKED_CARDS=1, NEW=CARD=0 и у пользователя нет привязанных карт, то будет возвращена ошибка.
RETURN_AMOUNT Число («0» или «1») Возвращать в ответе AMOUNT: «0» - нет (по умолчанию) «1» - да  Необязательный параметр.
DESCRIPTION Строка, длиной до 512 символов Описание платежа, которое будет отображено Клиенту на странице оплаты.
OFFER_URL Строка, длиной до 512 символов Ссылка на публичную оферту Необязательное поле
RETURN_URL Строка, длиной до 512 символов Адрес возврата Клиента на сайт ЭМ. Правила возврата описаны в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».  Должен быть указан, если указан параметр FAIL_URL.
FAIL_URL Строка, длиной до 512 символов Адрес возврата Клиента на сайт ЭМ в случае неуспешного платежа. Правила возврата описаны в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».
IDENTITY Строка длиной 32 символа Код, подтверждающий подлинность ЭМ. Правило вычисления кода см. выше.  Должен быть указан всегда.
M_TITLE Строка длиной до 128 символов Наименование организации.  Необязательный параметр.
M_ADDR Строка длиной до 128 символов Адрес организации.  Необязательный параметр.
M_CODE Строка длиной до 32 символов Код организации.  Необязательный параметр.
M_URL Строка длиной до 128 символов Ссылка на web-сайта ЭМ.  Необязательный параметр.
M_EMAIL Строка длиной до 128 символов Контактный электронный адрес ЭМ.  Необязательный параметр.
M_PHONE Строка длиной до 20 символов Контактный телефон ЭМ.  Необязательный параметр.
M_DELIVER_INFO Строка, длиной до 512 символов. Условия доставки товара.  Необязательный параметр.
M_DEMO_END Дата в формате «YYYY-MM-DDThh:mm:ss [±hhmm]» Точная дата окончания демонстрационного периода (если имеет место).  Необязательный параметр.
M_DELIVER_ADDR Строка, длиной до 512 символов Адрес для отправки, доставки, предоставления товара покупателю (при необходимости).  Необязательный параметр.
M_DELIVER_URL Строка длиной до 128 символов Ссылка на порядок предоставления покупателю товаров/услуг.  Необязательный параметр.
M_RETURN_URL Строка длиной до 128 символов Ссылка на порядок возврата товаров/отказа от услуг.  Необязательный параметр.
M_CANCEL_URL Строка длиной до 128 символов Ссылка на порядок отмены оплаты заказа.

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

Максимальная суммарная длина таких параметров, включая их имена, значения, знаки «=» и «&» не должна превышать 512 символов.

Результат:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Системе;  «105» - ЭМ заблокирован для проведения Платежей;  «106» - Платеж с таким MPAY_ID уже успешно совершен, либо находится в обработке, либо ждет подтверждения.  «108» - Данная операция запрещена для данного ЭМ.  «109» - Истёк срок годности карты  В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
STATUS Число (int) Статус платежа (см. раздел «Статусы Платежа»).  Присутствует, если транзакция успешно создана, либо когда платеж уже совершен (RESULT=106).
SDCODE Число (int) Код, детализирующий статус платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.  Присутствует всегда, когда указан статус.
PAY_ID Число (long) Уникальный идентификатор платежа в системе учета Сервиса. ЭМ должен сохранить этот идентификатор для выполнения других операций с Платежом.  Присутствует в случае успешной инициации Платежа, либо когда Платеж уже совершен (RESULT=106).
PAY_LINK Строка URL encoded строка содержащая сгенерированную ссылку, на которую надо перенаправить Клиента для оплаты.  Присутствует в случае успешного создания Платежа.
AMOUNT Число (int) Сумма в копейках, которая будет списана с карты клиента. Необязательный параметр, присутствует если RESULT=0 и в запросе был передан RETURN_AMOUNT=1
SIG Строка Подпись, которая должна присутствовать при перенаправлении Клиента на страницу оплаты. Должна быть использована, в случае если ЭМ самостоятельно формирует ссылку для перенаправления Клиента, а не использует PAY_LINK. Также используется для операции ProcessPayment.  Присутствует в случае успешного создания Платежа.

Если операция вернула результат RESULT=106, т.е. Платеж либо проведен, либо находится в обработке, - в параметрах PAY_ID, STATUS и SDCODE возвращаются ее идентификатор, статус и детализирующий код соответственно.

При формировании ссылки для направления Клиента на страницу оплаты вручную, - необходимо убедиться, что в ней указаны параметры PAY_ID и SIG, которые были возвращены в результате выполнения операции  CreatePayment.

Если Платеж оказался неуспешным (отменен или отвергнут), либо Клиент не авторизовал Платеж и не отменил его явно, - ЭМ может инициировать новый Платеж с таким же MPAY_ID как и предыдущий и перенаправить Клиента на форму оплаты для новой попытки.

Если Платеж оказался успешным (статус  completed), либо находится в обработке (статус  inprogress), либо ожидает подтверждения от ЭМ (статус  authorized), то на вызов  CreatePayment с таким же MPAY_ID, вернется ошибка RESULT=106.

Операция InitRecurrent

Операция  InitRecurrent создает и проводит платеж без перенаправления клиента на платежную страницу сервиса. У клиента запрашивается подтверждение на проведение платежа в большинстве случаев.

С точки зрения Сервиса платеж ЭМ определяется параметром MPAY_ID.

В штатных ситуациях для каждого платежа в ЭМ должен быть выполнен один вызов  InitRecurrent. В случае если Платеж не завершился по той или иной причине, допустимо инициировать новый Платеж с таким же значением MPAY_ID.

ВНИМАНИЕ: между инициацией Платежа и подтверждением платежа пользователем должно пройти не более одного (1) часа. Иначе созданный Платеж считается устаревшим и отменяется автоматически.

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

Параметр Тип и формат данных Описание
OPERATION Константа "InitRecurrent"  Обязательное поле.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательное поле.
ARTICLE_ID Целое (long) Идентификатор товара, выданный при подключении.  Обязательное поле.
MPAY_ID Строка, длиной до 150 символов Идентификатор платежа в системе учета ЭМ. Должен быть уникальным в рамках одного ЭМ.  Обязательное поле.
MDATETIME Дата в формате
«YYYY-MM-DDThh:mm:ss[±hhmm]»
Время Платежа в системе учета ТСП. В случае если часовой пояс не указан, то считается что время указано по Москве (т.е. +0300).  Например: «2011-01-31T13:48:22+0300»  Обязательное поле.
AMOUNT Целое (int) Сумма к списанию в копейках  Обязательное поле.
CURRENCY Константа «RUR»  Обязательное поле.
ACCOUNT Строка Номер счета-получателя.  Обязательное поле, в случае если товаром является пополнение счета (см. раздел «Регистрация»).
PTYPE Число («1» или «2») Тип платежа:  «1» - однофазный платеж, деньги будут списаны с Карты Клиента при подтверждении Клиентом Платежа;  «2» - двухфазный платеж, деньги будут зарезервированы на Карте Клиента, для окончательного списания ЭМ должен подтвердить Платеж.  Обязательное поле.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766    Обязательное поле, если не указан PAYER_ID
PAYER_ID Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Обязательное поле, если не указан PAYER_PHONE  Можно использовать только после согласования с менеджером.
CARD_ID Целое (long) Идентификатор привязанной к номеру телефона плательщика карты (см. GetLinkedCards, ConfirmLinkCode). Обязательное поле.
ACCEPT_TEXT Строка длиной не более 512 символов Текст SMS, отправляемой для подтверждения платежа пользователем. Если поле не пустое, акцептование происходит с этим текстом. Иначе в соответствии с настройками Сервиса.    Необязательное поле.
IDENTITY Строка длиной 32 символа Код, подтверждающий подлинность ЭМ. Правило вычисления кода см. выше. Должен быть указан всегда.

Кроме перечисленных выше параметров запрос может содержать любые другие параметры, которые будут присутствовать в оповещении ТСП о результатах.

Максимальная суммарная длина таких параметров, включая их имена, значения, знаки «=» и «&» не должна превышать 512 символов.

Результат:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Системе;  «4» - не закончена обработка предыдущего рекуррентного платежа для клиента  «105» - ЭМ заблокирован для проведения Платежей;  «106» - Платеж с таким MPAY_ID уже успешно совершен, либо находится в обработке, либо ждет подтверждения.  «108» - Данная операция запрещена для данного ЭМ.  «109» - Истёк срок годности карты  В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
STATUS Число (int) Статус платежа (см. раздел «Статусы Платежа»).  Присутствует, если транзакция успешно создана, либо, когда платеж уже совершен (RESULT=106).
SDCODE Число (int) Код, детализирующий статус платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.  Присутствует всегда, когда указан статус.
PAY_ID Число (long) Уникальный идентификатор платежа в системе учета Сервиса. ЭМ должен сохранить этот идентификатор для выполнения других операций с Платежом.  Присутствует в случае успешной инициации Платежа, либо, когда Платеж уже совершен (RESULT=106).
PREV_PAY_ID Число (long) Уникальный идентификатор незаконченного рекуррентного платежа в системе учета Сервиса.  Присутствует если RESULT=4
PREV_MPAY_ID Строка, длиной до 150 символов Идентификатор незаконченного рекуррентного платежа в системе учета ЭМ.  Присутствует если RESULT=4

Если операция вернула результат RESULT=106, т.е. Платеж либо проведен, либо находится в обработке, - в параметрах PAY_ID, STATUS и SDCODE возвращаются ее идентификатор, статус и детализирующий код соответственно.

Если Платеж оказался неуспешным (отменен или отвергнут), либо Клиент не авторизовал Платеж и не отменил его явно, - ЭМ может инициировать новый Платеж с таким же MPAY_ID.

Если Платеж оказался успешным (статус  completed), либо находится в обработке (статус  inprogress), либо ожидает подтверждения от ЭМ (статус  authorized), то на вызов  CreatePayment с таким же MPAY_ID, вернется ошибка RESULT=106.

Операция ProcessPayment

Операция ProcessPayment для проведения ранее созданного платежа (см. CreatePayment) с использованием криптограммы или Apple Payment Token, без перенаправления клиента на страницу Сервиса.

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

Параметр Тип и формат данных Описание
OPERATION Константа "ProcessPayment"  Обязательное поле.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательное поле.
IDENTITY Строка длиной 32 символа Код, подтверждающий подлинность ЭМ. Правило вычисления кода см. выше.  Обязательное поле.
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса, выданный при его создании.  Обязательное поле.
CARD_ID Целое (long) Идентификатор привязанной к номеру телефона плательщика карты (см. GetLinkedCards, ConfirmLinkCode). Необязательное поле.
PAYER_IP Строка IP адрес плательщика вид N.N.N.N, где N - значение от 0 до 255. Обязательный параметр.
SIG Строка Подпись, полученная в ответе на CreatePayment. Обязательное поле.
CRYPTOGRAM Строка Криптограмма Обязательное поле при первом вызове данной операции.
AP_TOKEN Строка Apple Payment Token JSON строка полученная от Apple Pay вида
{"paymentData":{"version":"EC_v1", ...... }

Обязательное при оплате с помощью Apple Pay, в этом случае поля CARD_ID, CRYPTOGRAM не передаются.

PARES Строка Параметр PaRes возвращенный с сайта банка после 3-D Secure аутентификации Необязательный параметр. Должен быть заполнен при повторном вызове, после 3-D Secure
MD Строка Параметр MD из предыдущего ответа на ProcessPayment Необязательный параметр. Должен быть заполнен при повторном вызове, после 3-D Secure

Если указана привязанная карта (CARD_ID), то в криптограмме необходимо зашифровать только CVV код (см. "Формирование криптограммы"), остальные данные на форме не вводятся.

Если платеж создан с помощью CheckCard, то CARD_ID нужно указывать обязательно, если с помощью LinkCard, то параметр CARD_ID должен отсутствовать.

AP_TOKEN можно использовать только для платежей созданных с помощью CreatePayment.

ВНИМАНИЕ: для возможности оплаты через Apple Pay, ЭМ должен передать публичный сертификат и приватный ключ, чтобы данные могли быть расшифрованы на стороне Сервиса. Передавать сертификаты/ключи необходимо по защищенным каналам связи по согласованию с менеджером и службой безопасности.

Результат:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции:  «0» - операция успешно выполнена; «1» - выполнение операции закончилось неудачей, см. статус платежа и детализирующий код; «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC; «3» - при выполнении операции произошел внутренний сбой в Системе; «20» - необходима 3-D Secure аутентификация; «21» - платеж находится в обработке на стороне банка (см. подробное описание после таблицы); «103» - транзакция не найдена; «105» - ЭМ заблокирован для проведения Платежей; «108» - Данная операция запрещена для данного ЭМ. «109» - Истёк срок годности карты «110» - Неверный номер карты В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
PAREQ Строка Строка содержащая закодированные данные для 3-D Secure аутентификации. Обработка 3-D Secure аутентификации описана ниже. Присутствует, если RESULT=20
ACSURL Строка Строка содержащая ссылку на страницу для прохождения 3-D Secure аутентификации. Обработка 3-D Secure аутентификации описана ниже. Присутствует, если RESULT=20
MD Строка Строка с информацией, которую потом необходимо передать в повторный вызов ProcessPayment.  Обработка 3-D Secure аутентификации описана ниже. Присутствует, если RESULT=20
OPERATION Строка Операция, которая инициировала данный платеж: CreatePayment, InitRecurrent, LinkCard, CheckCard.  Присутствует, если платеж существует и нет внутренних ошибок.
STATUS Число (int) Статус Платежа (см. раздел «Статусы Платежа»).  Присутствует, если платеж существует и нет внутренних ошибок.
SDCODE Число (int) Код, детализирующий статус Платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.  Присутствует всегда, когда указан статус.
PAY_ID Число (long) Уникальный идентификатор платежа в системе учета Сервиса (равен переданному на вход).  Присутствует, если платеж существует и нет внутренних ошибок.
MPAY_ID Строка, длиной до 150 символов Идентификатор Платежа в системе учета ЭМ. Присутствует, если платеж существует, нет внутренних ошибок и если его указали при инициализации платежа, т.к. является необязательным параметром для LinkCard, CheckCard.
DATETIME Дата в формате «YYYY-MM-DDThh:mm:ss±hhmm» Время создания платежа в системе учета Сервиса. Например: «2011-01-31T13:48:22+0300»  Присутствует, если платеж существует и нет внутренних ошибок.
AMOUNT Целое (int) Сумма платежа в копейках.  Присутствует, если платеж существует и нет внутренних ошибок.
CURRENCY Константа «RUR»  Присутствует, если платеж существует и нет внутренних ошибок.
ACNUMBER Строка, длиной до 20 символов Маскированный номер карты, с которой Клиент произвел оплату.  Например, « ** **** **** 1234». Присутствует, если платеж существует и нет внутренних ошибок.
CARDTYPE Строка, длиной до 10 символов Тип банковской карты, с которой произведена оплата («VISA», «MASTERCARD», «JCB», «DCL»)    Присутствует, если платеж существует и нет внутренних ошибок.
CARD_HASH Строка Хэш-код карты. Присутствует, если платеж существует и нет внутренних ошибок.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766 Присутствует, если платеж существует, нет внутренних ошибок и клиент идентифицируется по номеру телефона  
PAYER_ID Строка, длиной до 30 символов Идентификатор плательщика. Присутствует, если платеж существует, нет внутренних ошибок и клиент идентифицируется не по номеру телефона.
PTYPE Число («1», «2» или «3») Тип платежа:  «1» - однофазный платеж;  «2» - двухфазный платеж;  «3» - тестовый платеж (LinkCard или CheckCard) Присутствует, если платеж существует и нет внутренних ошибок.
3DS Число («0» или «1») Признак аутентификации 3DS:  «0» - платеж без 3DS (может быть 0, даже если вы "отправляли пользователя" на ACSURL и потом вызывали ProcessPayment с данными для 3-D Secure) «1» - платеж с 3DS Присутствует если RESULT=0
AUTHCODE Строка, длиной до 8 символов Авторизационный код транзакции. Присутствует, если платеж существует, нет внутренних ошибок и платеж успешно проведен, либо зарезервирован, и код был выдан платежной системой.
HASH Строка, длиной 32 символа Подпись результата. Формируется аналогичным образом, как и в оповещении. Детальное описание см. в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ». Присутствует, если платеж существует и нет внутренних ошибок.
Другие параметры   Другие параметры, переданные в запросе CreatePayment, InitRecurrent, LinkCard, CheckCard Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.

ВНИМАНИЕ: при получении кода "21" следует ожидать нотификации от Системы или самостоятельно опрашивать состояние платежа (GetPaymentStatus), до тех пор, пока статус платежа не сменится с 4 (в процессе) на другой. Статус необходимо опрашивать не чаще чем раз в 5 минут, и не более 3 часов. Если после 3-х часов статус платежа не изменится, рекомендуется обратиться в поддержку.

Работа с 3-D Secure аутентификацией

Если в ответе на ProcessPayment получен RESULT=20, то плательщика необходимо направить на адрес указанный в ACSURL и передать следующие параметры:

  • TermUrl - адрес на сайте ЭМ для возврата плательщика после 3-D Secure аутентификации
  • PaReq - параметр PAREQ полученный в ответе на ProcessPayment
  • MD - параметр MD полученный в ответе на ProcessPayment, либо своё значение, которое потом вернется

ВНИМАНИЕ: названия параметров чувствительны к регистру

Пример:

[lt]form name="downloadForm" action="ACSURL" method="POST"[gt]
[nbsp][lt]input type="hidden" name="PaReq" value="RXRvIHRlc3Rvdml5IHBhcmVxIGRseWEgcHJpbWVyYSAxMjM0NTY3ODkwISEhISE="[gt]
[nbsp][lt]input type="hidden" name="TermUrl" value="https://hostname/3dsecure"[gt]
[nbsp][lt]input type="hidden" name="MD" value="789"[gt]
[nbsp][lt]!-- To support javascript unaware/disabled browsers --[gt]
[nbsp][lt]noscript[gt]
[nbsp][nbsp][lt]center[gt]Please click the submit button below.[lt]br[gt]
[nbsp][nbsp][lt]input type="submit" name="submit" value="Submit"[gt][lt]/center[gt]
[nbsp][lt]/noscript[gt]
[lt]/form[gt]

[lt]SCRIPT LANGUAGE="Javascript"[gt]
[nbsp][lt]!-- about:blank --[gt]
[nbsp][lt]!--
[nbsp]function OnLoadEvent() {
[nbsp][nbsp]window.name = "moviehouse_window";
[nbsp][nbsp]childWin = window.open('', 'Window', 'height=490,width=380,status=yes,
[nbsp][nbsp][nbsp]dependent=no,scrollbars=no,
[nbsp][nbsp][nbsp]resizable=yes,left=570,top=75');
[nbsp][nbsp]document.downloadForm.target = 'Window';
[nbsp][nbsp]document.downloadForm.submit();
[nbsp]}
[nbsp]//-->
[lt]/SCRIPT[gt]

После проверки, плательщик будет возвращен по адресу TermUrl с параметрами PaRes и MD, переданными методом POST.

Для завершения оплаты необходимо повторно вызвать ProcessPayment передав параметры PaRes и MD.

ВНИМАНИЕ: оповещения ЭМ о результате платеже после данной операции не будет, т.к. все необходимые данные переданы в ответе. При необходимости, можно вызвать GetPaymentStatus.

Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ

Внимание! При перенаправлении Клиента обратно на сайт ЭМ результат Платежа не передается. Это сделано для исключения возможного мошенничества с подменой результатов. Для определения результата Платежа ЭМ должен ориентироваться на автоматическое оповещение, либо самостоятельно запросить статус (операция  GetPaymentStatus).

Автоматическое оповещение является простым HTTP запросом, в котором передаются результаты методом POST. В ответ на этот запрос ЭМ может выдать HTTP ответ с кодом 200 или 202 без содержания странички.

Автоматическое оповещение о результатах Платежа происходит только для тех ЭМ, которые указали при регистрации адрес обратной связи. Для оповещения об успешном Платеже или успешном резервировании денежных средств используется адрес CALLBACK_URL, указываемый ТСП при регистрации (см. раздел «Регистрация»). Если Платеж неуспешен, используется адрес CALLBACK_FAIL_URL, а если он не указан, то CALLBACK_URL. Если автоматическое оповещение не используется магазином, ЭМ должен самостоятельно запросить у Сервиса результат Платежа, используя операцию GetPaymentStatus.

После оповещения ЭМ Сервис переадресовывает Клиента обратно на сайт ЭМ. В случае если Платеж прошел успешно, либо резервирование прошло успешно Клиент перенаправляется по адресу RETURN_URL. В случае если Платеж неуспешен, перенаправление производится на адрес, указанный в FAIL_URL, а если он не указан, то RETURN_URL.

Если ЭМ не указал в Платеже значения для параметра RETURN_URL, после успешного завершения Платежа Клиент перенаправляется на сайт ЭМ по адресу, указанному в DEF_RETURN_URL. Если Платеж завершился неуспешно, то используется адрес DEF_FAIL_URL.

После проведения Платежа Клиенту отображается страница с результатом и кнопкой возврата в ЭМ. По желанию ТСП для ЭМ можно отключить отображение страницы с результатом. Тогда Клиент будет перенаправлен на сайт ЭМ сразу после проведения Платежа. В этом случае ожидается, что ЭМ самостоятельно отобразит результаты проведения Платежа.

ВНИМАНИЕ: в некоторых случаях возможна ситуация, когда Клиент вёрнется на сайт ЭМ, а платёж при этом останется в статусе 4 (в процессе) и магазину не будет отправлено оповещение. В таком случае, следует ожидать нотификации от Системы или самостоятельно опрашивать состояние платежа (GetPaymentStatus), до тех пор, пока статус платежа не сменится с 4 (в процессе) на другой. Статус необходимо опрашивать не чаще чем раз в 5 минут, и не более 3-х часов. Если после 3-х часов статус платежа не изменится, рекомендуется обратиться в поддержку.

В запросе автоматического оповещения в ЭМ приходят следующие параметры:

Параметр Тип и формат данных Описание
OPERATION Строка Операция, которая инициировала данный платеж: CreatePayment, InitRecurrent, LinkCard, CheckCard.  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
PAY_ID Число (long) Уникальный идентификатор Платежа в системе учета Сервиса.  Присутствует всегда.
MPAY_ID Строка, длиной до 150 символов Идентификатор Платежа в системе учета ЭМ.  Присутствует если его указали при инициализации платежа, т.к. является необязательным параметром для LinkCard, CheckCard.
STATUS Число (int) Статус Платежа (см. раздел «Статусы Платежа»).  Присутствует всегда.
SDCODE Число (int) Код, детализирующий статус Платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.  Присутствует всегда, когда указан статус.
DATETIME Дата в формате «YYYY-MM-DDThh:mm:ss±hhmm» Время создания Платежа в системе учета Сервиса. Например: «2011-01-31T13:48:22+0300»  Присутствует всегда.
AMOUNT Целое (int) Списанная или зарезервированная сумма в копейках, если Платеж успешен. Сумма к списанию, если Платеж неуспешен.  Присутствует всегда.
CURRENCY Константа «RUR»  Присутствует всегда, когда присутствует AMOUNT.
ACNUMBER Строка, длиной до 20 символов Маскированный номер Карты, с которой Клиент произвел оплату.  Например, « ** **** **** 1234».  Присутствует, если Платеж успешно проведен, либо зарезервирован.
CARDTYPE Строка, длиной до 10 символов Тип банковской карты, с которой произведена оплата («VISA», «MASTERCARD», «JCB», «DCL»)  Присутствует, если Платеж успешно проведен, либо зарезервирован.
3DS Число («0» или «1») Признак аутентификации 3DS:  «0» - платеж без 3DS  «1» - платеж с 3DS
AUTHCODE Строка, длиной до 8 символов Авторизационный код транзакции.  Присутствует, если Платеж успешно проведен, либо зарезервирован и код был выдан платежной системой.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766  Если ЭМ не передал номер телефона в CreatePayment, LinkCard, CheckCard, то будет передано значение, которое ввёл клиент.  Присутствует для ЭМ, для которых включен функционал работы с привязанными картами и которые поддерживают версию интернет-эквайринга 3 или выше. и клиент идентифицируется по номеру телефона.
PAYER_ID Строка, длиной до 30 символов Идентификатор плательщика. Присутствует для ЭМ, для которых включен функционал работы с привязанными картами и которые поддерживают версию интернет-эквайринга 3 или выше. и клиент идентифицируется не по номеру телефона.
PTYPE Число («1», «2» или «3») Тип платежа:  «1» - однофазный платеж;  «2» - двухфазный платеж;  «3» - тестовый платеж (LinkCard или CheckCard)  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
CARD_ID Целое (long) Идентификатор карты, который можно использовать в CreatePayment, InitRecurrent, UnlinkCard.  Присутствует если платеж был сделан с привязанной карты, либо идентификатор привязываемой карты через LinkCard.
CARD_HASH Строка Хэш-код карты. Присутствует, если RESULT=0 и Платеж успешно проведен, либо зарезервирован. Только для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
CARD_NAME Строка Имя карты.  Присутствует если платеж был сделан с привязанной карты и имя карты не пустое.
RETURN_URL Строка Адрес возврата Клиента на сайт ЭМ, переданный в CreatePayment, LinkCard, CheckCard.  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
FAIL_URL Строка Адрес возврата Клиента на сайт ЭМ в случае неуспешного платежа, переданный в CreatePayment, LinkCard, CheckCard.  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
HASH Строка, длиной 32 символа Подпись результата. Детальное описание см. ниже.  Присутствует всегда.
Другие параметры   Другие параметры, переданные в запросе CreatePayment, InitRecurrent, LinkCard, CheckCard

Результаты проведения Платежа, которые передаются в оповещении, подписываются Сервисом для обеспечения должного уровня безопасности.  ЭМ настоятельно рекомендуется проверять подпись сразу после получения оповещения.

Подпись передается в параметре HASH и является результатом вычисления хеш-функции md5 от следующей строки (порядок параметров важен):

PAY_ID=<payid>&MPAY_ID=<mpayid>&DATETIME=<datetime>&STATUS=<status>&AMOUNT=<amount>&CURRENCY=<currency>&LOGIN=<login>&PASSWD=<password>

Для проверки подписи ЭМ должен составить из полученных в оповещении значений, а также известного только ему и Сервису логина и пароля подобную строку и вычислить ее хеш используя функцию md5. После чего сравнить полученное значение с тем, что пришло в параметре HASH. Если значения совпадают, то проверка успешна. Если значения отличны, то проверка не пройдена, Платеж необходимо отменить и сотрудники ТСП должны незамедлительно обратиться в Службу информационной безопасности Компании: телефон: +7 960 270 50 42, e-mail: isecurity@1mps.ru.

При перенаправлении Клиента обратно на сайт ЭМ передаются следующие параметры:

Параметр Тип и формат данных Описание
PAY_ID Число (long) Уникальный идентификатор Платежа в системе учета Сервиса.  Присутствует всегда.
MPAY_ID Строка, длиной до 150 символов Идентификатор Платежа в системе учета ЭМ.  Присутствует если платеж был инициализирован через CreatePayment
Другие параметры   Другие параметры, переданные в запросе CreatePayment.

Операция GetPaymentStatus

Позволяет получить статус Платежа.

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

Параметр Тип и формат данных Описание
OPERATION Константа "GetPaymentStatus"  Обязательное поле.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательное поле.
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса, выданный при его создании.  Обязательное поле.
IDENTITY Строка длиной 32 символа Код, подтверждающий подлинность ЭМ. Правило вычисления кода см. выше.  Должен быть указан всегда.

Результат:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Сервисе;  «108» - Данная операция запрещена для данного ЭМ.  В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
OPERATION Строка Операция, которая инициировала данный платеж: CreatePayment, InitRecurrent, LinkCard, CheckCard.  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.  Присутствует, если найден платеж.
STATUS Число (int) Статус Платежа (см. раздел «Статусы Платежа»).  Присутствует, если RESULT=0.
SDCODE Число (int) Код, детализирующий статус Платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.  Присутствует всегда, когда указан статус.
PAY_ID Число (long) Уникальный идентификатор платежа в системе учета Сервиса (равен переданному на вход).  Присутствует, если RESULT=0.
MPAY_ID Строка, длиной до 150 символов Идентификатор Платежа в системе учета ЭМ.  Присутствует если его указали при инициализации платежа, т.к. является необязательным параметром для LinkCard, CheckCard.  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
DATETIME Дата в формате «YYYY-MM-DDThh:mm:ss±hhmm» Время создания платежа в системе учета Сервиса. Например: «2011-01-31T13:48:22+0300»  Присутствует, если RESULT=0.
AMOUNT Целое (int) Сумма платежа в копейках.  Присутствует, если RESULT=0.
REFUNDED_AMOUNT Целое (int) Общая сумма возвратов по платежу в копейках. Присутствует, если RESULT=0 и статус платежа partially refunded (6)
CURRENCY Константа «RUR»  Присутствует, если RESULT=0.
ACNUMBER Строка, длиной до 20 символов Маскированный номер карты, с которой Клиент произвел оплату.  Например, « ** **** **** 1234».  Присутствует, если RESULT=0 и Платеж успешно проведен, либо зарезервирован.
CARDTYPE Строка, длиной до 10 символов Тип банковской карты, с которой произведена оплата («VISA», «MASTERCARD», «JCB», «DCL»)  Присутствует, если RESULT=0 и Платеж успешно проведен, либо зарезервирован.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766 Если ЭМ не передал номер телефона в CreatePayment, LinkCard, CheckCard, то будет передано значение, которое ввёл клиент.  Присутствует для ЭМ, для которых включен функционал работы с привязанными картами и которые поддерживают версию интернет-эквайринга 3 или выше.и клиент идентифицируется по номеру телефона.
PAYER_ID Строка, длиной до 30 символов Идентификатор плательщика. Присутствует для ЭМ, для которых включен функционал работы с привязанными картами и которые поддерживают версию интернет-эквайринга 3 или выше.и клиент идентифицируется не по номеру телефона.
PTYPE Число («1», «2» или «3») Тип платежа:  «1» - однофазный платеж;  «2» - двухфазный платеж;  «3» - тестовый платеж (LinkCard или CheckCard)    Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
CARD_ID Целое (long) Идентификатор карты, который можно использовать в CreatePayment, InitRecurrent, UnlinkCard.  Присутствует если платеж был сделан с привязанной карты, либо идентификатор привязываемой карты через LinkCard.
CARD_HASH Строка Хэш-код карты. Присутствует, если RESULT=0 и Платеж успешно проведен, либо зарезервирован. Только для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
CARD_NAME Строка Имя карты.  Присутствует если платеж был сделан с привязанной карты и имя карты не пустое.
RETURN_URL Строка Адрес возврата Клиента на сайт ЭМ, переданный в CreatePayment, LinkCard, CheckCard.  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
FAIL_URL Строка Адрес возврата Клиента на сайт ЭМ в случае неуспешного платежа, переданный в CreatePayment, LinkCard, CheckCard.  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
3DS Число («0» или «1») Признак аутентификации 3DS:  «0» - платеж без 3DS  «1» - платеж с 3DS
AUTHCODE Строка, длиной до 8 символов Авторизационный код транзакции.  Присутствует, если RESULT=0, Платеж успешно проведен, либо зарезервирован, и код был выдан платежной системой.
HASH Строка, длиной 32 символа Подпись результата. Формируется аналогичным образом, как и в оповещении. Детальное описание см. в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».  Присутствует, если RESULT=0.
Другие параметры   Другие параметры, переданные в запросе CreatePayment, InitRecurrent, LinkCard, CheckCard  Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.

Операция ConfirmPayment

В случае инициации двухфазного платежа (т.е. в операции  CreatePayment значение  PTYPE=2) после успешного резервирования денежных средств Платеж ожидает подтверждения, либо отмены со стороны ЭМ. Операция  ConfirmPayment подтверждает Платеж и списывает ранее зарезервированные денежные средства с банковской карты Клиента. Операцию  ConfirmPayment для Платежа необходимо выполнить не позднее чем через двенадцать (12) часов после успешного резервирования денежных средств. Иначе резервирование будет снято, а Платеж отменен по таймауту.

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

Параметр Тип и формат данных Описание
OPERATION Константа "ConfirmPayment"  Обязательное поле.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательное поле.
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса, выданный при его создании.  Обязательное поле.
IDENTITY Строка длиной 32 символа Код, подтверждающий подлинность ЭМ. Правило вычисления кода см. выше.  Должен быть указан всегда.

Результат:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции:  «0» - операция успешно выполнена;  «1» - выполнение операции закончилось неудачей, см. статус платежа и детализирующий код;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой; «21» - платеж находится в обработке на стороне банка (см. подробное описание после таблицы); «106» - платеж находится в статусе отличном от authorized (1) и не может быть подтвержден. Актуальный статус вернется в параметре STATUS. «108» - Данная операция запрещена для данного ЭМ. В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса.  Присутствует, если RESULT=0, 1 или 106.
STATUS Число (int) Статус Платежа (см. раздел «Статусы Платежа»).  Присутствует, если RESULT=0, 1 или 106.
SDCODE Число (int) Код, детализирующий статус Платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.  Присутствует всегда, когда указан статус.

ВНИМАНИЕ: при получении кода "21" следует ожидать нотификации от Системы или самостоятельно опрашивать состояние платежа (GetPaymentStatus), до тех пор, пока статус платежа не сменится с 4 (в процессе) на другой. Статус необходимо опрашивать не чаще чем раз в 5 минут, и не более 3 часов. Если после 3-х часов статус платежа не изменится, рекомендуется обратиться в поддержку.

Операция CancelPayment

В случае инициации двухфазного платежа (т.е. в операции  CreatePayment значение  PTYPE=2) после успешного резервирования денежных средств Платеж ожидает подтверждения, либо отмены со стороны ЭМ.

Операция  CancelPayment отменяет Платеж и снимает резервирование денежных средств на банковской карте Клиента.

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

Параметр Тип и формат данных Описание
OPERATION Константа "CancelPayment"  Обязательное поле.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательное поле.
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса, выданный при его создании.  Обязательное поле.
IDENTITY Строка длиной 32 символа Код, подтверждающий подлинность ЭМ. Правило вычисления кода см. выше.  Должен быть указан всегда.

Результат:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции:   «0» - операция успешно выполнена;   «1» - выполнение операции закончилось неудачей, см. статус платежа и детализирующий код;   «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;   «3» - при выполнении операции произошел внутренний сбой;   «106» - платеж находится в статусе отличном от authorized (1) и не может быть отменен. Актуальный статус вернется в параметре STATUS.   «108» - Данная операция запрещена для данного ЭМ. В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
PAY_ID Целое (long) Уникальный идентификатор платежа в системе учета Сервиса.  Присутствует, если RESULT=0, 1 или 106
STATUS Число (int) Статус Платежа (см. раздел «Статусы Платежа»).  Присутствует, если RESULT=0, 1 или 106.
SDCODE Число (int) Код, детализирующий статус платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.  Присутствует всегда, когда указан статус.

Операция ReversalPayment *

Отмена платежа в статусе  completed (2), если по данному платежу невозможно сделать отмену, будет возвращен RESULT=112. В таком случае можно воспользоваться операцией по возврату средств RefundPayment.

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

Параметр Тип и формат данных Описание
OPERATION Константа "ReversalPayment"  Обязательное поле.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательное поле.
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса, выданный при его создании.  Обязательное поле.
HASH Строка длиной 32 символа Код, подтверждающий подлинность запроса. Правило вычисления кода описано ниже.  Обязательное поле.

Значение HASH является результатом вычисления хеш-функции md5 от следующей строки (порядок параметров важен):

OPERATION=ReversalPayment&TERMINAL_ID=<terminalid>&PAY_ID=<payid>&LOGIN=<login>&PASSWD=<password>

<terminalid> - идентификатор ЭМ из запроса

<payid> - идентификатор платежа из запроса

<login> - логин ЭМ

<password> - пароль ЭМ

Результат:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции: «0» - операция успешно выполнена; «1» - выполнение операции закончилось неудачей, см. статус платежа и детализирующий код; «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC; «3» - при выполнении операции произошел внутренний сбой; «106» - платеж находится в статусе отличном от completed (2) и не может быть отменен. Актуальный статус вернется в параметре STATUS. «108» - данная операция запрещена для данного ЭМ. «112» - отмена платежа невозможна, используйте операцию RefundPayment «113» - невозможно сделать отмену в данный момент времени В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку. Может отсутствовать для ряда ошибок.
PAY_ID Целое (long) Уникальный идентификатор платежа в системе учета Сервиса. Присутствует, если RESULT=0, 1 или 106
STATUS Число (int) Статус Платежа (см. раздел «Статусы Платежа»). Присутствует, если RESULT=0, 1 или 106.
SDCODE Число (int) Код, детализирующий статус платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет. Присутствует всегда, когда указан статус.

Операция RefundPayment *

Полный или частичный возврат средств. Данную операцию можно выполнить если платеж находится в статусе  completed (2) или  partially refunded (6).

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

Параметр Тип и формат данных Описание
OPERATION Константа "RefundPayment"  Обязательное поле.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательное поле.
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса, выданный при его создании.  Обязательное поле.
REFUND_AMOUNT Целое (int) Сумма возврата в копейках. Обязательное поле.
HASH Строка длиной 32 символа Код, подтверждающий подлинность запроса. Правило вычисления кода описано ниже. Обязательное поле.

Значение HASH является результатом вычисления хеш-функции md5 от следующей строки (порядок параметров важен):

OPERATION=RefundPayment&TERMINAL_ID=<terminalid>&PAY_ID=<payid>&REFUND_AMOUNT=<refundamount>&LOGIN=<login>&PASSWD=<password>

<terminalid> - идентификатор ЭМ из запроса

<payid> - идентификатор платежа из запроса

<refundamount> - сумма возврата из запроса

<login> - логин ЭМ

<password> - пароль ЭМ

Результат:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции: «0» - операция успешно выполнена; «1» - выполнение операции закончилось неудачей, см. статус платежа и детализирующий код; «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC; «3» - при выполнении операции произошел внутренний сбой; «106» - платеж находится в статусе отличном от completed (2) или partially refunded (6). Актуальный статус вернется в параметре STATUS. «108» - данная операция запрещена для данного ЭМ. «112» - возврат платежа не возможен, используйте операцию ReversalPayment «113» - невозможно сделать возврат в данный момент времени «114» - указанная сумма возврата превышает максимально возможную для возврата по данной транзакции «115» - нарушение общих лимитов ЭМ В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
PAY_ID Целое (long) Уникальный идентификатор платежа в системе учета Сервиса.  Присутствует, если RESULT=0, 1 или 106
REFUND_ID Целое (long) Уникальный идентификатор возврата в системе учета Сервиса. Присутствует, если RESULT = 0
REFUNDED_AMOUNT Целое (long) Общая сумма возвратов по платежу в копейках. Присутствует, если RESULT = 0
STATUS Число (int) Статус Платежа (см. раздел «Статусы Платежа»).  Присутствует, если RESULT=0, 1 или 106.
SDCODE Число (int) Код, детализирующий статус платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.  Присутствует всегда, когда указан статус.

Операция LinkCard

Запрос адреса страницы для привязки новой банковской карты к номеру телефона.

Привязка карты производится за счет холдирования небольшой случайной суммы (обычно от 1 до 10 рублей) на карте клиента и последующего автоматического возврата. Для контроля процесса привязки, ЭМ в ответе получает PAY_ID. Который затем будет использоваться в нотификации ЭМ о результате платежа, или ЭМ сам может проверить статус с помощью GetPaymentStatus.

В случае успеха, ЭМ привязывает карту с помощью SendLinkCode + ConfirmLinkCode.

Операция доступна для ЭМ, для которых включен функционал работы с привязанными картами.

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

Параметр Обязательный Тип и формат данных Описание
OPERATION да const Наименование операции - «LinkCard».
TERMINAL_ID да long Идентификатор ЭМ, выданный при подключении
MPAY_ID нет Строка, длиной до 150 символов Идентификатор платежа в системе учета ЭМ. Должен быть уникальным в рамках одного ЭМ.
PAYER_PHONE нет 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766 Обязательное поле если не указан PAYER_ID
PAYER_ID нет Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Обязательное поле, если не указан PAYER_PHONE  Можно использовать только после согласования с менеджером.
OFFER_URL нет varchar(512) Ссылка на публичную оферту
FAIL_URL нет varchar(512) Адрес возврата Клиента на сайт ЭМ в случае неуспешного платежа. Правила возврата описаны в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».
RETURN_URL нет varchar(512) Адрес возврата Клиента на сайт ЭМ. Правила возврата описаны в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».  Должен быть указан, если указан параметр FAIL_URL.
IDENTITY да char(32) Код, подтверждающий подлинность ЭМ.

Кроме перечисленных выше параметров запрос может содержать любые другие параметры, которые будут присутствовать в оповещении ТСП о результатах.

Максимальная суммарная длина таких параметров, включая их имена, значения, знаки «=» и «&» не должна превышать 512 символов.

Параметры ответа:

Параметр Тип и формат данных Описание
RESULT int Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Системе;  «106» - Платеж с таким MPAY_ID уже успешно совершен, либо находится в обработке, либо ждет подтверждения.  «108» - Данная операция запрещена для данного ЭМ.  В ответе присутствует всегда.
RESULT_DESC string Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
LINK_URL string URL encoded строка содержащая сгенерированную ссылку, на которую надо перенаправить Клиента для привязки карты к номеру телефона.  Присутствует в случае успешного выполнения операции.
PAY_ID Число (long) Уникальный идентификатор специального платежа по привязке карты в системе учета Сервиса. ЭМ должен сохранить этот идентификатор для выполнения других операций с Платежом.  Присутствует в случае успешной инициации Платежа, либо когда Платеж уже совершен (RESULT=106).
SIG Строка Подпись, которая должна присутствовать при перенаправлении Клиента на страницу оплаты. Должна быть использована, в случае если ЭМ самостоятельно формирует ссылку для перенаправления Клиента, а не использует LINK_URL.  Присутствует в случае успешного создания Платежа.

Операция CheckCard

Запрос адреса страницы для проверки ранее привязанной банковской карты.

Проверка карты производится за счет холдирования небольшой случайной суммы (обычно от 1 до 10 рублей) на карте клиента и последующего автоматического возврата. Для контроля процесса проверки, ЭМ в ответе получает PAY_ID. Который затем будет использоваться в нотификации ЭМ о результате платежа, или ЭМ сам может проверить статус с помощью GetPaymentStatus.

Операция доступна для ЭМ, для которых включен функционал работы с привязанными картами.

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

Параметр Обязательный Тип и формат данных Описание
OPERATION да const Наименование операции - «CheckCard».
TERMINAL_ID да long Идентификатор ЭМ, выданный при подключении
MPAY_ID нет Строка, длиной до 150 символов Идентификатор платежа в системе учета ЭМ. Должен быть уникальным в рамках одного ЭМ.
PAYER_PHONE нет 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766  Обязательное поле если не указан PAYER_ID
PAYER_ID нет Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Обязательное поле, если не указан PAYER_PHONE  Можно использовать только после согласования с менеджером.
OFFER_URL нет varchar(512) Ссылка на публичную оферту  Необязательное поле
CARD_ID нет Целое (long) Идентификатор ранее привязанной карты  Необязательное поле. Должно быть заполнено если не указан PAY_ID
PAY_ID нет Целое (long) Идентификатор ранее завершенного платежа.  Необязательное поле. Должно быть заполнено, если не указан CARD_ID
FAIL_URL нет varchar(512) Адрес возврата Клиента на сайт ЭМ в случае неуспешного платежа. Правила возврата описаны в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».
RETURN_URL нет varchar(512) Адрес возврата Клиента на сайт ЭМ. Правила возврата описаны в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».  Должен быть указан, если указан параметр FAIL_URL.
IDENTITY да char(32) Код, подтверждающий подлинность ЭМ.

Кроме перечисленных выше параметров запрос может содержать любые другие параметры, которые будут присутствовать в оповещении ТСП о результатах.

Максимальная суммарная длина таких параметров, включая их имена, значения, знаки «=» и «&» не должна превышать 512 символов.

Параметры ответа:

Параметр Тип и формат данных Описание
RESULT int Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Системе;  «106» - Платеж с таким MPAY_ID уже успешно совершен, либо находится в обработке, либо ждет подтверждения.  «108» - Данная операция запрещена для данного ЭМ.  «109» - Истёк срок годности карты  В ответе присутствует всегда.
RESULT_DESC string Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
LINK_URL string URL encoded строка, содержащая сгенерированную ссылку, на которую надо перенаправить Клиента для привязки карты к номеру телефона.Присутствует в случае успешного выполнения операции.
PAY_ID Число (long) Уникальный идентификатор специального платежа по привязке карты в системе учета Сервиса. ЭМ должен сохранить этот идентификатор для выполнения других операций с Платежом.  Присутствует в случае успешной инициации Платежа, либо, когда Платеж уже совершен (RESULT=106).
SIG Строка Подпись, которая должна присутствовать при перенаправлении Клиента на страницу оплаты. Должна быть использована, в случае если ЭМ самостоятельно формирует ссылку для перенаправления Клиента, а не использует LINK_URL.  Присутствует в случае успешного создания Платежа.

Операция UnlinkCard

Удаление привязки банковской карты к телефону.

Операция доступна для ЭМ, для которых включен функционал работы с привязанными картами.

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

Параметр Обязательный Тип и формат данных Описание
OPERATION да const Наименование операции - «UnlinkCard».
TERMINAL_ID да long Идентификатор ЭМ, выданный при подключении
PAYER_PHONE нет 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766 Обязательное поле, если не указан PAYER_ID
PAYER_ID нет Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Обязательное поле, если не указан PAYER_PHONE  Можно использовать только после согласования с менеджером.
CARD_ID да long Идентификатор карты, для которой необходимо удалить привязку к PAYER_PHONE или PAYER_ID
IDENTITY да char(32) Код, подтверждающий подлинность ЭМ.

Параметры ответа:

Параметр Тип и формат данных Описание
RESULT число Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Системе;  «108» - Данная операция запрещена для данного ЭМ.  Присутствует всегда.
RESULT_DESC строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766  Присутствует если передан в запросе
PAYER_ID Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Присутствует если передан в запросе
CARD_HASH строка Хэш-код удаленной карты Присутствует в случае успеха
LINKED_CARDS строка Массив привязанных карт в формате JSON с данными по каждой карте:
  1. card_id - идентификатор карты, используемый в InitRecurrent, UnlinkCard и др.
  2. card_number - маскированный номер карты (например, « ** **** **** 1234»)
  3. card_name - наименование карты (например, «мама») expired - просрочена карта или нет, присутствует когда карта просрочена и равно true # cardtype - тип банковской карты («VISA», «MASTERCARD», «JCB», «DCL» и т.д.) 
  4. cardhash - хэш-код карты Пример: 
    [{"name":"mama","pan":"**** **** **** 1234",
    
    "card_id":123456,"cardtype":"VISA",
    "cardhash":"51fad05a838b1fe8375a26ca2f12932b6debaccd"},
    {"name":"papa","pan":"**** **** **** 1245",
    "card_id":123457,"cardtype":"VISA",
    "cardhash":"739d43bda8435f03b4bf23104aded07cd39df23e"}]

    Присутствует в случае успеха.

Операция GetLinkedCards

Возвращает список банковских карт привязанных к указанному номеру телефона.

Операция доступна для ЭМ, для которых включен функционал работы с привязанными картами.

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

Параметр Обязательный Тип и формат данных Описание
OPERATION да const Наименование операции - «GetLinkedCards»
TERMINAL_ID да long Идентификатор ЭМ, выданный при подключении
PAYER_PHONE нет 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766  Обязательное поле, если не указан PAYER_ID
PAYER_ID нет Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Обязательное поле, если не указан PAYER_PHONE  Можно использовать только после согласования с менеджером.
IDENTITY да char(32) Код, подтверждающий подлинность ЭМ.

Параметры ответа:

Параметр Тип и формат данных Описание
RESULT число Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Системе;  «108» - Данная операция запрещена для данного ЭМ.  Присутствует всегда
RESULT_DESC строка Строка, детализирующая ошибку.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766  Присутствует если передан в запросе
PAYER_ID Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Присутствует если передан в запросе
LINKED_CARDS строка Массив привязанных карт в формате JSON с данными по каждой карте: id - идентификатор карты, используемый в InitRecurrent pan - маскированный номер карты (например, "1234 56** **** 1234") name - наименование карты (например, «мама») expired - просрочена карта или нет, присутствует когда карта просрочена и равно true -"expired":true cardtype - тип банковской карты («VISA», «MASTERCARD», «JCB», «DCL» и т.д.)  cardhash - хэш-код карты Пример: 
[{"name":"mama","pan":"**** **** **** 1234",

"card_id":123456,"cardtype":"VISA",
"cardhash":"51fad05a838b1fe8375a26ca2f12932b6debaccd"},
{"name":"papa","pan":"**** **** **** 1245",
"card_id":123457,"cardtype":"VISA",
"cardhash":"739d43bda8435f03b4bf23104aded07cd39df23e"}]

Присутствует в случае успеха

Операция SendLinkCode

Формирует и отправляет случайный пароль клиенту, по которому будет производиться привязка карты в ConfirmLinkCode. Номер телефона определяется по проведенной транзакции (PAY_ID), транзакция должна быть успешно завершена с использованием 3d-secure.

Операция доступна для ЭМ, для которых включен функционал работы с привязанными картами.

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

Параметр Тип и формат данных Описание
OPERATION Константа Наименование операции - «SendLinkCode».  Обязательный параметр
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательный параметр
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса, выданный при его создании.  Обязательный параметр
TIMEOUT int Время жизни (в минутах) для кода подтверждения, отправляемого в смс  Если присутствует, значение должно быть от 1 до 1440.  Необязательный параметр.
IDENTITY Строка длиной 32 символа Код, подтверждающий подлинность ЭМ.  Обязательный параметр

Параметры ответа:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Сервисе;  «5» - карта уже привязана;  «6» - транзакция по которой происходит привязка - не завершена или не успешна;  «7» - транзакция по которой происходит привязка не прошла 3-D Secure аутентификацию;  «8» - для данного клиента авторизация временно заблокирована;  «108» - Данная операция запрещена для данного ЭМ.  «111» - Невозможно отправить сообщение.  В ответе присутствует всегда.
RESULT_DESC Строка Строка, детализирующая ошибку.  Может отсутствовать для ряда ошибок.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766    Присутствует если RESULT=0 и клиент идентифицируется по телефону.

Операция ConfirmLinkCode

Подтверждение привязки. Передается код, который ввел клиент (см. SendLinkCode), если проверка кода пройдет, то карта будет привязана данному клиенту. Номер телефона определяется по проведенной транзакции (PAY_ID), транзакция должна быть успешно завершена с использованием 3d-secure.

Операция доступна для ЭМ, для которых включен функционал работы с привязанными картами.

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

Параметр Тип и формат данных Описание
OPERATION Константа Наименование операции - «ConfirmLinkCode».  Обязательный параметр.
TERMINAL_ID Целое (long) Идентификатор ЭМ, выданный при подключении.  Обязательный параметр.
PAY_ID Целое (long) Уникальный идентификатор Платежа в системе учета Сервиса, выданный при его создании.  Обязательный параметр.
LINK_CODE varchar(10) Код, отправленный в смс на вызов SendLinkCode  Обязательный параметр.
CARD_NAME varchar(128) Альтернативное название привязываемой карты для дальнейшего отображения пользователю на страницах выбора карты  Необязательный параметр.
IDENTITY Строка длиной 32 символа Код, подтверждающий подлинность ЭМ.  Обязательный параметр.

Параметры ответа:

Параметр Тип и формат данных Описание
RESULT Число Результат выполнения операции:  «0» - операция успешно выполнена;  «2» - не правильно указан входной параметр, имя параметра передается в комментариях в RESULT_DESC;  «3» - при выполнении операции произошел внутренний сбой в Сервисе;  «5» - карта уже привязана;  «6» - транзакция по которой происходит привязка - не завершена или не успешна;  «7» - транзакция по которой происходит привязка не прошла 3-D Secure аутентификацию;  «8» - для данного клиента авторизация временно заблокирована;  «9» - пароль устарел (необходимо заново вызвать SendLinkCode);  «10» - неверный пароль  «108» - Данная операция запрещена для данного ЭМ.  В ответе присутствует всегда.
RESULT_DESC строка Строка, детализирующая ошибку. Может отсутствовать для ряда ошибок.
PAYER_PHONE 11 цифр Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766 Присутствует в ответе, если прошли основные проверки, в запросе указан верный номер платежа и клиент идентифицируется по телефону
PAYER_ID Строка, длиной до 30 символов Идентификатор плательщика. Используется вместо PAYER_PHONE, если клиент идентифицируется не по телефону. Присутствует в ответе, если прошли основные проверки, в запросе указан верный номер платежа и клиент идентифицируется не по телефону.
CARD_ID long Идентификатор привязанной к PAYER_PHONE банковской карты. Присутствует в случае успеха и при RESULT=5
CARD_HASH строка Хэш-код карты. Присутствует в случае успеха и при RESULT=5
FOREIGN_LINKS строка Если привязанная карта привязана также к другому номеру телефона (или к другим), то в этом параметре придет JSON массив, со списком payer_phone+card_id. Пример:
[{"payer_phone":"79998887766","card_id":123456},
{"payer_phone":"79998887767","card_id":123457}]

Присутствует в случае успеха и при наличие привязок к другим номерам.    Если плательщик в ЭМ идентифицируется не по телефону, то вместо payer_phone будет приходить payer_id

Приложение № 1

Перечень товаров/услуг, оплачиваемых через ЭМ ТСП с использованием банковских карт

Товар/услуга Краткое описание Перечень реквизитов оплаты товара/услуги При оплате происходит пополнение постоянного счета (Да/Нет)
Пример1: Mobile Оплата мобильной связи Account - номер мобильного счета  FIO - ФИО получателя  Sum - сумма пополнения счета Да
Пример2: Books Продажа книг Order - номер заказа  Sum - сумма заказа Нет

Приложение № 2

*Перечень реквизитов платежа и соответствующие им ошибки и статусы платежа
Обозначения:*

XXX% - значение атрибута начинается с «XXX»

  • * - любое значение атрибута
  • > - значение числового атрибута больше чем указанное значение
  • < - значение числового атрибута меньше чем указанное значение

Успешные платежи:

Значения реквизитов Результат
Pan: 415481%  ExpDate: *  Cvv2: *  Sum: * Успешный платеж

Ошибки, получаемые клиентом при оплате товара:

Значения реквизитов Результат
Pan: 4025330%  ExpDate: *  Cvv2: *  Sum: * Неверный номер карты, клиент может повторить оплату в пределах допустимого числа попыток
Pan: 4025331%  ExpDate: 12/12  Cvv2: *  Sum: * Неверный срок действия карты, клиент может повторить оплату в пределах допустимого числа попыток
Pan: 4025332%  ExpDate: *  Cvv2: 999  Sum: * Неверный CVV2 код, клиент может повторить оплату в пределах допустимого числа попыток

Ошибки, приводящие к отрицательному результату оплаты товара:

Значения реквизитов Результат
Pan: 4025333%  ExpDate: 11/11  Cvv2: *  Sum: * Отказ в проведении операции для указанных реквизитов.  Значение детализирующего кода при проверке статуса платежа: 210.
Pan: 4025333%  ExpDate: 11/12  Cvv2: *  Sum: >100000 (копейки) Операции по указанным реквизитам временно невозможны.  Значение детализирующего кода при проверке статуса платежа: 220.
Pan: 4025334%  ExpDate: *  Cvv2: *  Sum: * Техническая ошибка взаимодействия с платежной системой.  Значение детализирующего кода при проверке статуса платежа: 309.

Ошибки, происходящие при подтверждении 2-х фазного платежа, в зависимости от платежных реквизитов, указанных клиентом:

Значения реквизитов Результат
Pan: 4025331%  ExpDate: 11/12  Sum: * Отказ в проведении операции.  Значение детализирующего кода при проверке статуса платежа: 210.
Pan: 4025331%  ExpDate: 12/13  Sum: * Техническая ошибка взаимодействия с платежной системой.  Значение детализирующего кода при проверке статуса платежа: 309.

OPERATION

Строка

Операция, которая инициировала данный платеж: CreatePayment, InitRecurrent, LinkCard, CheckCard.
Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.
Присутствует, если найден платеж.

STATUS

Число (int)

Статус Платежа (см. раздел «Статусы Платежа»).
Присутствует, если RESULT=0.

SDCODE

Число (int)

Код, детализирующий статус Платежа (см. раздел «Статусы Платежа») или «-1», если детализации нет.
Присутствует всегда, когда указан статус.

PAY_ID

Число (long)

Уникальный идентификатор платежа в системе учета Сервиса (равен переданному на вход).
Присутствует, если RESULT=0.

MPAY_ID

Строка, длиной до 150 символов

Идентификатор Платежа в системе учета ЭМ.
Присутствует если его указали при инициализации платежа, т.к. является необязательным параметром для LinkCard, CheckCard.
Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.

DATETIME

Дата в формате «YYYY-MM-DDThh:mm:ss±hhmm»

Время создания платежа в системе учета Сервиса. Например: «2011-01-31T13:48:22+0300»
Присутствует, если RESULT=0.

AMOUNT

Целое (int)

Сумма платежа в копейках.
Присутствует, если RESULT=0.

CURRENCY

Константа

«RUR»
Присутствует, если RESULT=0.

ACNUMBER

Строка, длиной до 20 символов

Маскированный номер карты, с которой Клиент произвел оплату.
Например, « ** **** **** 1234».
Присутствует, если RESULT=0 и Платеж успешно проведен, либо зарезервирован.

CARDTYPE

Строка, длиной до 10 символов

Тип банковской карты, с которой произведена оплата («VISA», «MASTERCARD», «JCB», «DCL»)
Присутствует, если RESULT=0 и Платеж успешно проведен, либо зарезервирован.

PAYER_PHONE

11 цифр

Номер телефона плательщика, включая код страны - 11 цифр. Например: 79998887766
Если ЭМ не передал номер телефона в CreatePayment, LinkCard, CheckCard, то будет передано значение, которое ввёл клиент.
Присутствует для ЭМ, для которых включен функционал работы с привязанными картами и которые поддерживают версию интернет-эквайринга 3 или выше.

PTYPE

Число («1», «2» или «3»)

Тип платежа:
«1» - однофазный платеж;
«2» - двухфазный платеж;
«3» - тестовый платеж (LinkCard или CheckCard)
Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.

CARD_ID

Целое (long)

Идентификатор карты, который можно использовать в CreatePayment, InitRecurrent, UnlinkCard.
Присутствует если платеж был сделан с привязанной карты, либо идентификатор привязываемой карты через LinkCard.

CARD_NAME

Строка

Имя карты.
Присутствует если платеж был сделан с привязанной карты и имя карты не пустое.

RETURN_URL

Строка

Адрес возврата Клиента на сайт ЭМ, переданный в CreatePayment, LinkCard, CheckCard.
Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.

FAIL_URL

Строка

Адрес возврата Клиента на сайт ЭМ в случае неуспешного платежа, переданный в CreatePayment, LinkCard, CheckCard.
Присутствует для ЭМ, которые поддерживают версию интернет-эквайринга 3 или выше.

3DS

Число («0» или «1»)

Признак аутентификации 3DS:
«0» - платеж без 3DS
«1» - платеж с 3DS

AUTHCODE

Строка, длиной до 8 символов

Авторизационный код транзакции.
Присутствует, если RESULT=0, Платеж успешно проведен, либо зарезервирован, и код был выдан платежной системой.

HASH

Строка, длиной 32 символа

Подпись результата. Формируется аналогичным образом, как и в оповещении. Детальное описание см. в разделе «Оповещение ЭМ о результате платежа и возврат Клиента на сайт ЭМ».
Присутствует, если RESULT=0.

Другие параметры

Приложение № 3 - пример страницы работающей с криптограммой

[lt]!DOCTYPE html[gt]
[lt]html[gt]
[lt]head[gt]
[nbsp][lt]meta charset="utf-8"[gt]
[nbsp][lt]title[gt]Test Shop[lt]/title[gt]
[nbsp][lt]link rel="stylesheet" href="css/bootstrap.min.css"/[gt]
[nbsp][lt]link rel="stylesheet" href="css/bootstrap-theme.min.css"/[gt]
[nbsp][lt]style type="text/css"[gt]
[nbsp][nbsp]body {
[nbsp][nbsp][nbsp]margin-top: 20px;
[nbsp][nbsp]}

[nbsp][nbsp].panel-title {
[nbsp][nbsp][nbsp]display: inline;
[nbsp][nbsp][nbsp]font-weight: bold;
[nbsp][nbsp]}

[nbsp][nbsp].checkbox.pull-right {
[nbsp][nbsp][nbsp]margin: 0;
[nbsp][nbsp]}

[nbsp][nbsp].pl-ziro {
[nbsp][nbsp][nbsp]padding-left: 0px;
[nbsp][nbsp]}
[nbsp][lt]/style[gt]
[nbsp][lt]script type="text/javascript" src="js/jquery-1.9.1.min.js"[gt][lt]/script[gt]
[nbsp][lt]script type="text/javascript" src="js/jquery.mask.js"[gt][lt]/script[gt]
[nbsp][lt]script type="text/javascript" src="js/bootstrap.min.js"[gt][lt]/script[gt]
[nbsp][lt]script type="text/javascript" src="https://iadev.mobi-money.ru/mm-crypto.min.js"[gt][lt]/script[gt]
[lt]/head[gt]

[lt]body class="flexible"[gt]
[lt]div id="checkoutDemoContainer"[gt]
[nbsp][lt]div id="paymentContainer"[gt]
[nbsp][nbsp][lt]div class="container"[gt]
[nbsp][nbsp][nbsp][lt]div class="row"[gt]
[nbsp][nbsp][nbsp][nbsp][lt]div class="col-xs-12 col-md-4"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="panel panel-default"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="panel-heading"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]h3 class="panel-title"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]Пример платежной формы
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/h3[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="panel-body"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]form role="form" id="paymentForm" method="post" action="/testshop/card"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]!-- shop backend address, via SSL --[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]input type="hidden" name="crypt" id="crypt"/[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="form-group"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]label for="cardNumber"[gt]Номер карты[lt]/label[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]input type="text" id="cardNumber" value="" class="form-control"
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]placeholder="Введите номер карты" data-mm="cardNumber" required/[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="form-group"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]label for="name"[gt]Имя[lt]/label[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]input type="text" id="name" value="VASYA PUPKIN"
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]class="form-control" style="text-transform: uppercase;" data-mm="name"
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]placeholder="Имя латиницей" required[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="row"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="form-group col-xs-8 col-md-8"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]label for="expDateMonth"[gt]Действует до[lt]/label[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="col-xs-6 col-lg-6 pl-ziro"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]select id="expDateMonth" class="form-control" data-mm="expDateMonth"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="01"[gt]01[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="02"[gt]02[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="03"[gt]03[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="04"[gt]04[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="05"[gt]05[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="06"[gt]06[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="07"[gt]07[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="08"[gt]08[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="09"[gt]09[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="10"[gt]10[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="11"[gt]11[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="12" selected="1"[gt]12</option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/select[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="col-xs-6 col-lg-6 pl-ziro"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]select id="expDateYear" class="form-control" data-mm="expDateYear"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="15"[gt]2015[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="16"[gt]2016[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="17"[gt]2017[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="18" selected="1"[gt]2018[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="19"[gt]2019[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]option val="20"[gt]2020[lt]/option[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/select[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="col-xs-4 col-md-4 pull-right"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]div class="form-group"[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]label for="cvv"[gt]CVV[lt]/label[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]input type="text" id="cvv" value="123" class="form-control" data-mm="cvv"
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]placeholder="CVV" required[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/form[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][lt]br/[gt]
[nbsp][nbsp][nbsp][nbsp][nbsp][lt]button type="submit" class="btn btn-success btn-lg btn-block"
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]onclick="createCryptogram(); return false;" class="button" data-toggle="tooltip"
[nbsp][nbsp][nbsp][nbsp][nbsp][nbsp]data-placement="left" title="Tooltip on left"[gt]Оплатить
[nbsp][nbsp][nbsp][nbsp][nbsp][lt]/button[gt]
[nbsp][nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][nbsp][lt]/div[gt]
[nbsp][nbsp][lt]/div[gt]
[nbsp][lt]/div[gt]
[lt]/div[gt]

[lt]script[gt]
[nbsp]var encodeScript;

[nbsp]function createCryptogram() {
[nbsp][nbsp]var result = encodeScript.makeCryptogram();
[nbsp][nbsp]if (result.success) {
[nbsp][nbsp][nbsp]// сформирована криптограмма
[nbsp][nbsp][nbsp]$("#crypt").val(result.packet);
[nbsp][nbsp][nbsp]$("#paymentForm").submit();
[nbsp][nbsp][nbsp]console.log(result.packet);
[nbsp][nbsp]}
[nbsp][nbsp]else {
[nbsp][nbsp][nbsp]for (var msgKey in result.messages) {
[nbsp][nbsp][nbsp][nbsp]$("#" + msgKey).data("title", result.messages[msgKey]).tooltip({ trigger: "manual" }).tooltip("show").on("blur", function() {
[nbsp][nbsp][nbsp][nbsp][nbsp]$(this).tooltip("destroy");
[nbsp][nbsp][nbsp][nbsp]});
[nbsp][nbsp][nbsp]}
[nbsp][nbsp][nbsp]console.log(result);
[nbsp][nbsp]}
[nbsp]};

[nbsp]$(function() {
[nbsp][nbsp]$("#cardNumber").mask("9999 9999 9999 9?999 999", { placeholder: " " });
[nbsp][nbsp]$("#cvv").mask("999", { placeholder: " " });
[nbsp][nbsp]//replace 24316d89-2055-4d3f-9de3-45e998d3f59a with your UUID, and paymentForm with id of your form
[nbsp][nbsp]encodeScript = new mm.EncodeScript("24316d89-2055-4d3f-9de3-45e998d3f59a",
[nbsp][nbsp][nbsp]document.getElementById("paymentForm"));
[nbsp]});

[nbsp][lt]/script[gt]
[lt]/body[gt]
[lt]/html[gt]