Статья о платежной системе WebMoney. Рассмотрим только html форму и обработку запроса от сервера. Это можно использовать, например, для пополнения счета или оплату товара на сайте.
HTML форма располагается у вас на сайте и служит переходом с вашего сайта на сайт платежной системы. Передает ей все необходимые данные через POST запрос.
Код формы:
LMI_PAYEE_PURSE - Ваш кошелек, на него будет происходить оплата (буква - инициал кошелька и 12 цифр)
LMI_PAYMENT_NO - ID платежа в вашей системе. Будет использован для поиска нужного платежа в вашей БД
LMI_PAYMENT_AMOUNT - Сумма оплаты в валюте указанного кошелька (R кошелек - рубли, Z - доллары и т.д.)
LMI_PAYMENT_DESC - Описание платежа. Его увидит пользователь после перехода на оплату
user_field_1 - Дополнительное поле (не обязательное). Можно использовать для передачи дополнительных данных на ваш файл обработки
Так-же существует альтернативное поле LMI_PAYMENT_DESC_BASE64. Используется вместо обычного LMI_PAYMENT_DESC. Содержит в себе описание платежа закодированное в base64. Это решит проблему с кодировкой описания, если она возникает.
Настроить аккаунт можно по адресу: https://merchant.webmoney.ru/conf/purses.asp (официальный сайт WebMoney)
Настроить нужно все кошельки, которые вы собираетесь использовать (ссылка "настроить" рядом с каждым кошельком)
Поля, которые необходимо настроить:
Тестовый/Рабочий режимы - выкл - не принимает платежи, тестовый - отправляет запрос, но не отправляет средства, рабочий - все включено (он нам и нужен)
Торговое имя - название вашего сайта, его будут видеть пользователи во время оплаты
Secret Key - секретный ключ. Введите сюда какой-нибудь пароль и сохраните его в БД вашего сайта, он еще пригодится (НЕ отмечайте галочку рядом с этим полем)
Result URL - ссылка на файл обработки операции. Описание содержания этого файла смотрите в пункте "Обработка запроса" этой статьи (галочку рядом с этим полем отмечайте по желанию, она включает предзапрос)
Success URL - Ссылка на страницу успешной оплаты (Вернуться на ваш сайт после оплаты)
Fail URL - Ссылка на страницу ошибки или отказа от оплаты (Вернуться на ваш сайт после неудачной оплаты)
Метод формирования контрольной подписи - Выберите MD5
Остальные поля изменяйте по желанию или необходимости. На работу кодов, указанных в статье они влиять не будут.
После оплаты платежная система присылает запрос на указанный вами Result URL. В этом файле, в первую очередь, необходимо проверить подлинность запроса, ведь он мог быть запущен не платежной системой. После чего уже делаем нужны операции: изменение статуса платежа в вашей БД или пополнение счета пользователя на сайте. Начнем по порядку.
Система присылает следующие данные (сразу сократим названия переменных, зачем нам в коде длинные переменные?):
LMI_PAYMENT_NO, LMI_PAYEE_PURSE, LMI_PAYMENT_AMOUNT, user_field_1 - эти поля уже описаны выше. Система просто присылает указанные вами данные обратно.
LMI_MODE - 1 - тестовый платеж (средства не отправляются), 0 - реальный платеж
LMI_PAYER_PURSE - Кошелек плательщика. С этого кошелька пользователь оплатил эту транзакцию.
LMI_PAYER_WM - WMID плательщика.
LMI_PREREQUEST - Предзапрос или нет. Если предзапрос - нижние 4 поля не присылаются. Предзапрос предназначен для проверки работоспособности вашего сайта перед реальным запросом. Не производите никаких действий , кроме проверок, во время предзапроса.
LMI_SYS_INVS_NO - ID счета
LMI_SYS_TRANS_NO - ID платежа в платежной системе
LMI_SYS_TRANS_DATE - Дата платежа
LMI_HASH - MD5 хеш. Используется для проверки подлинности запроса.
Теперь нужно проверить хеш. Это обязательное действие. Без него безопасность данной операции будет близка к нулю.
Создадим свой вариант хеша, по возможности используя данные из своей БД (постфикс _bd в переменных; используйте $id для поиска нужной транзакции):
Заметили переменную $key, которая ранее нигде не фигурировала? Это секретный ключ, который вы вводили в настройках аккаунта. Система не присылает его, поэтому он должен храниться у вас в БД
С проверками закончили. Теперь можно сделать то, ради чего этот запрос пришел - изменить статус транзакции или пополнить счет пользователя, на ваше усмотрение. И эти действия я описывать не буду - все в ваших руках. Только не забудьте не производить этих действий, если это предзапрос ($pre).
Осталось только вернуть системе правильный ответ. Тут все просто. Если обработка успешно завершена - отвечаем YES, а если нет - любой другой текст, он будет воспринят как ошибка и показан пользователю. Такой ответ актуален и для предзапроса тоже.
Пример правильного ответа:
Вот и все, запрос завершен и эта статья тоже.
HTML форма
HTML форма располагается у вас на сайте и служит переходом с вашего сайта на сайт платежной системы. Передает ей все необходимые данные через POST запрос.
Код формы:
LMI_PAYEE_PURSE - Ваш кошелек, на него будет происходить оплата (буква - инициал кошелька и 12 цифр)
LMI_PAYMENT_NO - ID платежа в вашей системе. Будет использован для поиска нужного платежа в вашей БД
LMI_PAYMENT_AMOUNT - Сумма оплаты в валюте указанного кошелька (R кошелек - рубли, Z - доллары и т.д.)
LMI_PAYMENT_DESC - Описание платежа. Его увидит пользователь после перехода на оплату
user_field_1 - Дополнительное поле (не обязательное). Можно использовать для передачи дополнительных данных на ваш файл обработки
Так-же существует альтернативное поле LMI_PAYMENT_DESC_BASE64. Используется вместо обычного LMI_PAYMENT_DESC. Содержит в себе описание платежа закодированное в base64. Это решит проблему с кодировкой описания, если она возникает.
Настройка аккаунта
Настроить аккаунт можно по адресу: https://merchant.webmoney.ru/conf/purses.asp (официальный сайт WebMoney)
Настроить нужно все кошельки, которые вы собираетесь использовать (ссылка "настроить" рядом с каждым кошельком)
Поля, которые необходимо настроить:
Тестовый/Рабочий режимы - выкл - не принимает платежи, тестовый - отправляет запрос, но не отправляет средства, рабочий - все включено (он нам и нужен)
Торговое имя - название вашего сайта, его будут видеть пользователи во время оплаты
Secret Key - секретный ключ. Введите сюда какой-нибудь пароль и сохраните его в БД вашего сайта, он еще пригодится (НЕ отмечайте галочку рядом с этим полем)
Result URL - ссылка на файл обработки операции. Описание содержания этого файла смотрите в пункте "Обработка запроса" этой статьи (галочку рядом с этим полем отмечайте по желанию, она включает предзапрос)
Success URL - Ссылка на страницу успешной оплаты (Вернуться на ваш сайт после оплаты)
Fail URL - Ссылка на страницу ошибки или отказа от оплаты (Вернуться на ваш сайт после неудачной оплаты)
Метод формирования контрольной подписи - Выберите MD5
Остальные поля изменяйте по желанию или необходимости. На работу кодов, указанных в статье они влиять не будут.
Обработка запроса
После оплаты платежная система присылает запрос на указанный вами Result URL. В этом файле, в первую очередь, необходимо проверить подлинность запроса, ведь он мог быть запущен не платежной системой. После чего уже делаем нужны операции: изменение статуса платежа в вашей БД или пополнение счета пользователя на сайте. Начнем по порядку.
Система присылает следующие данные (сразу сократим названия переменных, зачем нам в коде длинные переменные?):
$id =trim($_POST['LMI_PAYMENT_NO']); $pmode =trim($_POST['LMI_MODE']); $payee =trim($_POST['LMI_PAYEE_PURSE']); $payer =trim($_POST['LMI_PAYER_PURSE']); $payerwm =trim($_POST['LMI_PAYER_WM']); $amount =trim($_POST['LMI_PAYMENT_AMOUNT']); $pre =trim($_POST['LMI_PREREQUEST']); $usr =trim($_POST['user_field_1']); $invs =trim($_POST['LMI_SYS_INVS_NO']); $trans =trim($_POST['LMI_SYS_TRANS_NO']); $tdate =trim($_POST['LMI_SYS_TRANS_DATE']); $md5str =strtoupper(trim($_POST['LMI_HASH']));
LMI_PAYMENT_NO, LMI_PAYEE_PURSE, LMI_PAYMENT_AMOUNT, user_field_1 - эти поля уже описаны выше. Система просто присылает указанные вами данные обратно.
LMI_MODE - 1 - тестовый платеж (средства не отправляются), 0 - реальный платеж
LMI_PAYER_PURSE - Кошелек плательщика. С этого кошелька пользователь оплатил эту транзакцию.
LMI_PAYER_WM - WMID плательщика.
LMI_PREREQUEST - Предзапрос или нет. Если предзапрос - нижние 4 поля не присылаются. Предзапрос предназначен для проверки работоспособности вашего сайта перед реальным запросом. Не производите никаких действий , кроме проверок, во время предзапроса.
LMI_SYS_INVS_NO - ID счета
LMI_SYS_TRANS_NO - ID платежа в платежной системе
LMI_SYS_TRANS_DATE - Дата платежа
LMI_HASH - MD5 хеш. Используется для проверки подлинности запроса.
Теперь нужно проверить хеш. Это обязательное действие. Без него безопасность данной операции будет близка к нулю.
Создадим свой вариант хеша, по возможности используя данные из своей БД (постфикс _bd в переменных; используйте $id для поиска нужной транзакции):
$md5string = strtoupper(md5($purse_bd.$amount_bd.$id.$pmode.$invs.$trans.$tdate.$key.$payer.$payerwm)); if($md5string!=$md5str) // ошибка
Заметили переменную $key, которая ранее нигде не фигурировала? Это секретный ключ, который вы вводили в настройках аккаунта. Система не присылает его, поэтому он должен храниться у вас в БД
С проверками закончили. Теперь можно сделать то, ради чего этот запрос пришел - изменить статус транзакции или пополнить счет пользователя, на ваше усмотрение. И эти действия я описывать не буду - все в ваших руках. Только не забудьте не производить этих действий, если это предзапрос ($pre).
Осталось только вернуть системе правильный ответ. Тут все просто. Если обработка успешно завершена - отвечаем YES, а если нет - любой другой текст, он будет воспринят как ошибка и показан пользователю. Такой ответ актуален и для предзапроса тоже.
Пример правильного ответа:
exit('YES');
Вот и все, запрос завершен и эта статья тоже.
Комментариев нет:
Отправить комментарий