оВебМани.Ру - всё о WebMoney. СТАТЬИ. Автоматический прием WM
Автоматический прием WM-платежей. Сервис WebMoney Merchant. © Никита Сенченко Выписка WM-счета с последующей проверкой оплаты. Реализуется с помощью X1 и X3. Я рекомендую использовать 1-й способ, так как он наиболее универсален - позволяет принимать оплату от пользователей как Keeper Classic, так и Keeper Light, а также от пользователей системы Telepat. Кроме того, он позволяет вашему покупателю оплачивать товар/услугу непосредственно с WM-карты или чека Paymer без необходимости регистрации в системе WebMoney. 2-й и 3-й способы такой универсальностью похвастаться не могут, так как поддерживают только Keeper Classic и Light, а 3-й способ, кроме того, довольно сложен в реализации и не обладает абсолютной моментальностью. Поэтому в данной статье мы поговорим о Web Merchant Interface и рассмотрим подключение сайта к нему на конкретном примере. Прежде, чем начать, ответим на важный вопрос: можно ли подключить прием WebMoney в автоматическом режиме, совершенно не обладая навыками программирования? Ответ таков: нет, нельзя. Ни по одному из 3-х способов. Так же, впрочем, как и в случае подключения к сайту любой другой системы электронных денег, вам нужно иметь минимальные навыки программирования. В некоторых наиболее простых случаях возможно подключение Web Merchant Interface без необходимости что-то программировать. Но при этом, хотя сам прием платежей и будет автоматизирован, их обработка все равно останется ручным трудом. А это означает, что не будет и моментальности, поэтому такой подход равносилен обычной публикации на сайте номеров своих WM-кошельков (как, кстати, до сих пор многие и поступают). Так или иначе, в данном материале я предполагаю, что вы умеете программировать под web хотя бы на минимальном уровне. Если не умеете, то дальше можно не читать - у вас ничего не выйдет. Просто опубликуйте на сайте номера своих кошельков и принимайте платежи вручную. Либо наймите программиста. Для демонастрации программного кода я буду использовать PHP + СУБД MySQL. Но поскольку я постараюсь сдобрить статью подробными комментариями, для вас не составит труда реализовать подключение к Web Merchant Interface на другом серверном языке, который вы знаете. Если что-то все же останется не понятым, прибегайте к техническому описанию интерфейса, которое . Автоматизация приема WM-платежей может понадобиться самым разным сайтам - от интернет-магазинов до хостинг-провайдеров. Web Merchant Interface (далее для простоты мы будем называть этот сервис просто Мерчант 1) выполнять заказ моментально после его оплаты, например, отправлять покупателю цифровой товар, пополнять баланс, активировать услугу и т.д.; 2) принимать платежи круглосуточно, без остановок и без ручного участия ваших сотрудников. Общий принцип работы Мерчанта такой (см. рис.1). Вы формируете на своем сайте необходимую информацию о заказе (точка А ) и отправляете ее сайту Мерчанта https://merchant.webmoney.ru. Одновременно с этим и ваш покупатель попадает на этот сайт для совершения платежа. Мерчант авторизует покупателя, предлагает выбрать способ оплаты, проверяет наличие нужной суммы на кошельке или WM-карте, т.е. проводит ряд необходимых идентификаций и проверок. После этого Мерчант списывает WM с кошелька или карты покупателя. В тот же момент уплаченная сумма поступает на ваш кошелек. Мерчант уведомляет ваш сайт о том, что покупка успешно произведена или о том, что возникла какая-либо ошибка (точка D ). Таким образом, вам не нужно проверять свой кошелек, чтобы узнать, поступил платеж, или нет. За вас это делает единожды созданный вами робот. Всё работает автоматически, беспрерывно и без вашего участия. Для использования Web Merchant Interface ваш WMID должен иметь персональный аттестат. Идем по и за несколько секунд получаем аттестат продавца . Теперь на странице нужно подключить к Мерчанту кошелек и установить некоторые опции. Для этого напротив нужного кошелька жмем "настроить". Попадаем на страницу с настройкам. Приводим ее ниже: Что означают эти опции (см. рис.2)? Торговое имя - впишите сюда название вашего сервиса, который будет оплачиваться на данный кошелек. "Торговое имя" плательщик будет видеть на странице Мерчанта перед оплатой (см. рис.3). Ни на что больше оно не влияет. Secret Key - запишем сюда произвольную строку из 15-20 символов, состоящую из английских букв, цифр и других символов, кроме кавычек. Для чего нужен Secret Key, я расскажу чуть позже. Result URL, Success URL, Fail URL . В эти поля нужно вписать адреса 3-х страниц вашего сайта (обязательно с http:// или https:// в начале). Сами страницы мы будем программировать чуть позже, а пока разберемся, зачем они нужны. На Success URL покупатель будет отправлен Мерчантом в случае успешной оплаты. На Fail URL покупатель будет отправлен, если оплата по какой-то причине не произошла (например, покупатель передумал платить и нажал на кнопку отказа, либо у него оказалось недостаточно средств на кошельке). Страница Result URL - секретная, пользователь ее не видит. Она служит для "общения" сервера Мерчанта с вашим сайтом, т.е. для обмена информацией. Желательно выбирать для скрипта (файла), прописанного в Result URL, не банальное имя. Рядом с Success URL и Fail URL выбираем в качестве метода вызова POST. Позволять использовать URL, передаваемые в форме - галочку не ставим, эта опция нам не нужна. Высылать оповещение об ошибке платежа на кипер - будет ли Мерчант отправлять вам по внутренней WM-почте сообщение в случае возникновения ошибки при совершении платежа пользователем. Ставим галочку, так как это полезная фишка. Метод формирования контрольной подписи - выбираем MD5. Вернемся к разговору о контрольной подписи позже. Тестовый/Рабочий режимы - выбираем "Тестовый", так как в тестовом режиме деньги с кошелька плательщика не списываются, и это очень удобно для проведения тестовых покупок. В самом конце, когда всё будет готово, мы вернемся к данной опции и переведем ее в рабочий режим. Активность - включение\выключение возможности приема платежей на этот кошелек через Мерчант. Естественно, выбираем "Вкл". Прием чеков Paymer.com (ВМ-карт) и Прием платежей с телефонов Telepat.ru - эти опции определяют, разрешена ли оплата с чеков Paymer и WM-кошельков, подключенных к системе Телепат. Ставим "Вкл" для обеих, так как именно они и придают сервису Web Merchant Interface ту универсальность, которая отличает его от других 2-х способов приема платежей в системе WebMoney. Жмем кнопку [Сохранить]. На скриншоте (рис.2) я устанавливал настройки для одного из своих Z-кошельков. Точно так же можно настроить и другие кошельки, в т.ч. и кошельки других типов (R, U и т.д.). Если, например, вы планируете принимать оплату за товар/услугу в WMZ и WMR на выбор покупателя, то вам нужно настроить один Z- и один R-кошелек. Настройки совершенно идентичны. Формирование заказа. Начало платежа. Чтобы инициировать платеж, в точке А (см. рис.1) нам нужно передать Мерчанту ряд параметров, для того чтобы Мерчант знал, какую сумму и в пользу какого продавца списывать с кошелька покупателя. Какие именно действия пользователя будут предшествовать точке А - решать вам. Но помните - к моменту, когда покупатель нажмет кнопку в точке А и перейдет на Мерчант для оплаты, вам обязательно нужно иметь информацию об этом пользователе и его покупке. Как правило, это решается одним из способов в зависимости от вашей конкретной ситуации: Покупатель формирует "корзину покупок" и заполняет информацию о себе, а ваш сайт подсчитывает и сохраняет стоимость его заказа. Такой подход обычно применяется в интернет-магазинах нецифровых товаров. Покупатель проходит регистрацию на сайте, входит в личный аккаунт и указывает сумму, на которую он собирается пополнить свой внутренний счет на вашем сайте. Чаще всего применяется на сайтах интернет-казино, хостинг-провайдеров. Покупатель просто выбирает один товар из каталога и указывает необходимую информацию о себе. Обычно такую схему можно встретить в магазинах цифровых товаров. Так или иначе, мы не будем сейчас обсуждать описанные подходы и методы. Этой теме посвящена не одна книга по программированию и юзабилити. Однако, для того чтобы демонстрировать подключение сайта к Мерчанту на конкретном примере, условимся о задаче, которая перед нами стоит. Пусть, нам требуется продавать покупателям некие электронные товары (скажем, коды пополнения мобильных операторов) и выслать их по email после оплаты. Также договоримся для простоты, что покупатель сможет выбирать из каталога и оплачивать за раз только один товар т.е. без формирования "корзины покупок". Очевидно, что у нас в базе данных должна быть таблица с характеристиками товаров: Покупатель выбирает товар из каталога, и попадает в точку А . Эта страница на вашем сайте (назовем ее order.php) должна содержать такую html-форму: <form method="POST" action="https://merchant.webmoney.ru/lmi/payment.asp"> <input type="hidden" name="LMI_PAYMENT_AMOUNT" value="0.05"> <input type="hidden" name="LMI_PAYMENT_DESC" value="код пополнения Super Mobile"> <input type="hidden" name="LMI_PAYEE_PURSE" value="Z155771820786"> <input type="hidden" name="id" value="345"> Укажите email для отправки товара: <input type="text" name="email" size="15"> <input type="submit" value="Перейти к оплате"> </form> Будем называть это формой заказа платежа . action - Атрибут action должен отправлять на https://merchant.webmoney.ru/lmi/payment.asp. method - Должен использоваться метод посыла формы POST. LMI_PAYMENT_AMOUNT - Поле, которое содержит сумму платежа. Дробная часть отделяется точкой. В нашем примере значение =0.05. LMI_PAYMENT_DESC (или LMI_PAYMENT_DESC_BASE64) - Поле, которое содержит примечание платежа. Должно содержать текст, желательно - наименование товара или услуги, которая продается. Максимальная длина - 255 символов. В нашем примере значение ="код пополнения Super Mobile". LMI_PAYEE_PURSE - Ваш кошелек, только что подключенный к Мерчанту (см. главу ). Должен состоять из буквы (Z-, R- и т.д.) и 12 цифр. По значению этого поля Мерчант распознает, в пользу какого продавца (иначе говоря, на чей кошелек) производится платеж. В нашем примере ="Z155771820786". Обращаю ваше внимание, что поля , , должны называться именно так, и никак иначе. При этом поля являются обязательными. Если в LMI_PAYMENT_DESC есть кириллические символы, то они должны быть представлены в кодировке Win1251. Если это по каким-то причинам невозможно, и ваша строка представлена в кодировке UTF8, то вместо LMI_PAYMENT_DESC нужно использовать параметр LMI_PAYMENT_DESC_BASE64. В нём нужно передать вашу UTF8-строку, предварительно закодированную в base64: <input type="hidden" name="LMI_PAYMENT_DESC_BASE64" value="<?php echo base64_encode("здесь ваше примечание платежа в кодировке UTF8");?>"> В той же форме можно передавать и свои произвольные параметры, если это необходимо. При чем, названы эти параметры могут быть как угодно, главное, чтобы они не начинались с префикса LMI_! ). В нашем примере мы добавили в форму: Поле id - содержит id выбранного покупателем товара. Берется из таблицы . Поле email - покупатель указывает здесь свой email, на который он получит товар после оплаты. После нажатия на кнопку покупатель попадает на https://merchant.webmoney.ru/lmi/payment.asp, то есть переходит на сайт Мерчанта. Одновременно с этим сайту Мерчанта, естественно, передаются и все параметры нашей формы. Прохождение платежа. Первое, что видит покупатель, попав на сайт сервиса Мерчант: Здесь видно сумму будущего платежа, кошелек и WMID продавца, торговое имя (помните, мы заполняли его, когда подключали кошелек в главе ?) и содержимое (название товара или услуги). Нажав кнопку [Оплатить], покупатель попадает на следующую страницу: Здесь он выбирает способ оплаты - с Keeper Classic, Light, кошелька в системе Telepat, WM-карты, либо выбирает авторизацию с помощью сервиса .