Этот интерфейс доступен только участникам, использующим сервис merchant.webmoney.ru (merchant.wmtransfer.com). Платеж невозможен с кошельков, зарегистрированных в merchant.webmoney.ru (merchant.wmtransfer.com)
Ролик, демонстрирующий оплату через X20
Интерфейс позволяет произвести прием средств от участника WebMoney Transfer непосредственно на сайте, сервисе, приложении, консоли и т.п. (здесь и далее приложении продавца) не требуя от участника перехода на какие-либо сайты системы. При этом платеж будет проведен таким образом, как если бы участник заплатил обычным образом через merchant.webmoney.
Эффект отсутствия необходимости покидать сайт достигается тем, что участник подтверждает списание средств со своего WebMoney кошелька (или WebMoney чека) различными мобильными способами, в данный момент их три:
В случае авторизации по СМС\USSD с покупателя взимается дополнительная фиксированная комиссия в размере 0.9 WMR, 0.04 WMZ, 0.03 WME, 0.25 WMU, в зависимости от валюты платежа.
Интерфейс работает по тому же принципу идентификации и аутентификации продавца, что и Интерфейс X18 (WMSigner или MD5 или Secret key) и доступен как обычным продавцам, использующим merchant.webmoney, так и владельцам WMID Capitaller или продавцам зарегистрированным в сервисе processing.webmoney .
На воображаемом примере работу интерфейса можно описать следующим образом. Допустим покупатель находится в приложении какой-либо игровой консоли и собирается произвести оплату какой-либо услуги (игры).
При выборе способа оплаты через Вебмани покупателю предлагается указать свой номер мобильного телефона, ВМ-идентификатор или e-mail (либо взять эту информацию из профайла участника), чтобы инициировать оплату.
Далее приложение (серверная сторона приложения продавца) передает эту информацию (вместе с другими параметрами платежа, суммой и т.п) в первом XML запросе данного интерфейса. Результатом выполнения этого запроса является поиск участника по переданным данным и отправка СМС кода, USSD запроса или выписка ВМ-счета.
После успешного выполнения этого запроса приложение продавца предлагает покупателю либо ввести подтверждающий код, присланный на СМС, либо подтвердить, что USSD запрос получен и одобрен либо ВМ-счет получен и оплачен. В этом случае приложение продавца осуществляет вызов второго XML-запроса данного интерфейса в результате выполнения которого производится оплата и в ответе на запрос продавец получает те же данные,
которые он получил бы, если бы оплата произошла обычным способом через merchant.webmoney.
Пример использования интерфейса (эмуляция вызова и тексты запросов), воспользоваться тестом смогут только пользователи сервиса merchant.webmoney или разработчики, имеющие на своем ВМИД кошельки, настроенные в merchant.webmoney в рабочем или тестовом режиме.
<merchant.request> <wmid></wmid> <lmi_payee_purse></lmi_payee_purse> <lmi_payment_no></lmi_payment_no> <lmi_payment_amount></lmi_payment_amount> <lmi_payment_desc></lmi_payment_desc> <lmi_clientnumber></lmi_clientnumber> <lmi_clientnumber_type></lmi_clientnumber_type> <lmi_sms_type></lmi_sms_type> <secret_key></secret_key> <sign></sign> <md5></md5> </merchant.request>
| название | назначение | примечание |
| wmid | ВМ-идентификатор получателя или подписи | WMID, которому принадлежит кошелек, на который был принят платеж lmi_payment_no через сервис merchant.webmoney.ru , либо WMID, подписавший запрос при использовании метода аутентификации WMSigner, при этом данному WMID , если ему не принадлежит кошелек, получивший платеж, должно быть дано доверие на выписку счетов от имени данного идентификатора |
| lmi_payee_purse | ВМ-кошелек получателя платежа | Номер кошелька который зарегистрирован и настроен в сервисе merchant.webmoney и на который продавец будет принимать оплату |
| lmi_payment_no | номер платежа | Номер платежа в системе учета продавца integer, который должен быть сформирован приложением продавца. Параметр полностью аналогичен параметру, передаваемоу сервису merchant.webmoney.ru в форме платежа в скрытом поле ввода lmi_payment_no и имеет тоже название. Обратите внимание, что если в настройках сервиса merchant.webmoney.ru для кошелька lmi_payee_purse не установлена опция, принимать только уникальные lmi_payment_no, то в этом случае возможны варианты, когда по вине продавца сформировавшего для разных покупок или даже покупателей один и тот же lmi_payment_no, будет произведено две оплаты с одним и тем же номером в системе учета продавца. Старайтесь, чтобы каждая покупка в системе учета продавца имела уникальный номер lmi_payment_no |
| lmi_payment_amount | сумма платежа | Сумма платежа, которую продавец желает получить от покупателя в том же типе ВМ-валюты что и кошелек продавца lmi_payee_purse. Сумма должна быть больше нуля, дробная часть отделяется точкой. |
| lmi_payment_desc | назначение платежа | Описание товара или услуги. Формируется продавцом. Если присутствует, добавляется в назначение платежа в операцию перевода WebMoney. Максимальная длина – 255 символов. |
| lmi_clientnumber | данные покупателя | Мобильный телефон (с кодом страны и города только цифры без плюсов, скобок и других символов например для России 79167777777 или Украины 380527777777) или ВМ-идентификатор покупателя (строго 12 цифр) или E-mail покупателя. При этом интерфейс автоматически найдет ВМ -идентификатор или WebMoney чек, с которого может быть произведена оплата покупателем. |
| lmi_clientnumber_type | тип данных | Тип переданных в lmi_clientnumber данных, если передается мобильный телефон то необходимо указать в этом поле цифру 0, если ВМИД – цифру 1, если E-mail – цифру 2 |
| lmi_sms_type | тип СМС | Данное поле определяет тип подтверждения покупателем транзакции. Если в данном поле передать цифру 1, то покупателю будет выслана СМС. Если цифра 2, то покупателю будет передан USSD запрос. Если цифра 3, то будет произведена попытка (из настроек сделанных самим покупателем и анализа предыдущих платежей и т.п.) определить автоматически какой запрос будет предпочтительней для покупателя (в случае неуспеха будет выбран тип СМС). Если цифра 4, то ни СМС ни USSD запроса отправляться не будет и будет только выставлен ВМ-счет, который покупатель сможет оплатить через мобильное или какое-либо другое приложение WebMoney, но в этом случае будет недоступна оплата через WebMoney чек, так как в нем оплата возможна только при подтверждении через СМС(USSD). При этом обращаем внимание, что независимо ни от какого значения данного параметра, если интерфейс определит, что оплата будет производиться с ВМ-идентификатора (не с WebMoney чека для которого обязательно нужен мобильный), то ВМ-счет все равно всегда будет выставлен покупателю. При этом покупатель может не получить СМС или USSD запрос (если интерфейс вызывается именно с отправкой СМС), но он может оплатить счет в любом мобильном приложении по управлению кошельками и оплата пройдет штатно. Просто в подтверждающем запросе приложение продавца может не передавать подтверждающий код (передать значение кода равно 0) или даже передать любой код, при этом в ответе все равно будут переданы данные успешного платежа. Оптимальным для любых случаев в данном запросе является передача цифры 3. |
| sign | Подпись запроса | Подпись производится ключами идентификатора wmid методом WMSigner и формируется из параметров: wmid + lmi_payee_purse + lmi_payment_no + lmi_clientnumber + lmi_clientnumber_type. Обратите внимание, что если кошелек lmi_payee_purse не принадлежит идентификатору wmid, то необходимо чтобы на security.webmoney.ru этому идентификатору было установлено доверие на выписку счетов для кошелька lmi_payee_purse. В случае если используется данный вариант аутентификации запроса, параметры md5 и secret_key должны остаться пустыми или быть опущены. |
| md5 | Подпись запроса | Подпись производится методом MD5 и формируется из параметров: wmid + lmi_payee_purse + lmi_payment_no + lmi_clientnumber + lmi_clientnumber_type + secret_key. В случае если используется данный вариант аутентификации запроса, параметры sign и secret_key должны остаться пустыми или быть опущены. Обратите внимание, что при формировании строки к которой применяется алгоритм md5 в качестве secret_key используется значение секретного слова из настроек кошелька в сервисе merchant.webmoney.ru , при этом в самом запросе необходимо передавать ТОЛЬКО результат работы алгоритма в параметре MD5 , параметр secret_key должен остаться не указанным или пустым!!! |
| secret_key | секретное слово | В данном параметре передается значение секретного слова из настроек кошелька lmi_payee_purse в сервисе merchant.webmoney.ru . Обратите внимание, что при использовании данного метода, проверка аутентичности соединения по https (валидности и принадлежности корневого сертификата сервера https://merchant.webmoney.ru/ и т.п.) во избежание подмены DNS и т.п. остается на совести отправителя запроса. В случае если используется данный вариант аутентификации запроса, параметры sign и md5 должны остаться пустыми или быть опущены. |
| lang | язык ответа | В данном параметре передается значение ru-RU или en-US соответсвенно для русского или английского языка интерфейса. Данное значение определяет и язык отправляемых пользователю SMS (USSD) запросов и язык ответов в теге userdesc |
<?xml version="1.0"?> <merchant.response> <operation wminvoiceid=""> <realsmstype></realsmstype> </operation> <retval>0</retval> <retdesc></retdesc> <userdesc></userdesc> </merchant.response>
| название | назначение | примечание |
| wminvoiceid | ВМ-номер счета | Уникальный номер ВМ-счета в системе WMT |
| realsmstype | тип отправки СМС | Если в данном поле передана цифра 1 – это значит что покупателю отправлена SMS, 2 – отправлен USSD запрос, 4 – ничего не отправлялось |
| retval | номер ошибки | Цифровой код ошибки, в случае если выполнение запроса завершилось с ошибкой |
| retdesc | описание ошибки | Текстовое описание ошибки для разработчиков приложения продавца, описывающее причины невозможности успешного выполнения запроса |
| userdesc | информация для покупателя | В случае ошибки данный текст можно транслировать покупателю как инструкцию, которая поможет ему быстро и правильно понять, что необходимо сделать чтобы избежать ошибки в дальнейшем |
Задача приложения продавца при успешном вызове первого запроса, получить и сохранить соответствующее платежу значение wminvoiceid.
Без этого значения не может быть вызван второй, подтверждающий оплату запрос. Если по каким-либо причинам (имеются ввиду обрывы связи, таймауты и прочие НЕявные или недокументированные ошибки) данное значение не получено или не сохранено, то необходимо вызвать первый запрос повторно (при этом не меняя его!!!), при этом все параметры должны оставаться без изменений.
Если состояние запроса не будет выяснено и не будет получен wminvoiceid, то повторный вызов с изменением какого-либо параметра, например суммы платежа, приведет к выписке нового ВМ-счета и отправке новой СМС-ки, при этом потенциально возможна ситуация, когда покупатель оплатит ОБА счета, хотя исходя из логики работы приложения продавца возможна только единственная оплата.
В случае необходимости отмены приема средств по какому-либо wminvoiceid возможен вызов подтверждающего интерфейса с параметрами отказа от приема оплаты по счету wminvoiceid, в этом случае, если оплата еще не произошла до момента вызова отказа, то она и не будет произведена и приложение продавца может выставить новый счет, не опасаясь поступления средств по предыдущему счету.
Также в любой момент приложение продавца может выяснить состояние счета wminvoiceid путем вызова интерфейса X18 либо вызова повторного, подтверждающего интерфейса XMLTransConfirm.asp
Обратите внимание, что если Ваш кошелек продавца находится в тестовом режиме (например это тестовый кошелек разработчика), то чтобы отладить работу интерфейса необходимо чтобы входящие параметры удовлетворяли следующим условиям lmi_payment_amount<2, lmi_payment_no<10 , lmi_payment_desc=X20 test payment, иными словами необходимо чтобы сумма не превышала 2 ВМ в любой валюте, номера платежей не превышали 10 , а примечание состояло строго из трех указанных слов на английском.
<merchant.request> <wmid></wmid> <lmi_payee_purse></lmi_payee_purse> <lmi_clientnumber_code></lmi_clientnumber_code> <lmi_wminvoiceid></lmi_wminvoiceid> <secret_key></secret_key> <sign></sign> <md5></md5> </merchant.request>
| название | назначение | примечание |
| wmid | ВМ-идентификатор получателя или подписи | WMID, которому принадлежит кошелек, на который был принят платеж lmi_payment_no через сервис merchant.webmoney.ru , либо WMID, подписавший запрос при использовании метода аутентификации WMSigner, при этом данному WMID , если ему не принадлежит кошелек, получивший платеж, должно быть дано доверие на выписку счетов от имени данного идентификатора |
| lmi_payee_purse | ВМ-кошелек получателя платежа | Номер кошелька который зарегистрирован и настроен в сервисе merchant.webmoney и на который продавец будет принимать оплату |
| lmi_clientnumber_code | код покупателя | В данном поле передается цифровой код, который покупатель получил на мобильный телефон для подтверждения платежа. Если СМС не отправлялась покупателю (был отправлен USSD запрос или просто ожидается оплата покупателем ВМ-счета через мобильные программы управления кошельками), то здесь необходимо передать код со значением 0. В случае если все же СМС была отправлена покупателю, но покупатель оплатил ВМ -счет через программу управления кошельками, то передача здесь кода 0 все равно даст успешный результат, так как проверка кода просто не будет производиться. Если в данном параметре передать -1 и на момент выполнения запроса оплата еще не произошла, то счет будет отменен и оплата в дальнейшем будет невозможна. |
| lmi_wminvoiceid | номер ВМ-счета | номер ВМ-счета wminvoiceid, полученный из ответа на предыдущий запрос |
| sign | Подпись запроса | Подпись производится ключами идентификатора wmid методом WMSigner и формируется из параметров: wmid + lmi_payee_purse +lmi_wminvoiceid+lmi_clientnumber_code. Обратите внимание, что если кошелек lmi_payee_purse не принадлежит идентификатору wmid, то необходимо чтобы на security.webmoney.ru этому идентификатору было установлено доверие на выписку счетов для кошелька lmi_payee_purse. В случае если используется данный вариант аутентификации запроса, параметры md5 и secret_key должны остаться пустыми или быть опущены. |
| md5 | Подпись запроса | Подпись производится методом MD5 и формируется из параметров: wmid + lmi_payee_purse +lmi_wminvoiceid+lmi_clientnumber_code+secret_key. В случае если используется данный вариант аутентификации запроса, параметры sign и secret_key должны остаться пустыми или быть опущены. Обратите внимание, что при формировании строки, к которой применяется алгоритм md5 в качестве secret_key используется значение секретного слова из настроек кошелька в сервисе merchant.webmoney.ru , при этом в самом запросе необходимо передавать ТОЛЬКО результат работы алгоритма в параметре MD5 , параметр secret_key должен остаться не указанным или пустым!!! |
| secret_key | секретное слово | В данном параметре передается значение секретного слова из настроек кошелька lmi_payee_purse в сервисе merchant.webmoney.ru . Обратите внимание, что при использовании данного метода, проверка аутентичности соединения по https (валидности и принадлежности корневого сертификата сервера https://merchant.webmoney.ru/ и т.п.) во избежание подмены DNS и т.п. остается на совести отправителя запроса. В случае если используется данный вариант аутентификации запроса, параметры sign и md5 должны остаться пустыми или быть опущены. |
| lang | язык ответа | В данном параметре передается значение ru-RU или en-US соответсвенно для русского или английского языка интерфейса. Данное значение определяет и язык отправляемых пользователю SMS (USSD) запросов и язык ответов в теге userdesc |
<?xml version="1.0"?> <merchant.response> <operation wmtransid="" wminvoiceid=""> <amount></amount> <operdate></operdate> <purpose></purpose> <pursefrom></pursefrom> <wmidfrom></wmidfrom> </operation> <retval>0</retval> <retdesc></retdesc> <userdesc></userdesc> </merchant.response>
| название | назначение | примечание |
| wminvoiceid | номер ВМ-счета | Уникальный номер ВМ-счета в системе по которому производится оплата |
| wmtransid | номер ВМ-транзакции | Уникальный номер транзакции. Если в данном параметре присутствует положительное число больше 0, только тогда это означает, что платеж был успешно совершен. Для обычных продавцов использующих merchant.webmoney наличие данного уникального номера транзакции означает, что средства от покупателя поступили и находятся на кошельке. Для продавцов, использующих processing.webmoney наличие wmtransid означает, что средства поступили, войдут в текущий реестр и будут отправлены очередным банковским переводом по этому реестру. Для продавцов с ВМИД Capitaller, настроивших в нем прием средств через merchant.webmoney это означает , что средства поступили на доходный кошелек и в ближайшее время будут распределены в соответствии с политикой бюджетного автомата. Если приложение продавца не имеет номер wmtransid (не зафиксировало его наличие или не сохранило его в своей системе учета), то ни предоставлять товар, ни оказывать услугу, ни пополнять лицевой счет и т.п. нельзя. В случае завершения запроса по таймауту или в случае обрыва связи его следует повторить до получения wmtranid или четкого номера ошибки в параметре retval, подтверждающего что платеж не прошел. |
| amount | сумма платежа | Сумма платежа в ВМ-валюте того же типа, что и кошелек продавца. |
| operdate | дата платежа | Дата платежа wmtransid по часам сервера системы. |
| pursefrom | кошелек участника | Номер ВМ-Кошелька участника, с которого была совершена транзакция. Если платеж был совершен с WebMoney чека (в инициирующем запросе был передан мобильный телефон, система определила наличие чека с таким номером телефона в системе и была отправлена подтверждающая СМС), то в качестве кошелька будет фигурировать кошелек системы Paymer соответствующего типа Z000000000001 (или R, G, U, B, E) |
| wmidfrom | ВМИД участника | ВМИД участника, с которого была совершена транзакция. Если платеж был совершен с WebMoney чека, то в качестве ВМИДа будет фигурировать ВМИД чековой системы Paymer 000000000000 |
| retval | номер ошибки | Цифровой код ошибки, в случае если выполнение запроса завершилось с ошибкой |
| retdesc | описание ошибки | Текстовое описание ошибки для разработчиков приложения продавца, описывающее причины невозможности успешного выполнения запроса |
| userdesc | информация для покупателя | В случае ошибки данный текст можно транслировать пользователю как инструкцию, которая поможет ему быстро и правильно понять, что необходимо сделать чтобы избежать ошибки в дальнейшем |
| smssentstate | статус отправки СМС | Если интерфейс завершен с ошибкой 553 (когда оплата осуществляется с Вебмани чека и передан Lmi_clientnumber_code=0 для выяснения состояния оплаты) или с ошибкой 556 (когда оплата осуществляется с WebMoney кошелька и она еще не прошла), то данный тег присутствует в ответе (если СМС или USSD отправлялись, то есть lmi_sms_type = 1,2,3 ) и содержит состояние СМС или USSD BUFFERED – ожидает отправки SENDING – отправляется оператору SENDED- передано оператору DELIVERED- доставлено NON_DELIVERED – не доставлено SUSPENDED – отложено для повтора |
Напоминаем, что для возврата уже осуществленных платежей можно использовать безкомиссионный интерфейс возврата Интерфейс X14, он работает с любыми платежами, принятыми с помощью данного интерфейса и возвращает средства либо на кошелек плательщика, либо на его мобильный телефон WebMoney чека.
Описание ошибок, возвращаемых интерфейсом:
| retval | retdesc |
| -100 | общая ошибка при разборе запроса |
| -1 | merchant.request/wmid is incorrect |
| -2 | merchant.request/lmi_payee_purse is incorrect |
| -3 | merchant.request/lmi_payement_no is incorrect |
| -4 | value of merchant.request/lmi_payment_amount is incorrect |
| -5 | merchant.request/lmi_payment_desc is incorrect, less than 5 symbols or greater than 235 symbols |
| -6 | merchant.request/lmi_clientnumber is incorrect, less than 5 symbols or greater than 50 symbols |
| -7 | merchant.request/lmi_clientnumber_type is incorrect, must be specified 1 digit |
| -7 | merchant.request/lmi_clientnumber_type is incorrect, must be specified 0, 1,2,3 |
| -2 | merchant.request/lmi_payee_purse is incorrect |
| -1 | merchant.request/wmid is incorrect |
| -9 | sign not right |
| -9 | sign not right:planstr |
| -9 | MD5 not right:planstr(this planstr without secret_key) |
| -2 | merchant.request/request_wminvoiceid is incorrect, less than 5 symbols or greater than 25 symbols |
| -2 | merchant.request/request_clientnumber_code is incorrect, less than 5 symbols or greater than 25 symbols |
| -8 | Attempt to deposit check to purse failed:PaymerResultNum |
| 501 | Merchant purse not found or purse not in active and work mode |
| 502 | Only unique lmi_payment_no allowed |
| 503 | Only WMZ, WME, WMR, WMU, WMG, WMB purses allowed |
| 504 | Specified WMID in wmid tag not found |
| 505 | Specified WMID is not owner for lmi_payee_purse and don`t have trust access for create invoice |
| 506 | Secret key for lmi_payee_purse not specified |
| 507 | Specified secret key for lmi_payee_purse – wrong |
| 571 | Specified in lmi_client_number WebMoney check not exists |
| 572 | Specified in lmi_client_number WebMoney check have wrong WM type (example – merchant have WMZ purse, but WebMoney check – WMR type) |
| 573 | Specified in lmi_client_number WebMoney check have no enough money |
| 511 | Specified in lmi_clientnumber_type wrong, only phone, wmid or e-mail allowed |
| 512 | WMID not found by specified in lmi_clientnumber_type phone |
| 513 | Specified in lmi_client_number phone not checked, |
| 514 | WMID found by specified in lmi_clientnumber_type phone have not enough money |
| 515 | Purse found by specified in lmi_clientnumber_type phone used for active merchant interface and payment not allowed |
| 516 | Specified in lmi_clientnumber_type WMID not found |
| 517 | Specified in lmi_client_number WMID have no checked phone, |
| 518 | Specified in lmi_clientnumber_type WMID have not enough money |
| 519 | Purse found by specified in lmi_clientnumber_type WMID used for active merchant interface and payment not allowed |
| 520 | WMID not found by specified in lmi_clientnumber_type email |
| 521 | WMID found by specified in lmi_client_number email, but it have no no checked phone |
| 522 | WMID found by specified in lmi_clientnumber_type email have not enough money |
| 523 | Purse found by specified in lmi_clientnumber_type email, but it used for active merchant interface and payment not allowed |
| 524 | Payment amount exceed default daily limit |
| 525 | WMID found , but it have no enabled payment option by sms, so this option enabled in another WMID found by phone, please use that WMID for payments |
| 526 | Payments disabled by user for specified phone/wmid/email |
| 527 | Require purse not found for specified(found) WMID |
| 532 | Payments disabled by user for required purse type |
| 528 | Payment amount exceed daily limit, specified by user |
| 529 | Payment amount exceed weekly limit, specified by user |
| 530 | Payment amount exceed monthly limit, specified by user |
| 531 | Purse (specified by user for sms payments) have not enough money |
| 532 | SMS payments for found WMID disabled by system |
| 533 | SMS payments for found WMID disabled by system |
| 535 | Too mach SMS without payments found for specified WMID/email/phone |
| 543 | Less than 15 minutes ago, it is WebMoney check already try to pay same amount with same number to same merchant, try again later |
| 550 | Specified lmi_wminvoiceid not registred for sms payment by WebMoney Check |
| 551 | User canceled payment lmi_wminvoiceid by WebMoney Check |
| 553 | User payment initiated by WebMoney Check, SMS code must be specified, proceed payment by WebMoney check without code not allowed |
| 555 | Specified lmi_wminvoiceid not registred for sms payment by WebMoney Purse |
| 557 | User canceled payment lmi_wminvoiceid by WebMoney Purse |
| 556 | Specified lmi_clientnumber_code wrong |
| 558 | SMS for lmi_wminvoiceid not send by XMLTransRequest |
см. также XML-интерфейсы
Ролик, демонстрирующий оплату через X20
Категория: XML-интерфейсы, Прием платежей
This article in other languages: English