Правильная ссылка на эту статью: |
Web Merchant Interface
Описание интерфейса сервиса Web Merchant Interface¶
дата последнего изменения: 11 ноября 2024
Содержание¶
- Основные термины
- Описание Web Merchant Interface
- Тестирование сервиса Web Merchant Interface
- Примеры использования интерфейса
- История платежей и бескомиссионный возврат
- Оповещение об ошибке платежа
Основные термины¶
Продавцом считается участник WebMoney Transfer, принимающий на свой WM-кошелек оплату от других участников системы с помощью сервиса Web Merchant Interface. Предполагается, что продавец принимает оплату за товары или услуги, предоставляемые им через Интернет, и следовательно, имеет собственный веб-сайт.
Покупателем считается участник WebMoney Transfer, желающий оплачивать услуги или товары, предлагаемые продавцом через Интернет.
Описание интерфейса Web Merchant Interface¶
ПАРАМЕТРЫ ПРИЕМА ПЛАТЕЖЕЙ¶
Помимо регистрации в WebMoney Transfer для приема платежей через сервис Web Merchant Interface продавец должен настроить ряд параметров, регулирующих порядок приема платежей и оповещения продавца о факте проведения платежа.
Настройка параметров выполняется на странице Настройки сайта сервиса — merchant.webmoney.com.
Для каждого кошелька, на который продавец принимает платежи, в сервисе хранится свой набор значений.
Полный перечень параметров и их назначение приведено ниже:
Название параметра | Формат | Описание |
Тестовый/Рабочий режимы | - | Флаг, устанавливающий режим обработки платежей в сервисе. В тестовом режиме Web Merchant Interface имитирует выполнение платежей (реально платежи не выполняются). По умолчанию выставляется тестовый режим. В тестовом режиме возможна оплата только через WM Keeper. Если флаг установлен в состояние "Выкл.", Web Merchant Interface во всех случаях будет сообщать покупателю о невозможности выполнения платежа. В рабочем режиме платежи идут обычным порядком. |
Торговое имя | 50 символов | Информация, которая будет показана покупателю при оплате. В данном поле целесообразно указать торговую марку, название сайта, сервиса, магазина и другую информацию, которая характеризует продаваемые через данный кошелек товары и услуги. |
Secret Key | 50 символов (case sensitive) | Строка символов, добавляемая к реквизитам платежа, высылаемым продавцу вместе с оповещением на Result URL. Эта строка используется для повышения надежности идентификации высылаемого оповещения. Содержание строки известно только сервису Web Merchant Interface и продавцу! Эта же строка символов используется в XML-интерфейсах, связанных с Web Merchant Interface и помогающих в его работе и использовании. К таким интерфейсам относятся, например, Интерфейс X18 или Интерфейс X20. |
Высылать Secret Key на Result URL, если Result URL обеспечивает секретность | - | Флаг, сообщающий сервису Web Merchant Interface о том, что Secret Key должен быть добавлен к высылаемому на веб-сайт продавца оповещению о платежах в том случае, если канал обеспечивает безопасную передачу на Result URL (используется протокол SSL, то есть Result URL имеет префикс "https://"). Если Result URL не использует SSL, то Secret Key высылаться не будет, даже если флаг установлен. Secret Key также не высылается, если Result URL переопределяется в форме запроса платежа (когда установлен флаг Позволять использовать URL, передаваемые в форме). |
Secret Key X20 | 50 символов (case sensitive) | Если продавец использует Интерфейс X20, чтобы встроить прием платежей в свое мобильное приложение или сервис, то зачастую необходимо осуществлять вызов интерфейса непосредственно из клиентского приложения (то есть для простых приложений и сервисов без участия серверной части или вообще при ее отсутствии), поэтому в целях безопасности нежелательно в вызовах интерфейса пользоваться стандартным Secret Key, чтобы его не скомпрометировать. Для этого можно указать в данном поле дополнительный Secret Key X20 и тогда Интерфейс X20 будет работать ТОЛЬКО с этой строкой. Также Secret Key X20 должен быть ОБЯЗАТЕЛЬНО указан в случае включения флага Обязательно требовать подпись платежной формы, так как он используется в процессе формирования данной подписи. |
Result URL | 255 символов (case sensitive) | URL (на веб-сайте продавца), на который сервис Web Merchant Interface посылает HTTP POST или SMTP-оповещение о совершении платежа с его детальными реквизитами. URL должен начинаться с префикса "http://", "https://" или "mailto:". В последнем случае оповещение будет высылаться на e-mail, указанный после префикса, - например, при указании mailto:shop@address.com оповещение будет выслано на e-mail shop@address.com. При использовании префикса "http://" или "https://" сервис посылает оповещение по портам 80 и 443 соответственно. Причем вызов Result URL выполняется два раза. Первый раз непосредственно перед выполнением платежа (для проверки работоспособности веб-сайт продавца), второй раз сразу после успешного выполнения платежа (для передачи параметров платежа). При первом вызове, если установлен флаг Передавать параметры в предварительном запросе, параметры предаются с использованием Формы предварительного запроса. Если флаг не установлен - вызов идет без параметров. При втором вызове параметры передаются через Форму оповещения о платеже. Сервер должен вернуть код 200, согласно протокола HTTP. |
Передавать параметры в предварительном запросе | - | Флаг, сообщающий сервису Web Merchant Interface о том, что в запросе передаваемом на Result URL веб-сайта продавца непосредственно перед попыткой выполнение платежа необходимо передать параметры через Форму предварительного запроса. В случае если флаг не установлен Предварительный запрос идет без передачи параметров. Если флаг передачи параметров установлен, веб-сайт продавца должен вернуть строку "YES" в ответе (строго 3 этих символа в верхнем регистре и только их в теле возвращаемого html-документа, без каких-либо еще тегов, форматирования и т.п.) для того, чтобы сервис Web Merchant Interface смог продолжить выполнение платежа. Если веб-сайт продавца вернет что-либо другое - платеж выполнен не будет, а ответ будет показан покупателю в сообщении об ошибке. Поэтому в случае принятия решения на предзапросе о том, что платеж не будет проведен, необходимо возвратить в теле возвращаемого html-документа подробный текст ошибки с инструкцией пользователю, почему платеж не может быть проведен и что необходимо сделать пользователю, чтобы платеж прошел. |
Proxy для Result URL | - | Когда по каким-либо причинам вызовы Result URL не проходят со стандартных IP адресов системы из-за ошибок маршрутизации, ограничений накладываемых провайдерами и т.п. можно выбрать один из перечисленных в данной настройке IP-адресов и запросы сервиса на Result URL будут приходить с выбранного адреса. |
Success URL | 255 символов (case sensitive) | URL (на веб-сайте продавца), на который будет переведен интернет-браузер покупателя в случае успешного выполнения платежа в сервисе Web Merchant Interface. URL должен иметь префикс "http://" или "https://". |
Метод вызова Success URL | - | Метод (POST, GET или LINK), который будет использоваться при переходе на Success URL. |
Fail URL | 255 символов (case sensitive) | URL (на веб-сайте продавца), на который будет переведен интернет-браузер покупателя в том случае, если платеж в сервисе Web Merchant Interface не был выполнен по каким-то причинам. URL должен иметь префикс "http://" или "https://". |
Метод вызова Fail URL | - | Метод (POST, GET или LINK), который будет использоваться при переходе на Fail URL. |
Позволять использовать URL, передаваемые в форме | - | Флаг, оповещающий Web Merchant Interface о том, что Result URL, Success URL, метод вызова Success URL, Fail URL и метод вызова Fail URL могут быть изменены в Форме запроса платежа. |
Высылать оповещение об ошибке платежа на кипер | - | Флаг, оповещающий Web Merchant Interface о том, что в случае возникновения ошибки при выполнении платежа необходимо послать оповещение на кипер продавца. |
Высылать оповещение об ошибке платежа на Result URL | - | Флаг, оповещающий Web Merchant Interface о том, что в случае возникновения ошибки при выполнении платежа необходимо послать оповещение на Result URL продавца. |
Метод формирования контрольной подписи оповещения о платеже | - | Алгоритм, который Web Merchant Interface использует для контроля подлинности оповещения, высылаемого на сайт продавца при выполнении платежа через сервис. Поддерживается два варианта: SHA256 и SIGN (MD5 не поддерживается, но оставлен для совместимости со старыми настройками). |
Обязательно требовать подтверждение транзакции по СМС | - | В случае включения данной опции покупатели смогут совершить оплату на кошелек, только с подтверждением через второй фактор SMS или Enum. Данная опция касается только платежей в WM и не касается дополнительных методов оплаты. |
Обязательно требовать подпись платежной формы | - | Включение данной опции требует от продавца вместе со стандартными полями обязательную передачу поля LMI_PAYMENTFORM_SIGN, содержащего подпись основных полей платежа, передаваемых в Форме запроса платежа. Подробнее о том как сформировать данное поле см. его описание ниже в Форме запроса платежа. Если данный флаг включен а в Форме запроса платежа поле LMI_PAYMENTFORM_SIGN не передается, то покупателю будет выдана ошибка. |
Дополнительные методы оплаты | - | В данном разделе настроек содержатся дополнительные методы оплаты, такие как чеки Paymer, ВМ-чеки , банковские карты, счета мобильных телефонов и т.п. Полный перечень дополнительных методов зависит от типа кошелька. Ссылки на подробные описания каждого способа, условия его использования и включения приведены непосредственно в каждом из способов на странице настроек кошелька |
Алгоритм выполнения платежа¶
Алгоритм выполнения платежа представлен на рисунке ниже.
ФОРМЫ HTML¶
Для передачи информации между веб-сайтом продавца и сервисом Web Merchant Interface используютcя пять основных HTML-формы:
- Форма запроса платежа - генерируется веб-сайтом продавца для формирования запроса на проведение платежа в сервисе Web Merchant Interface и передачи его через веб-браузер покупателя.
- Форма предварительного запроса - генерируется сервисом Web Merchant Interface для передачи параметров предварительного запроса на выполнение платежа на веб-сайт продавца, если установлен флаг Передавать параметры в предварительном запросе. Если флаг не установлен - не используется (запрос выполняется без параметров). Запрос передается без использования веб-браузера покупателя.
- Форма оповещения о платеже - генерируется сервисом Web Merchant Interface для передачи оповещения о платеже на веб-сайт продавца. Оповещение передается без использования веб-браузера покупателя.
- Форма выполненного платежа - генерируется сервисом Web Merchant Interface в случае успешного выполнения платежа и передается на веб-сайт продавца через веб-браузер покупателя.
- Форма невыполненного платежа - генерируется сервисом Web Merchant Interface в случае невыполнения платежа и передается на веб-сайт продавца через веб-браузер покупателя.
Форма запроса платежа¶
Эта форма передает запрос с веб-сайта продавца в сервис Web Merchant Interface через веб-браузер покупателя. Она должна иметь следующие атрибуты и поля:
Action - https://merchant.webmoney.com/lmi/payment_utf.asp
Method - POST
accept-charset - UTF-8
content-type - application/x-www-form-urlencoded
Fields - поля, передаваемые в форме, описаны в таблице ниже:
Название | HTML Field Name | Обязательный? | Описание |
Кошелек продавца | LMI_PAYEE_PURSE | Да | Кошелек продавца, на который покупатель должен совершить платеж. Формат - буква и 12 цифр. В настоящее время допускается использование кошельков Z-,E-, G-,X-,H-,L-,S-,F-,T-, M- и D-типа. |
Сумма платежа | LMI_PAYMENT_AMOUNT | Да | Сумма платежа, которую продавец желает получить от покупателя. Сумма должна быть больше нуля, дробная часть отделяется точкой. |
Внутренний номер покупки продавца | LMI_PAYMENT_NO | Нет | В этом поле продавец задает номер покупки в соответствии со своей системой учета. Несмотря на то, что параметр не является обязательным, мы рекомендуем всегда задавать его. Желательно использовать уникальный номер для каждого платежа, что позволит быстро получить относящуюся к нему информацию через другие интерфейсы системы WebMoney Transfer. Номер должен представлять собой целое число без знака не больше 999999999999999. |
Назначение платежа | LMI_PAYMENT_DESC | Да* | Описание товара или услуги. Формируется продавцом. Если присутствует, добавляется в назначение платежа в операцию перевода WebMoney. Максимальная длина - 255 символов. Кодировка UTF-8 |
Назначение платежа | LMI_PAYMENT_DESC_BASE64 | Да* | Описание товара или услуги в UTF-8 и далее закодированное алгоритмом Base64. Формируется продавцом. Если присутствует, то результат раскодирования будет подставлен вместо LMI_PAYMENT_DESC. Позволяет не зависеть от кодировки на сайте продавца. |
Режим тестирования | LMI_SIM_MODE | Нет | Дополнительное поле, определяющее режим тестирования. Действует только в режиме тестирования и может принимать одно из следующих значений: 0 или отсутствует: Для всех тестовых платежей сервис будет имитировать успешное выполнение; 1: Для всех тестовых платежей сервис будет имитировать выполнение с ошибкой (платеж не выполнен); 2: Около 80% запросов на платеж будут выполнены успешно, а 20% - не выполнены. |
Замена Result URL | LMI_RESULT_URL | Нет | Это поле позволяет продавцу временно изменить параметр "Result URL", установленный продавцом на странице настроек сайта Web Merchant Interface. Если в настройках установлен флаг "Позволять использовать URL, передаваемые в форме", то передаваемое значение заменяет значение параметра "Result URL", установленное в настройках на сайте Web Merchant Interface. В противном случае всегда используется значение, установленное в настройках на сайте Web Merchant Interface. Формат этого поля должен строго соответствовать значению параметра "Result URL". |
Замена Success URL | LMI_SUCCESS_URL | Нет | Это поле позволяет продавцу временно изменить параметр "Success URL", установленный им на странице настроек сайта Web Merchant Interface. Если в настройках установлен флаг "Позволять использовать URL, передаваемые в форме", то передаваемое значение заменяет значение параметра "Success URL", установленное в настройках на сайте Web Merchant Interface. В противном случае всегда используется значение, установленное в настройках на сайте Web Merchant Interface. Формат этого поля должен строго соответствовать значению параметра "Success URL". |
Замена метода вызова Success URL | LMI_SUCCESS_METHOD | Нет | Это поле позволяет продавцу временно изменить параметр "Метод вызова Success URL", установленный им на странице настроек сайта Web Merchant Interface. Если в настройках установлен флаг "Позволять использовать URL передаваемые в форме", то передаваемое в форме значение заменяет значение параметра "Метод вызова Success URL", установленное в настройках на сайте Web Merchant Interface. В противном случае всегда используется значение, установленное в настройках на сайте Web Merchant Interface. Это поле должно принимать значение 0, 1 или 2, что соответствует значениям параметра "Метод вызова Success URL" - "GET", "POST" или "LINK". |
Замена Fail URL | LMI_FAIL_URL | Нет | Это поле позволяет продавцу временно изменить параметр "Fail URL", установленный им на странице настроек сайта Web Merchant Interface. Если в настройках установлен флаг "Позволять использовать URL, передаваемые в форме", то передаваемое в форме значение заменяет значение параметра "Fail URL", установленное в настройках на сайте Web Merchant Interface. В противном случае всегда используется значение, установленное в настройках на сайте Web Merchant Interface. Формат этого поля должен строго соответствовать значению параметра "Fail URL". |
Замена метода вызова Fail URL | LMI_FAIL_METHOD | Нет | Это поле позволяет продавцу временно изменить параметр "Метод вызова Fail URL", установленный им на странице настроек сайта Web Merchant Interface. Если в настройках установлен флаг "Позволять использовать URL передаваемые в форме", то передаваемое в форме значение заменяет значение параметра "Метод вызова Fail URL", установленное в настройках на сайте Web Merchant Interface. В противном случае всегда используется значение, установленное в настройках на сайте Web Merchant Interface. Это поле должно принимать значение 0, 1 или 2, что соответствует значениям параметра "Метод вызова Fail URL" - "GET", "POST" или "LINK". |
Скрытие методов оплаты | LMI_HIDE_DISABLED | Нет | Продавец может опционально скрывать методы оплаты (отображающиеся в выпадающем меню на странице авторизации), которые не подключены для торгового кошелька передавая значение параметра 1 |
Номер ВМ-карты | LMI_PAYMER_PINNUMBERINSIDE | Нет | Продавец может опционально реализовать у себя на сайте при выборе способа платежа отдельный способ оплаты для Вебмани карт (скретч карт) или чеков Paymer. В этом случае у покупателя, при выборе им такого способа оплаты, можно прямо на сайте продавца спросить номер карты (чека), которым он будет платить и передать его в этом поле, тогда покупатель будет сразу перенаправлен на итоговую страницу ввода кода чека (карты), а страница выбора способов платежа будет просто автоматически пропущена. |
Email покупателя | LMI_PAYMER_EMAIL | Нет | Если продавцу известен Email покупателя, то он может передать его в этом поле и тогда покупателю не нужно будет вводить его при оплате WM-картой, чеком Пеймер. |
Email покупателя | Нет | Если продавцу известен Email покупателя, то он может передать его в этом поле и тогда покупателю не нужно будет вводить его при оплате через способы, которые требуют его заполнения(Bitcoin, Litecoin, Ethereum, USDT, с карты на карту) | |
Номер WebMoney Check | LMI_WMCHECK_NUMBERINSIDE | Нет | Продавец может опционально реализовать у себя на сайте при выборе способа платежа отдельный способ оплаты для Вебмани чека (оплата через терминалы, банкоматы, кассы). В этом случае у покупателя при выборе им такого способа оплаты можно прямо на сайте продавца спросить номер чека (номер его мобильного телефона), которым он будет платить и передать его в этом поле, тогда покупатель будет сразу спозиционирован на способ оплаты Webmoney check и покупателю останется только ввести свой пароль, чтобы продолжить платеж. |
Пароль от WebMoney check | LMI_WMCHECK_CODEINSIDE | Нет | если поле LMI_WMCHECK_NUMBERINSIDE заполнено, то в данном поле можно спросить у покупателя и передать его пароль от Вебмани чека, тогда покупатель будет сразу перенаправлен на итоговую страницу ввода отправленного ему одноразового кода по СМС, а страница выбора способов платежа будет просто автоматически пропущена. С точки зрения безопасности можно не бояться спрашивать у покупателя пароль, так как по сути он позволяет только читать информацию (история платежей, баланс), а для того чтобы заплатить, нужен только одноразовый СМС-код, отправка и ввод которого проиводится в безопасном режиме только на сайте WebMoney.merchant |
Тип e-invoicing платежа | LMI_ALLOW_SDP | Нет | Указание данного поля позволяет продавцу сделать так, что покупатель не будет направляться на страницу авторизации (выбора способа оплаты и т.п.) , а сразу попадать на нужный способ оплаты e-invoicing. При формировании платежной формы продавец может указать для этого следующие цифровые значения: 4- через карты российских банков, 19 - Bitcoin, 20 - кошелек RunPay MDL, 26 - Litecoin, 27 - Ethereum, 28 - USDT |
Номер телефона для быстрого платежа | LMI_FAST_PHONENUMBER | Нет | В данный момент в сервисе реализована возможность любому участнику системы заплатить продавцу быстро, имея под рукой только мобильный телефон и зная его номер, по указанному номеру система сама найдет нужный ВМ-идентификатор или ВМ-чек и произведет оплату после ввода пользователем присланного SMS или USSD кода. Если Вы знаете (например из профайла) номер мобильного телефона покупателя (в международном формате без посторонних символов подряд только цифры) то передайте его в этом поле и покупателю не нужно будет его вводить |
Срок кредитования | LMI_PAYMENT_CREDITDAYS | Нет | В случае если продавец продает свои товары в кредит и получает платежи на кошелек типа D, то в данном параметре указывается срок кредитования в днях. Если в случае приема платежей на кошелек типа D данный параметр не указан, то по умолчанию срок кредитования принимается равным 30 дням. Настоятельно рекомендуем при указании данного параметра обязательно проверять его соответствие в предварительном запросе или оповещении о платеже. Подробнее о кредитовании можно прочитать здесь. |
Номер магазина | LMI_SHOP_ID | Нет | Данный параметр обязателен к указанию только для агрегаторов (сервисы посредники осуществляющие прием платежей в пользу третьих лиц). В данном поле агрегаторы обязаны передавать регистрационный номер магазина в каталоге Меагасток в пользу которого осуществляется прием данного платежа |
Подпись формы | LMI_PAYMENTFORM_SIGN | Нет | Данное поле должно быть обязательно передано в случае, если в настройках кошелька установлен флаг Обязательно требовать подпись платежной формы, если его не передать, то покупателю будет выдана ошибка. В случае если поле передается, а флаг Обязательно требовать подпись платежной формы не установлен, то покупателю также будет выдана ошибка. Иными словами необходимо включить флаг и передавать поле или не включать и не передавать. Поле формируется путем хэширования алгоритмом SHA256 строки, содержащей три других значимых поля формы запроса платежа и значения Secret Key X20 (из настроек кошелька), разделенных точкой с запятой. Строка для подписи формируется так: LMI_PAYEE_PURSE;LMI_PAYMENT_AMOUNT;LMI_PAYMENT_NO;Secret Key X20;или LMI_PAYEE_PURSE;LMI_PAYMENT_AMOUNT;LMI_HOLD;LMI_PAYMENT_NO;Secret Key X20;, если LMI_HOLD присутствует Если в форме реально будут переданы не те параметры, которые участвовали в хэшировании, то покупателю будет выдана ошибка, поэтому следите за тем, чтобы с момента формирования подписи поля никак не форматировались и были переданы в форму в неизмененном виде! |
Срок холдирования | LMI_HOLD | Нет | Срок холдирования платежа (блокировки средств). Если данный параметр передан, то совершается транзакция с протекцией по времени на указанное количество суток. Для зачисления средств продавец должен завершить операцию с сайта merchant.webmoney.com или вызвать XML-интерфейс X5, если продавец не сделает данных действий, то по истечении указанного срока средства возвращаются плательщику. Досрочный возврат выполняется на странице merchant.webmoney.com или через XML-интерфейс X13 Данный способ доступен только при совершении платежа с кошелька WebMoney Использование данного параметра возможно только если используется подпись формы запрос платежа! |
Дополнительные параметры продавца | Определяется продавцом | Нет | Все поля формы, не имеющие в названии префикса "LMI_" или "__", обрабатываются сервисом Web Merchant Interface автоматически и передаются на веб-сайт продавца. |
* - Только один из параметров LMI_PAYMENT_DESC или LMI_PAYMENT_DESC_BASE64 должен присутствовать обязательно!
В поле Action формы у продавца всегда есть возможность спозиционировать покупателя сразу же на какой то определенный способ (вариант) оплаты. Это очень удобно, когда продавец полноценно реализует подключение магазина со всеми возможными опциями. Для этого служит параметр at в URL запроса, например, если произвести передачу платежной формы по URL https://merchant.webmoney.com/lmi/payment_utf.asp?at=authtype_8, то покупатель будет сразу же спозиционирован на оплату с WebMoney кошелька, а если at=authtype_3, то с WebMoney карты. Если данный параметр не указан, то покупателю автоматически выбирается способ, который он выбрал и использовал при предыдущей оплате. Все доступные способы позицинирования перечислены ниже:
- authtype_2 Keeper WebPro
- authtype_3 WebMoney-карта/Чек Paymer (настоятельно рекомендуем, если на сайте продавца платеж скретч ВМ-картой/чеком Paymer вынесен в отдельный пункт, сразу спросить у покупателя номер ВМ-карты/чека Paymer и передать его в параметре LMI_PAYMER_PINNUMBERINSIDE , в этом случае позиционирование будет не нужно и покупатель сразу попадет на нужную страницу, минуя этап выбора способа платежа и ввода номера ВМ-карты/чека Paymer)
- authtype_8 Keeper WinPro
- authtype_9 Keeper Standard
- authtype_12 Keeper для соц.сетей
- authtype_13 WebMoney чек
- authtype_16 кредитные карты российских банков, опция только для WMZ-кошельков (настоятельно рекомендуем, если на сайте продавца платеж через банковские карты вынесен в отдельный пункт (иконку, способ и т.п.), передать в параметре LMI_ALLOW_SDP = 4, в этом случае позиционирование будет не нужно и покупатель сразу попадет на нужную страницу оплаты банковской картой, минуя этап выбора способа платежа )
- authtype_17 быстрый платеж с указанием мобильного телефона (если продавцу известен номер мобильного телефона покупателя в международном формате, то он может передать его в параметре LMI_FAST_PHONENUMBER и в этом случае покупателю не нужно будет вводить его у нас на сайте при проведении быстрого платежа)
- authtype_20 Bitcoin
- authtype_22 RunPay MDL
- authtype_26 Litecoin
- authtype_27 Ethereum
- authtype_28 USDT
Обратите внимание, что данный способ позиционирования метода оплаты, работает только для покупателей, которые не авторизованы. Если покупатель был авторизован ранее, и Вы хотите переопределить способ оплаты, то необходимо работать с параметром LMI_ALLOW_SDP
При передаче параметра LMI_ALLOW_SDP = -1 в форме запроса платежа, будут скрыты все дополнительные способы оплаты. Покупателю будет предложено произвести оплату только через Систему WebMoney
Пример 1. Фрагмент "Формы запроса платежа" без замены URL
<html> <head> ... </head> <body> ... <form method="POST" action="https://merchant.webmoney.com/lmi/payment_utf.asp" accept-charset="utf-8"> <input type="hidden" name="LMI_PAYMENT_AMOUNT" value="12.08"> <input type="hidden" name="LMI_PAYMENT_DESC" value="платеж по счету"> <input type="hidden" name="LMI_PAYMENT_NO" value="1234"> <input type="hidden" name="LMI_PAYEE_PURSE" value="Z145179295679"> <input type="hidden" name="LMI_SIM_MODE" value="0"> <input type="hidden" name="FIELD_1" value="VALUE_1"> <input type="hidden" name="FIELD_2" value="VALUE_2"> ... <input type="hidden" name="FIELD_N" value="VALUE_N"> ... </form> ... </body> </html>
Пример 2. Фрагмент "Формы запроса платежа" с заменой URL
<html> <head> ... </head> <body> ... <form method="POST" action="https://merchant.webmoney.com/lmi/payment_utf.asp" accept-charset="utf-8"> <input type="hidden" name="LMI_PAYMENT_AMOUNT" value="12.08"> <input type="hidden" name="LMI_PAYMENT_DESC" value="платеж по счету"> <input type="hidden" name="LMI_PAYMENT_NO" value="1234"> <input type="hidden" name="LMI_PAYEE_PURSE" value="Z145179295679"> <input type="hidden" name="LMI_SIM_MODE" value="0"> <input type="hidden" name="LMI_RESULT_URL" value="http://www.shop.com/result.asp"> <input type="hidden" name="LMI_SUCCESS_URL" value="http://www.shop.com/success.html"> <input type="hidden" name="LMI_SUCCESS_METHOD" value="2"> <input type="hidden" name="LMI_FAIL_URL" value="http://www.shop.com/fail.html"> <input type="hidden" name="LMI_FAIL_METHOD" value="2"> <input type="hidden" name="FIELD_1" value="VALUE_1"> <input type="hidden" name="FIELD_2" value="VALUE_2"> ... <input type="hidden" name="FIELD_N" value="VALUE_N"> ... </form> .. </body> </html>
Обратите внимание на ОБРАЗЦОВУЮ реализацию формы запроса платежа в магазине Плати.ру , в котором реализованы все возможности выбора способов платежа и прямого позиционирования покупателя на нужный способ с уже имеющимися данными.
Другой способ создания формы платежа предоставляет XML-интерфейс X22. С его помощью можно предварительно зафиксировать параметры платежа и сразу получить универсальную ссылку, которая может быть передана любыми способами связи. Такая ссылка обеспечивает несколько вариантов безопасного платежа: в мобильном WM Keeper, считав QR-код, или перейдя по ссылке из мобильного браузера; в браузере на десктопе — с помощью обычной формы платежа с заранее установленными параметрами.
Холдирование платежа¶
Холдирование платежа (блокировка средств) позволяет выполнить мгновенный возврат средств без потерь на комиссию покупателя и продавца. В течении срока холдирования продавец может выполнить зачисление средств через сайт или используя соответствующее API. Если продавец не провел зачисление средств, то по завершению срока холдирования, они возвращаются на кошелек покупателя автоматически.
Параметр LMI_HOLD - срок холдирования платежа. Если данный параметр передан, то совершается транзакция с протекцией по времени на указанное количество суток. Для зачисления средств продавец должен завершить операцию с сайта merchant.webmoney.com или вызвать XML-интерфейс, если продавец не сделает данных действий, то по истечении указанного срока средства возвращаются плательщику.
Досрочный возврат выполняется на странице merchant.webmoney.com или через XML-интерфейс
Данный способ доступен только при совершении платежа с кошелька WebMoney
Использование данного параметра возможно только если используется подпись формы запрос платежа!
Форма предварительного запроса¶
Эта форма передает продавцу параметры выполняемого платежа непосредственно перед его выполнением. Она имеет следующие атрибуты и поля:
Action - Result URL
Method - POST
Fields - поля, передаваемые в форме, описаны в таблице ниже:
Название | HTML Field Name | Описание |
Индикатор предварительного запроса | LMI_PREREQUEST | 1 |
Кошелек продавца | LMI_PAYEE_PURSE | Кошелек продавца, на который покупатель совершил платеж. Формат - буква и 12 цифр. |
Сумма платежа | LMI_PAYMENT_AMOUNT | Сумма, которую заплатил покупатель. Дробная часть отделяется точкой. |
Внутренний номер покупки продавца | LMI_PAYMENT_NO | В этом поле передается номер покупки в соответствии с системой учета продавца, полученный сервисом с веб-сайта продавца. |
Флаг тестового режима | LMI_MODE | Указывает, в каком режиме выполнялась обработка запроса на платеж. Может принимать два значения: 0: Платеж выполнялся в реальном режиме, средства переведены с кошелька покупателя на кошелек продавца; 1: Платеж выполнялся в тестовом режиме, средства реально не переводились. |
WMId покупателя | LMI_PAYER_WM | WM-идентификатор покупателя, совершаюшего платеж. |
Кошелек покупателя | LMI_PAYER_PURSE | WM-кошелек покупателя, совершающего платеж. |
WMId капиталлера | LMI_CAPITALLER_WMID | В случае, если покупатель совершает платеж с бюджетного автомата Капиталлер, то в данном поле передается WMID данного идентификатора, при этом кошелек LMI_PAYER_PURSE принадлежит именно LMI_CAPITALLER_WMID, а LMI_PAYER_WM - это идентификатор владельца, имеющего в данном капиталлере доступ к этому кошельку для совершения оплат. |
Номер ВМ-карты (электронного чека) | LMI_PAYMER_NUMBER | Номер чека Paymer.com или номер ВМ-карты, присутствует только в случае, если покупатель производит оплату чеком Пеймер или ВМ-картой. |
E-mail покупателя | LMI_PAYMER_EMAIL | Email указанный покупателем, присутствует только в случае, если покупатель производит оплату чеком Paymer.com или ВМ-картой. |
E-mail покупателя | Email указанный покупателем, присутствует только в случае, если покупатель производит оплату в Bitcoin, Litecoin, Ethereum и USDT. | |
Номер WebMoney check | LMI_WMCHECK_NUMBER | Номер Вебмани чека (мобильного телефона) покупателя , присутствует только в случае, если покупатель производит оплату через Сервис WebMoney Check (через терминалы, банкоматы, кассы ) |
Номер телефона покупателя | LMI_TELEPAT_PHONENUMBER | Номер телефона покупателя, присутствует только в случае, если покупатель производит оплату с телефона WM Keeper Mobile. |
Номер платежа в Keeper Mobile | LMI_TELEPAT_ORDERID | Номер платежа в WM Keeper Mobile, присутствует только в случае, если покупатель производит оплату с телефона в системе WM Keeper Mobile. |
Срок кредитования | LMI_PAYMENT_CREDITDAYS | В случае если покупатель платит со своего кошелька типа C на кошелек продавца типа D (вариант продажи продавцом своих товаров или услуг в кредит), в данном параметре указывается срок кредитования в днях. Настоятельно рекомендуем обязательно проверять соответствие данного параметра в форме предварительного запроса значению параметра в форме запроса платежа. |
Примечание к платежу | LMI_PAYMENT_DESC | Примечание к платежу в кодировке UTF-8, передается для контроля продавцом отсутствия искажений в примечании к платежу. Данное поле передается после обработки функцией URLEncode. Так как форма, передаваемая с сайта продавца на платежный сайт системы передается через клиентский браузер, продавец при необходимости (а обменный пункт или финансовый сервис в обязательном порядке) может проверить не только сумму платежа, но и оригинальное примечание к платежу. |
Тип e-invoicing платежа | LMI_SDP_TYPE | Если данный параметр присутствует , то это означает , что платеж будет совершен одним из нескольких способов без регистрации в системе 4- через карты российских банков, 19 - Bitcoin, 20 - кошелек RunPay MDL, 26 - Litecoin, 27 - Ethereum, 28 - USDT |
код страны местонахождения | LMI_PAYER_COUNTRYID | двухбуквенный ISO https://ru.wikipedia.org/wiki/ISO_3166-1 код страны текущего местонахождения, которая указана плательщиком |
код страны документа | LMI_PAYER_PCOUNTRYID | двухбуквенный ISO https://ru.wikipedia.org/wiki/ISO_3166-1 код страны выдачи паспорта, если паспортные данные указаны плательщиком |
IP-адрес | LMI_PAYER_IP | IP-адрес плательщика в момент совершения платежа |
Срок холдирования | LMI_HOLD | Если данный параметр присутствует , то это означает , что платеж будет совершен с протекцией по времени на указанное количество суток. Продавцу необходимо зачислить данный перевод. Завершить операцию можно с сайта merchant.webmoney.com или вызвать XML-интерфейс, если продавец не сделает данных действий, то по истечении указанного срока средства возвращаются плательщику) |
Номер магазина | LMI_SHOP_ID | Номер магазина, из каталога Мегасток, который был передан в форме запроса платежа |
Язык страницы | LMI_LANG | язык страницы браузера покупателя |
Параметры продавца | Определяется продавцом | Все поля, переданные с веб-сайта продавца в "Форме запроса платежа", не имеющие префикса "LMI_" или "_". |
Если флаг передачи параметров установлен, веб-сайт продавца должен вернуть строку "YES" в ответе для того, чтобы сервис Web Merchant Interface смог продолжить выполнение платежа. Если веб-сайт продавца вернет что-либо другое - платеж выполнен не будет, а ответ будет показан покупателю в сообщении об ошибке.
Пример. Фрагмент "Формы предварительного запроса"
<html> <head> ... </head> <body> ... <form method="POST" action="<Result URL>"> <input type="hidden" name="LMI_PREREQUEST" value="1"> <input type="hidden" name="LMI_PAYMENT_AMOUNT" value="1.0"> <input type="hidden" name="LMI_PAYMENT_NO" value="1"> <input type="hidden" name="LMI_PAYEE_PURSE" value="Z222211112222"> <input type="hidden" name="LMI_MODE" value="1"> <input type="hidden" name="LMI_PAYER_WM" value="111122221111"> <input type="hidden" name="LMI_PAYER_PURSE" value="Z111122221111"> <input type="hidden" name="FIELD_1" value="VALUE_1"> <input type="hidden" name="FIELD_2" value="VALUE_2"> ... </form> .. </body> </html>
Форма оповещения о платеже¶
Эта форма передает продавцу реквизиты выполненного платежа в момент его совершения. Она имеет следующие атрибуты и поля:
Action - Result URL
Method - POST
Fields - поля, передаваемые в форме, описаны в таблице ниже:
Название | HTML Field Name | Описание |
Кошелек продавца | LMI_PAYEE_PURSE | Кошелек продавца, на который покупатель совершил платеж. Формат - буква и 12 цифр. |
Сумма платежа | LMI_PAYMENT_AMOUNT | Сумма, которую заплатил покупатель. Дробная часть отделяется точкой. |
Внутренний номер покупки продавца | LMI_PAYMENT_NO | В этом поле передается номер покупки в соответствии с системой учета продавца, полученный сервисом с веб-сайта продавца. |
Флаг тестового режима | LMI_MODE | Указывает, в каком режиме выполнялась обработка запроса на платеж. Может принимать два значения: 0: Платеж выполнялся в реальном режиме, средства переведены с кошелька покупателя на кошелек продавца; 1: Платеж выполнялся в тестовом режиме, средства реально не переводились. |
Внутренний номер счета в системе WebMoney Transfer | LMI_SYS_INVS_NO | Номер счета в системе WebMoney Transfer, выставленный покупателю от имени продавца в процессе обработки запроса на выполнение платежа сервисом Web Merchant Interface. Является уникальным в системе WebMoney Transfer. |
Внутренний номер платежа в системе WebMoney Transfer | LMI_SYS_TRANS_NO | Номер платежа в системе WebMoney Transfer, выполненный в процессе обработки запроса на выполнение платежа сервисом Web Merchant Interface. Является уникальным в системе WebMoney Transfer. |
Кошелек покупателя | LMI_PAYER_PURSE | Кошелек, с которого покупатель совершил платеж. |
WMId покупателя | LMI_PAYER_WM | WM-идентификатор покупателя, совершившего платеж. |
WMId капиталлера | LMI_CAPITALLER_WMID | В случае, если покупатель совершает платеж с бюджетного автомата Капиталлер, то в данном поле передается WMID данного идентификатора, при этом кошелек LMI_PAYER_PURSE принадлежит именно LMI_CAPITALLER_WMID, а LMI_PAYER_WM - это идентификатор владельца, имеющего в данном капиталлере доступ к этому кошельку для совершения оплат. |
Номер ВМ-карты (электронного чека) | LMI_PAYMER_NUMBER | Номер чека Paymer.com или номер ВМ-карты, присутствует только в случае, если покупатель производит оплату чеком Пеймер или ВМ-картой. |
E-mail покупателя | LMI_PAYMER_EMAIL | Email указанный покупателем, присутствует только в случае, если покупатель производит оплату чеком Paymer.com или ВМ-картой |
E-mail покупателя | Email указанный покупателем, присутствует только в случае, если покупатель производит оплату в Bitcoin, Litecoin, Ethereum и USDT. | |
Номер WebMoney check | LMI_WMCHECK_NUMBER | Номер Вебмани чека (мобильного телефона) покупателя , присутствует только в случае, если покупатель производит оплату через Сервис WebMoney Check |
Номер телефона покупателя | LMI_TELEPAT_PHONENUMBER | Номер телефона покупателя, присутствует только в случае, если покупатель производит оплату с телефона в WM Keeper Mobile |
Номер платежа в Keeper Mobile | LMI_TELEPAT_ORDERID | Номер платежа в WM Keeper Mobile, присутствует только в случае, если покупатель производит оплату с телефона в WM Keeper Mobile. |
Срок кредитования | LMI_PAYMENT_CREDITDAYS | В случае если покупатель платит со своего кошелька типа C на кошелек продавца типа D (вариант продажи продавцом своих товаров или услуг в кредит), в данном параметре указывается срок кредитования в днях. Настоятельно рекомендуем обязательно проверять соответствие данного параметра в форме оповещения о платеже значению параметра в форме запроса платежа. |
Срок холдирования | LMI_HOLD | Если данный параметр присутствует , то это означает , что платеж будет совершен с протекцией по времени на указанное количество суток. Продавцу необходимо зачислить данный перевод. Завершить операцию можно с сайта merchant.webmoney.com или вызвать XML-интерфейс, если продавец не сделает данных действий, то по истечении указанного срока средства возвращаются плательщику) |
Контрольная подпись | LMI_HASH | Контрольная подпись оповещения о выполнении платежа, которая используется для проверки целостности полученной информации и однозначной идентификации отправителя. Алгоритм формирования описан в разделе Контрольная подпись данных о платеже. |
Контрольная подпись | LMI_HASH2 | Контрольная подпись оповещения о выполнении платежа, которая используется для проверки целостности полученной информации и однозначной идентификации отправителя. Алгоритм формирования описан в разделе Контрольная подпись данных о платеже. |
Дата и время выполнения платежа | LMI_SYS_TRANS_DATE | Дата и время реального прохождения платежа в системе WebMoney Transfer в формате "YYYYMMDD HH:MM:SS". |
Secret Key | LMI_SECRET_KEY | Значение Secret Key, известное только продавцу и сервису Web Merchant Interface. Это поле будет пустым, если параметр "Result URL" не обеспечивает секретность или не установлен флаг "Высылать Secret Key на Result URL...", или параметр "Result URL" изменен в форме. |
Тип e-invoicing платежа | LMI_SDP_TYPE | Если данный параметр присутствует , то это означает , что платеж совершен одним из нескольких способов без регистрации в системе 4- через карты российских банков, 19 - Bitcoin, 20 - кошелек RunPay MDL, 26 - Litecoin, 27 - Ethereum, 28 - USDT |
Примечание к платежу | LMI_PAYMENT_DESC | Примечание к платежу в кодировке UTF-8, передается для контроля продавцом отсутствия искажений в примечании к платежу. Данное поле передается после обработки функцией URLEncode. Так как форма, передаваемая с сайта продавца на платежный сайт системы передается через клиентский браузер, продавец при необходимости (а обменный пункт или финансовый сервис в обязательном порядке) может проверить не только сумму платежа, но и оригинальное примечание к платежу. |
код страны местонахождения | LMI_PAYER_COUNTRYID | двухбуквенный ISO https://ru.wikipedia.org/wiki/ISO_3166-1 код страны текущего местонахождения, которая указана плательщиком |
код страны документа | LMI_PAYER_PCOUNTRYID | двухбуквенный ISO https://ru.wikipedia.org/wiki/ISO_3166-1 код страны выдачи паспорта, если паспортные данные указаны плательщиком |
IP-адрес | LMI_PAYER_IP | IP-адрес плательщика в момент совершения платежа |
Номер магазина | LMI_SHOP_ID | Номер магазина, из каталога Мегасток, который был передан в форме запроса платежа |
Язык страницы | LMI_LANG | язык страницы браузера покупателя |
Параметры продавца | Определяется продавцом | Все поля, переданные с веб-сайта продавца в "Форме запроса платежа", не имеющие префикса "LMI_". |
Внимание!
Продавец обязательно должен предусмотреть проверку информации, присланной в "Форме оповещения о платеже" в соответствии с рекомендациями раздела Алгоритм формирования и проверки контрольной подписи.
Пример. Фрагмент "Формы оповещения о платеже"
<html> <head> ... </head> <body> ... <form method="POST" action="<Result URL>"> <input type="hidden" name="LMI_PAYMENT_AMOUNT" value="1.0"> <input type="hidden" name="LMI_PAYMENT_NO" value="1"> <input type="hidden" name="LMI_PAYEE_PURSE" value="Z397000000472"> <input type="hidden" name="LMI_MODE" value="1"> <input type="hidden" name="LMI_SYS_INVS_NO" value="281"> <input type="hidden" name="LMI_SYS_TRANS_NO" value="558"> <input type="hidden" name="LMI_PAYER_PURSE" value="Z397000000473"> <input type="hidden" name="LMI_PAYER_WM" value="809000000852"> <input type="hidden" name="LMI_SYS_TRANS_DATE" value="20020314 14:01:14"> <input type="hidden" name="LMI_HASH" value="114128B8AEFD8CAA76D3CF75B9AEBC17"> <input type="hidden" name="LMI_HASH2" value="8ACAC8C59D6CA6EB0AD56DF5C0CE8BB4D096557C8AF0C642D7E5CE1344C107D8"> <input type="hidden" name="FIELD_1" value="VALUE_1"> <input type="hidden" name="FIELD_2" value="VALUE_2"> ... </form> .. </body> </html>
Форма выполненного платежа¶
Эта форма передает реквизиты выполненного платежа на веб-сайт продавца после успешного выполнения операции. Данные передаются через веб-браузер покупателя только в том случае, если выбран метод вызова Success URL "GET" или "POST". Форма имеет следующие атрибуты и поля:
Action - Success URL
Method - POST
Fields - поля, передаваемые в форме, описаны в таблице ниже:
Название | HTML Field Name | Описание |
Внутренний номер покупки продавца | LMI_PAYMENT_NO | В этом поле передается номер покупки в соответствии с системой учета продавца, полученный сервисом с веб-сайта продавца. |
Внутренний номер счета в системе WebMoney Transfer | LMI_SYS_INVS_NO | Номер счета в системе WebMoney Transfer, выставленный покупателю от имени продавца в процессе обработки запроса на выполнение платежа сервисом Web Merchant Interface. Является уникальным в системе WebMoney Transfer. |
Внутренний номер платежа в системе WebMoney Transfer | LMI_SYS_TRANS_NO | Номер платежа в системе WebMoney Transfer, выполненный в процессе обработки запроса на выполнение платежа сервисом Web Merchant Interface. Является уникальным в системе WebMoney Transfer. |
Дата и время выполнения платежа | LMI_SYS_TRANS_DATE | Дата и время реального прохождения платежа в системе WebMoney Transfer в формате "YYYYMMDD HH:MM:SS". |
Номер ВМ-карты (электронного чека) | LMI_PAYMER_NUMBER | Номер чека Paymer.com или номер ВМ-карты, присутствует только в случае, если покупатель производит оплату чеком Пеймер или ВМ-картой. |
E-mail покупателя | LMI_PAYMER_EMAIL | Email указанный покупателем, присутствует только в случае, если покупатель производит оплату чеком Paymer.com или ВМ-картой. |
E-mail покупателя | Email указанный покупателем, присутствует только в случае, если покупатель производит оплату в Bitcoin, Litecoin, Ethereum и USDT. | |
Номер WebMoney check | LMI_WMCHECK_NUMBER | Номер Вебмани чека (мобильного телефона) покупателя , присутствует только в случае, если покупатель производит оплату через Сервис WebMoney Check (через терминалы, банкоматы, кассы ) |
Номер телефона покупателя | LMI_TELEPAT_PHONENUMBER | Номер телефона покупателя, присутствует только в случае, если покупатель производит оплату с телефона в WM Keeper Mobile. |
Номер платежа в Keeper Mobile | LMI_TELEPAT_ORDERID | Номер платежа в WM Keeper Mobile, присутствует только в случае, если покупатель производит оплату с телефона в системе WM Keeper Mobile. |
Срок кредитования | LMI_PAYMENT_CREDITDAYS | В случае если покупатель платит со своего кошелька типа C на кошелек продавца типа D (вариант продажи продавцом своих товаров или услуг в кредит), в данном параметре указывается срок кредитования в днях. |
Язык страницы | LMI_LANG | язык страницы браузера покупателя |
Параметры продавца | Определяется продавцом | Все поля, переданные с веб-сайта продавца в "Форме запроса платежа" не имеющие префикса "LMI_" или "__". |
Пример. Фрагмент "Формы выполненного платежа"
<html> <head> ... </head> <body> ... <form method="<метод вызова Success URL>" action="<Success URL>"> <input type="hidden" name="LMI_PAYMENT_NO" value="1"> <input type="hidden" name="LMI_SYS_INVS_NO" value="281"> <input type="hidden" name="LMI_SYS_TRANS_NO" value="558"> <input type="hidden" name="LMI_SYS_TRANS_DATE" value="20020314 14:01:14"> <input type="hidden" name="FIELD_1" value="VALUE_1"> <input type="hidden" name="FIELD_2" value="VALUE_2"> ... </form> .. </body> </html>
Форма невыполненного платежа¶
Эта форма передает реквизиты невыполненного платежа на веб-сайт продавца. Данные передаются через веб-браузер покупателя только в том случае, если выбран метод вызова Success URL "GET" или "POST". Она имеет следующие атрибуты и поля:
Action - Fail URL
Method - метод вызова Fail URL
Fields - поля, передаваемые в форме - такие же как и для выполненного платежа.
Пример. Фрагмент "Формы невыполненного платежа"
<html> <head> ... </head> <body> ... <form method="<метод вызова Fail URL>" action="<Fail URL>"> <input type="hidden" name="LMI_PAYMENT_NO" value="1"> <input type="hidden" name="LMI_SYS_INVS_NO" value> <input type="hidden" name="LMI_SYS_TRANS_NO" value> <input type="hidden" name="LMI_SYS_TRANS_DATE" value> <input type="hidden" name="FIELD_1" value="VALUE_1"> <input type="hidden" name="FIELD_2" value="VALUE_2"> ... </form> .. </body> </html>
ПРОВЕРКА ИНФОРМАЦИИ О ПЛАТЕЖЕ¶
При выполнении платежа Web Merchant Interface высылает оповещение о платеже через "Форму оповещения о платеже" на Result URL, указанный продавцом.
Мы рекомендуем вам проверить данные, полученные через "Форму оповещения о платеже":
- Проверить, действительно ли данные переданы от сервиса Web Merchant Interface (Проверка источника данных)
- Проверить, не исказились ли данные в процессе передачи (Проверка целостности данных)
- Проверить сумму платежа
- Проверить кошелек продавца
- Проверить режим проведения платежа (тестовый или реальный)
Кроме того рекомендуется проверять параметры входящей транзакции с использованием XML-интерфейса системы X3 или X18 или на странице проверка транзакции сайта сервиса Merchant WebMoney Transfer.
Здесь также стоит отметить, что при создания формы платежа с помощью XML-интерфейса X22, когда происходит предварительная фиксация параметров платежа, проверки характеристик проводимой транзакции не имеют актуальности, так как выдаваемая интерфейсом прямая ссылка с тикетом исключает искажение данных платежа.
Проверка источника данных¶
Как указывалось выше, значение параметра "Secret Key" должно быть известно только сервису Web Merchant Interface и продавцу. Исходя из этого, Secret Key может использоваться для аутентификации источника, приславшего данные о платеже. Продавец, может провести аутентификацию несколькими методами в зависимости от того, обеспечивает Result URL секретность или нет:
- Result URL обеспечивает секретность и не переопределяется
В этом случае продавец может производить аутентификацию источника данных двумя способами:- Если продавец не желает проверять контрольную подпись, он должен установить флаг "Высылать Secret Key на Result URL". В этом случае Merchant WebMoney Transfer будет высылать Secret Key на веб-сервер продавца в поле "LMI_SECRET_KEY" в форме оповещения о платеже. Продавец должен проверять его каждый раз, когда получает оповещение о выполнении платежа.
- Второй путь - это проверка контрольной подписи. Контрольная подпись формируется сервисом Web Merchant Interface с учетом значения параметра "Secret Key" и передается в поле "LMI_HASH2 (LMI_HASH)".
Проверка подписи является более трудоемким методом, но он не требует передачи Secret Key через интернет.
- Result URL не обеспечивает секретность или переопределяется
В этом случае сервис Web Merchant Interface не высылает Secret Key независимо от установленного флага "Высылать Secret Key на Result URL". Поэтому для аутентификации источника оповещения о платеже продавец должен проверять контрольную подпись.
В любом случае следует проверять IP-адрес с которого поступил запрос.
Диапазон адресов которые использует сервис можно узнать на странице IP адреса WM
Проверка целостности данных¶
Высылая оповещение о проведение платежа, сервис Web Merchant Interface передает реквизиты платежа и контрольную подпись, позволяющую проверять неизменность передаваемых данных. Продавец может выполнить проверку целостности несколькими методами в зависимости от того обеспечивает Result URL секретность или нет:
- Result URL обеспечивает секретность и не переопределяется
В этом случае продавец может не проверять контрольную подпись, так как используемый протокол SSL обеспечивает безопасность и целостность передаваемых данных. - Result URL не обеспечивает секретность или переопределяется
В этом случае сервис Web Merchant Interface рекомендует проверять целостность данных, используя контрольную подпись.
Контрольная подпись данных о платеже¶
Контрольная подпись данных о платеже позволяет продавцу проверять как источник данных, так и целостность данных, переданных на Result URL через "Форму оповещения о платеже".
При формировании контрольной подписи сервис Web Merchant Interface "склеивает" значения полей , передаваемых "Формой оповещения о платеже", в одну строку в следующем порядке:
- Кошелек продавца (LMI_PAYEE_PURSE);
- Сумма платежа (LMI_PAYMENT_AMOUNT);
- Срок протекции по времени для платежа с холдированием (LMI_HOLD); если этого параметра нет, он не участвует в формировании строки. Если данный параметр присутствует то при формировании строки необходимо вставлять ; (точка с запятой) до и после параметра
- Внутренний номер покупки продавца (LMI_PAYMENT_NO);
- Флаг тестового режима (LMI_MODE);
- Внутренний номер счета в системе WebMoney Transfer (LMI_SYS_INVS_NO);
- Внутренний номер платежа в системе WebMoney Transfer (LMI_SYS_TRANS_NO);
- Дата и время выполнения платежа (LMI_SYS_TRANS_DATE);
- Secret Key (LMI_SECRET_KEY);
- Кошелек покупателя (LMI_PAYER_PURSE);
- WMId покупателя (LMI_PAYER_WM).
При склеивании поля разделяются символом ; (точка с запятой) или склеиваются без разделяющего символа. При использовании разделяющего символа подписанная строка передается в параметре LMI_HASH2 , в противном случае в параметре LMI_HASH .
Алгоритм формирования контрольной подписи определяется настройками, установленными продавцом (MD5, SHA256 или SIGN).
В случае использования MD5 формируется последовательность из 32-х шестнадцатеричных цифр в соответствии с широко распространенным алгоритмом Message Digest 5 (MD5) разработанным Ron Rivest из MIT Laboratory for Computer Science и RSA Data Security, Inc. Алгоритм был опубликован в интернете в апреле 1992 года (RFC 1321).
Все символы в результате преобразуются в верхний регистр.
MD5 является морально устаревшим, поддерживается только для совместимости и не рекомендуется для использования
Вместо MD5 рекомендуется использовать SHA256 (SHA-2 с длиной блока 256 бит). Он является значительно более стойким к криптоанализу. При использовании SHA256 длина хеша - 64 символа.
При использовании SIGN формируется последовательность из 132 шестнадцатеричных цифр в соответствии с алгоритмом формирования аналога собственноручной подписи системы WebMoney Transfer (c использованием модуля WMSignerX).
Проверка контрольной подписи¶
Проверка контрольной подписи может выполняться как в "ручном" режиме на соответствующих страницах сайта Merchant.WebMoney.com (MD5, SHA256, SIGN), так и в "автоматическом" режиме на сайте продавца по следующему алгоритму:
- MD5/SHA256
- Сформируйте строку путем "склеивания" значений параметров, полученных через "Форму оповещения о платеже", в том же порядке, что и при формировании контрольной подписи в сервисе Web Merchant Interface (см. выше). Помните, что при формировании подписи используется Secret Key.
- Вычислите MD5/SHA256 полученной строки. Переведите результат в верхний регистр.
- Сравните полученное значение с значением параметра "LMI_HASH2 (LMI_HASH)", полученного через "Форму оповещения о платеже". Если сформированная подпись совпадает с полученной через "Форму оповещения о платеже", данные не изменены, и источник данных действительно сервис Web Merchant Interface.
- SIGN
- Сформируйте строку путем "склеивания" значений параметров, полученных через "Форму оповещения о платеже", в том же порядке, что и при формировании контрольной подписи в сервисе Web Merchant Interface (см. выше). Помните, что при формировании подписи используется Secret Key.
- Выполните проверку цифровой подписи, используя Интерфейс X7. Идентификация и аутентификация участника-владельца WM Keeper WinPro на стороннем сайте. При этом в качестве передаваемых параметров укажите:
- TesterWMID - идентификатор кипера продавца;
- ClientWMID - идентификатор кипера сервиса Web Merchant Interface; формирующего цифровую подпись оповещения о выполнении платежа. Его WMID: 967909998006;
- AccessMarker - строка, полученная на первом этапе путем "склеивания" значений параметров "Формы оповещения о платеже";
- ClientSignStr - контрольная подпись, сформированная сервисом Web Merchant Interface и переданная на веб-сайт продавца через "Форму оповещения о платеже" в параметре "LMI_HASH2 (LMI_HASH)";
- SignStr - цифровая подпись запроса.
Если проверка дала положительный результат, данные не были изменены, и источник данных действительно сервис Web Merchant Interface.
Проверка суммы платежа¶
Необходимо обязательно контролировать информацию о сумме платежа, передаваемую через параметр "LMI_PAYMENT_AMOUNT".
Проверка кошелька продавца¶
Несмотря на то, что покупатель не может изменить кошелек, на который совершается платеж, продавцу рекомендуется контролировать информацию о кошельке, которая передается через параметр "LMI_PAYEE_PURSE", особенно при использовании нескольких кошельков при работе с Web Merchant Interface.
Проверка режима платежа¶
Web Merchant Interface позволяет проводить платежи в тестовом режиме для проверки работы веб-сайта продавца. Режим обработки платежа в сервисе определяется установкой параметра "Тестовый/Рабочий режимы". Дополнительно информация о текущем режиме передается в параметре "LMI_MODE" (1 - тестовый режим, 0 - реальный режим).
В тестовом режиме реальный платеж не проводится, но сервис посылает данные, имитируя выполнение платежа.
XML-интерфейс выяснения состояния платежа по LMI_PAYMENT_NO¶
Для быстрого и безопасного выяснения состояния платежа (синхронизации или акутализации базы покупок сервиса, магазина, службы и т.п. с реальными завершенными операциями по WM-кошельку) Вы можете использовать XML-интерфейс X18, который по номеру LMI_PAYMENT_NO позволяет получить и информацию о платеже и его детали.
Тестирование сервиса Web Merchant Interface¶
Параметр "Тестовый/Рабочий режимы" позволяет продавцам тестировать интеграцию своего веб-сайта с сервисом Web Merchant Interface без выполнения реальных платежей. Если параметр установлен в режим "тест", сервис будет генерировать только тестовые платежи.
Параметр "Тестовый/Рабочий режимы" должен быть установлен в режим "тест" до тех пор, пока продавец не будет уверен в том, что его веб-сайт, интегрированный с сервисом Merchant WebMoney Transfer, работает правильно!
Примеры использования интерфейса¶
История платежей и бескомиссионный возврат¶
В сервисе WebMoney Merchant существует возможность посмотреть историю входящих операций: https://merchant.webmoney.com/conf/purseoper.asp и при необходимости вернуть платеж отправителю.
Произвести возврат можно только полной суммы. При этом, сервис сам определяет, как именно был совершен перевод: с WM-кошелька, WM-карты или WebMoney Check - и в соответствии с этим решает, как сделать его возврат. Если платеж с кошелька, то средства возвращаются обратно на кошелек плательщика. Если платеж с WM Check, то возврат будет произведен на WM Check (система знает номер телефона плательщика). Если перевод был с WM-карты, то сервис сначала запросит номер телефона, а потом вернет средства на этот WM Check.
Оповещение об ошибке платежа¶
Если в настройках кошелька установлен флаг "Высылать оповещение об ошибке платежа на Result URL", то при возникновении ошибок, на Result URL продавца будет выслана форма с данными по не успешному платежу, завершившемуся ошибкой.
Action - Result URL
Method - POST
Fields - поля, передаваемые в форме, описаны в таблице ниже:
Название | HTML Field Name | Описание |
Индикатор оповещения об ошибке | LMI_FAILREQUEST | 1-ошибка при платеже |
Внутренний номер покупки продавца | LMI_PAYMENT_NO | В этом поле передается номер покупки в соответствии с системой учета продавца, полученный сервисом с веб-сайта продавца. |
Флаг тестового режима | LMI_MODE | Указывает, в каком режиме выполнялась обработка запроса на платеж. Может принимать два значения: 0: Платеж выполнялся в реальном режиме, средства переведены с кошелька покупателя на кошелек продавца; 1: Платеж выполнялся в тестовом режиме, средства реально не переводились. |
Кошелек покупателя | LMI_PAYER_PURSE | Кошелек, с которого покупатель хотел совершить платеж. |
Сумма платежа | LMI_PAYMENT_AMOUNT | Сумма, которую планировал заплатить покупатель. Дробная часть отделяется точкой. |
Код ошибки | LMI_ERR | код ошибки, которая не позволила выполнить платеж, соответствует значениям параметра err_code интерфейса X18 |
WMId покупателя | LMI_PAYER_WM | WM-идентификатор покупателя, пытавшегося совершить платеж. |
Назначение платежа | LMI_PAYMENT_DESC | Описание товара или услуги, которую пытались оплатить. |
См. также:
Проверка транзакции, выполненной через сервис Merchant WebMoney Transfer
Прием платежей чеками Paymer WM-картами
Прием платежей с банковских карт российских банков
Прием платежей с банковских карт P2P
Прием платежей в биткойнах
Прием платежей в Ethereum
Прием платежей в USDT
Быстрый способ настроить прием WebMoney на сайте продавца
Merchant WebMoney Transfer
Пример оплаты товаров и услуг через сервис Merchant WebMoney Transfer
Лимиты на прием платежей через Web Merchant Interface
Плагины и модули приема WebМoney для CMS
Холдирование платежа
Определение курса при оплате картой P2P через Web Merchant Interface