Правильная ссылка на эту статью: |
Интерфейс X22
Интерфейс X22. Получение тикета предварительной регистрации формы запроса платежа для сервиса Merchant WebMoney Transfer.¶
Интерфейс позволяет предварительно сохранить форму запроса платежа и получить соответствующий ей тикет, с помощью которого можно сформировать прямую ссылку на данный платеж.
Преимущество данного способа перед передачей формы запроса с сайта продавца заключается в том, что во-первых, прямая ссылка может быть передана любыми способами связи, в том числе и с помощью QR-кода для оплаты мобильным приложением, а во-вторых, прямая ссылка с тикетом исключает искажение параметров платежа (при передаче параметров в форме пользователь может ненамеренно или специально исказить параметры платежа и поэтому необходимо всегда перепроверять их в форме предварительного запроса или форме оповещения о платеже).
- Если перейти по этой ссылке в браузере на десктопе, то будет открыт сайт сервиса merchant.webmoney с уже установленными параметрами платежа.
- Если перейти по этой ссылке в браузере смартфона, то откроется форма оплаты с параметрами в мобильном приложении.
- Если сгенерировать из этой ссылки QR-код, то форма оплаты с параметрами откроется в мобильном приложении после считывания им QR-кода оплаты.
Тикет, передаваемый в параметре gid данной ссылки, может быть сформирован продавцом для любого платежа.
Данный интерфейс можно вызвать вручную на сайте merchant.webmoney.com
- URL для передачи запроса - https://merchant.webmoney.com/conf/xml/XMLTransSave.asp
- метод - POST
- формат запроса:
<merchant.request> <signtags> <wmid></wmid> <validityperiodinhours></validityperiodinhours> <sign></sign> <sha256></sha256> <md5></md5> <secret_key></secret_key> <lang></lang> </signtags> <paymenttags> <lmi_...></lmi_...> <lmi_...></lmi_...> <lmi_...></lmi_...> ... <usertagname1></usertagname1> <usertagname2></usertagname2> <usertagname3></usertagname3> </paymenttags> </merchant.request>
- параметры запроса:
название | назначение | примечание |
wmid | ВМ-идентификатор получателя или подписи | WMID, которому принадлежит кошелек, на который будет приниматься регистрируемый платеж через сервис merchant.webmoney.com, либо WMID, подписавший запрос при использовании метода аутентификации WMSigner, при этом данному WMID , если ему не принадлежит кошелек, получающий платеж, должно быть дано доверие на выписку счетов |
validityperiodinhours | срок действия тикета | Целое положительное число часов, в течении которых будет действовать создаваемый тикет платежа. Срок действия тикета не может превышать 744 часа, и по прошествии этого срока тикет станет недействительным. Количество создаваемых тикетов с указанным сроком действия не ограничено. Есть возможность создать вечный тикет, в этом случае необходимо указать срок действия равный нулю, но таких тикетов можно создать только один на один кошелек, при повторном вызове интерфейса по одному и тому же кошельку со сроком действия 0 , будет произведена замена имеющегося тикета вновь присланными данными , при этом будет возвращен все тот же номер тикета платежа. |
sign | Подпись запроса | Подпись производится ключами идентификатора wmid методом WMSigner и формируется из параметров: wmid+lmi_payee_purse+lmi_payment_no+validityperiodinhours. Причем параметры начинающиеся с lmi_ берутся из секции тегов paymenttags. Обратите внимание, что если кошелек lmi_payee_purse не принадлежит идентификатору wmid, то необходимо чтобы на security.web.money этому идентификатору было установлено доверие на выписку счетов от кошелька lmi_payee_purse. Если используется данный вариант аутентификации запроса, параметры sha256, md5 и secret_key нужно не указывать или оставить их пустыми. |
sha256 | Подпись запроса | Подпись производится методом SHA256 и формируется из параметров: wmid & lmi_payee_purse & lmi_payment_no&validityperiodinhours & secret_key. Причем параметры начинающиеся с lmi_ берутся из секции тегов paymenttags. В случае если используется данный вариант аутентификации запроса, параметры sign, md5 и secret_key должны остаться пустыми или не указываться. Обратите внимание, что при формировании строки к которой применяется алгоритм SHA256 в качестве secret_key используется значение секретного слова из настроек кошелька в сервисе merchant.webmoney.com, при этом в самом запросе необходимо передавать ТОЛЬКО результат работы алгоритма в параметре SHA256, параметр secret_key должен остаться не указанным или пустым!!! |
md5 | Подпись запроса | Подпись производится методом MD5 и формируется из параметров: wmid & lmi_payee_purse & lmi_payment_no&validityperiodinhours & secret_key. Причем параметры начинающиеся с lmi_ берутся из секции тегов paymenttags. В случае если используется данный вариант аутентификации запроса, параметры sign, sha256 и secret_key должны остаться пустыми или не указываться. Обратите внимание, что при формировании строки к которой применяется алгоритм md5 в качестве secret_key используется значение секретного слова из настроек кошелька в сервисе merchant.webmoney.com, при этом в самом запросе необходимо передавать ТОЛЬКО результат работы алгоритма в параметре MD5, параметр secret_key должен остаться не указанным или пустым!!! |
secret_key | секретное слово | В данном параметре передается значение секретного слова из настроек кошелька lmi_payee_purse в сервисе merchant.webmoney.com. Обратите внимание, что при использование данного метода, проверка аутентичности соединения по https (валидности и принадлежности корневого сертификата сервера https://merchant.webmoney.com/ и т.п.) во избежание подмены DNS и т.п. остается на совести отправителя запроса. В случае если используется данный вариант аутентификации запроса, параметры sign, sha256 и md5 должны быть не указаны или остаться пустыми. |
lang | может принимать значение ru-RU en-US vi-VN uk-UA | |
paymenttags | теги формы запроса платежа | В секции тегов paymenttags необходимо указать ровно все те поля, которые бы были переданы при платеже обычным способом через форму запроса платежа с сайта продавца. При этом в обязательно порядке должны быть указаны такие теги, как lmi_payee_purse, lmi_payment_amount, lmi_payment_no, lmi_payment_desc. Тэг lmi_onetimepay если равен 1, то тикет для однократной оплаты (не работает для вечных тикетов validityperiodinhours равных 0). Все остальные указанные в данной секции теги будут отработаны ровно также, как если бы они были указаны в форме запроса платежа |
- формат ответа:
<?xml version="1.0"?> <merchant.response> <transtoken></transtoken> <payurl></payurl> <validityperiodinhours></validityperiodinhours> <retval>0</retval> <retdesc></retdesc> </merchant.response>
- параметры ответа:
название | назначение | примечание |
transtoken | токен операции | Токен транзакции, который необходимо передать в ссылке формы запроса платежа в параметре gid. Для вызова на русском — https://merchant.webmoney.com/lmi/payment.asp?gid=token. Для вызова на английском — https://merchant.wmtransfer.com/lmi/payment.asp?gid=token. Универсальная ссылка оплаты — https://merchant.webmoney.com/lmi/paydl.asp?gid=token |
payurl | строка с универсальной ссылкой оплаты | Параметр является символьной строкой внутри элемента CDATA, включающей URL с токеном транзакции transtoken. Например, ![CDATA[https://merchant.wmtransfer.com/lmi/paydl.asp?gid=D31A3F81-B953-4F55-B1B4-8DCBA881076F]]. Универсальный URL оплаты представляет собой DeepLink и может использоваться как при оплате на сайте сервиса Merchant, так и при платежах мобильным приложением WM Keeper Standard и WM Keeper Pro. Данная ссылка позволяет проводить оплату мобильным приложением двумя способами: * считать сканером мобильного приложения WM Keeper сгенерированный из данного URL QR-код оплаты, и в открывшейся форме подтвердить платеж; * кликнуть по данной ссылке в браузере смартфона, автоматически перейти в мобильное приложение (только на iOS или Android) и в открывшейся форме подтвердить платеж. |
validityperiodinhours | срок действия тикета | Если переданное в запросе значение validityperiodinhours будет меньше 0 или больше 744 или не будет являться числом или вообще будет не указано, то в ответе здесь будет передано реальное значение срока действия созданного тикета, по умолчанию это 744. Если все будет указано верно, то здесь будет передано тоже значение, что было передано в запросе и которое будет являться реальным сроком действия для данного тикета. |
retval | код выполнения | 0 - запрос выполнен успешно, другие значения означают, что при запросе произошла ошибка |
retdesc | расшифровка кода выполнения | Текстовое описание ошибки для разработчиков приложения продавца, описывающее причины невозможности успешного выполнения запроса |
- список ошибок:
retval | retdesc |
-101 | при проверке платежа по тикету получили ошибку; детали в поле retdesc |
-100 | общая ошибка при разборе запроса |
-2 | merchant.request/wmid is incorrect |
-2 | merchant.request/lmi_payee_purse is incorrect |
-2 | merchant.request/lmi_payement_no is incorrect |
-2 | merchant.request/wmid is incorrect |
-3 | merchant.request/lmi_payee_purse is incorrect |
-6 | sign not right |
-7 | sign not right: PlanStr |
-7 | SHA256 or MD5 not right:PlanStr(this planstr without secret_key) |
-8 | internal error:error code |
1 | Merchant purse not found:1 |
3 | Please use sign or sha256 method for authentication:3 |
2 | Please use sign or sha256 method for authentication, and specify secret key in merchant service settings:2 |
4 | Merchant wmid not found or security trust for purse is not exists:4 |
6 | Merchant wmid not found or security trust for purse is not exists:6 |
7 | Payment with lmi_payment_no number not found for this merchant purse:7 |
см. также XML-интерфейсы