|
|
|||||||
|
о WebMoney / Материалы / XML-интерфейсы. Часть 7. X22
XML-интерфейсы. Часть 7. X22© Никита Сенченко, 28.08.2012
Новый интерфейс X22 позволяет зарегистрировать заказ (корзину) в WebMoney Merchant и получить ссылку на его оплату через merchant.webmoney.ru. Работает с кошельками, подключенными к Merchant. Будет полезен, когда прием платежей с помощью Merchant нельзя полностью автоматизировать. Предыдущие статьи о XML-интерфейсах WebMoney: А также: WM Merchant и интерфейс Х18. Здесь лежит библиотека XOWM с PHP-функциями, которые реализуют работу с XML-интерфейсами WebMoney. ВведениеИнтерфейс Х22 выпущен в июле 2012 года. Он - один из самых простых XML-интерфейсов WebMoney. Его полное описание находится, как всегда, в wiki.X22 позволяет зарегистрировать заказ (корзину) в WebMoney Merchant и получить ссылку на его оплату через merchant.webmoney.ru. Фактически, это ничем не отличается от приема платежей с помощью WebMoney Merchant, однако в данном случае формируется и сохраняется на сервере WebMoney точная ссылка на оплату конкретного заказа на конкретную сумму. Пример использования такой. Клиент обращается к отельному брокеру и просит забронировать для него гостиницу. Менеджер подбирает гостиницу и ставит бронь, после чего регистрирует заказ с помощью Х22. Получив от WebMoney ссылку на оплату, менеджер отправляет ее клиенту по email, а клиент переходит по ссылке и производит оплату. Итак, Х22 подходит для тех случаев, когда нет возможности полностью автоматизировать прием платежа от начала до конца на сайте. X22 базируется на merchant.webmoney.ru. Все подобные интерфейсы (кроме X22 это еще и X18, X20) могут вызываться БЕЗ использования электронной подписи, полученной с помощью ключа Кипера (kwm-файл) и WMSigner (исключение составляет еще один интерфейс на базе Merchant - X21; он работает только с WMSigner). Вместо этого используется md5-хеш на основе вашего "секретного слова" в настройках WebMoney Merchant. Это сильно упрощает разработку, но вы должны хорошо понимать, как работает Merchant. Таким образом, X22 работает только для кошельков, подключенных к WebMoney Merchant и настроенных соответствующим образом здесь https://merchant.webmoney.ru/conf/purses.asp (для тех, кто пользуется собственными кошельками) или на сайте https://processing.webmoney.ru (для тех, кто подключен к системе WebMoney Processing). Программирование интерфейсаОбщий принцип X22 такой же, как и для других интерфейсов WebMoney. Нужно обратиться с запросом на определенный URL, например, с помощью curl в PHP, и считать ответ.URL: https://merchant.webmoney.ru/conf/xml/XMLTransSave.asp Состав запроса: <merchant.request> Итак, можно использовать один из 3 вариантов подписи: sign, md5 или secret_key. Поля двух неиспользуемых способов должны оставаться пустыми. Мы будем использовать md5. Его получаем из строки склеенных параметров: $md5=strtoupper(md5($wmid.$lmi_payee_purse.$lmi_payment_no.$period.$secret_key)); Здесь $secret_key - это "секретное слово", установленное в настройках Merchant для вашего кошелька. Еще один момент. Если в validityperiodinhours передать 0, то такой заказ будет сохранен навсегда. Если зарегистрировать новый заказ с validityperiodinhours=0, то параметры этого заказа перезапишут параметры предыдущего "вечного" заказа. "Вечную" ссылку удобно использовать, например, для приема благотворительных пожертвований на сайте на фиксированную сумму от неограниченного круга лиц. В остальных же случаях, чтобы не запутаться, я рекомендую всегда передавать конечный срок жизни заказа в часах от 1 до 744. Ответ сервера WebMoney: <merchant.response> Функция _WMXML22()Функция _WMXML22() для работы с Х22 включена в библиотеку XOWM. Она принимает параметры, отправляет XML-запрос на сервер WebMoney (нужна поддержка curl), считывает XML-ответ, парсит его (нужна поддержка simplexml) и отдает набор данных из полей XML-ответа:
Отдельного пояснения, видимо, требует этот код: if (!preg_match('//u', $lmi_payment_desc)) // если $lmi_payment_desc не в UTF8 $lmi_payment_desc=iconv("CP1251", "UTF-8", $lmi_payment_desc); // ...переводим в UTF8 Напомню, что lmi_payment_desc должен быть передан на сервер WebMoney в запросе X22 в кодировке UTF8. Не зная заранее, какой текст и в какой кодировке будет на входе функции, мы сначала проверяем его на наличие русских букв, представленных не в UTF8. Если таковые найдены, переводим всю строку в UTF8 с помощью iconv. При этом предполагается, что такие русские буквы были изначально в кодировке CP1251. Чтобы протестировать работу функции, ее нужно вызвать с вашими реальными параметрами и распечатать массив с результатами: $ret=_WMXML22("ВАШ_WMID", КОЛИЧЕСТВО_ЧАСОВ, "ВАШ_КОШЕЛЕК", СУММА, НОМЕР_ЗАКАЗА, "ОПИСАНИЕ_ЗАКАЗА", "СЕКРЕТНОЕ_СЛОВО"); print_r($ret); Пустым, напомню, может быть только НОМЕР_ЗАКАЗА (lmi_payment_no). Если вам необходимо передать на Merchant какие-то дополнительные параметры, кроме стандартных lmi_payee_purse, lmi_payment_no, lmi_payment_amount, lmi_payment_desc, модифицируйте функцию самостоятельно и добавьте в нее новые входные параметры и их передачу в XML-запросе. Например, вы хотите передать LMI_RESULT_URL, чтобы переопределить Result URL для данного платежа. А также вы хотите передать свой собственный параметр COUNT, в котором будете хранить, скажем, количество товаров в данном заказе. Тогда набор входных параметров дополнится: function _WMXML22 ($wmid, $period, $lmi_payee_purse, $lmi_payment_amount, $lmi_payment_no, $lmi_payment_desc, $secret_key, $lmi_result_url, $count) { ... } И соответственно дополнится xml-пакет, он теперь будет выглядеть так: $xml=" Как это всё работает на практике, можно посмотреть здесь. Там, кстати, в составе пакета по X22 передается кроме стандартных параметров lmi_payment_no, lmi_payment_amount, lmi_payment_desc, lmi_payee_purse также дополнительный параметр email. группа: Материалы
другие материалы в этих категориях:
Автомобилистам на заметку: как оплатить штраф по WM На WebMoney Merchant можно принимать Биткоины Автоплатежи помогут не забыть об оплате Новая библиотека для платформы .Net В обновленных Киперах появились регулярные платежи прочтений: 10613
|
|
Все права на материалы, опубликованные на owebmoney.ru, охраняются в соответствии с законом об авторском праве. Разрешено копирование без согласования при условии указания гиперссылки на сайт (без атрибута nofollow и сокрытий) непосредственно до\после материала.
|
|