Пятница, 29.03.2024, 00:19
Приветствую Вас, Гость

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Тестовый раздел » Полезные программы » скрипт для приема WM на сайте (прием денег через свой сайт)
скрипт для приема WM на сайте
azi Дата: Суббота, 02.01.2010, 02:13 | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 71
Репутация: 4
Статус: Offline
Всю подробную информацию Вы можете найти на сайте www.webmoney.ru и www.merchant.webmoney.ru.

Внимание, если Вы не имеете ПЕРСОНАЛЬНОГО АТТЕСТАТА то Вы не сможете принимать webmoney за товар или услуги от пользователей посредством сервиса Web Merchant Interface.

Модуль оплаты можно написать почти на любом языке програмирования, также не помешало-бы знать чуть html.

Основные термины:

ПРОДАВЕЦ

Продавцом считается участник WebMoney Transfer, принимающий на свой WM-кошелек оплату от других участников системы с помощью сервиса Web Merchant Interface.
Предполагается, что продавец принимает оплату за товары или услуги, предоставляемые им через Интернет, и следовательно, имеет собственный веб-сайт.

ПОКУПАТЕЛЬ

Покупателем считается участник WebMoney Transfer, желающий оплачивать услуги или товары, предлагаемые продавцом через Интернет.

Для передачи информации между веб-сайтом ПРОДАВЦА и сервисом Web Merchant Interface используютcя пять основных HTML-формы:

Форма запроса платежа - генерируется веб-сайтом продавца для формирования запроса на проведение платежа в сервисе Web Merchant Interface и передачи его через веб-браузер покупателя.
Форма предварительного запроса - генерируется сервисом Web Merchant Interface для передачи параметров предварительного запроса на выполнение платежа на веб-сайт продавца, если установлен флаг Передавать параметры в предварительном запросе. Если флаг не установлен - не используется (запрос выполняется без параметров). Запрос передается без использования веб-браузера покупателя.
Форма оповещения о платеже - генерируется сервисом Web Merchant Interface для передачи оповещения о платеже на веб-сайт продавца. Оповещение передается без использования веб-браузера покупателя.
Форма выполненного платежа - генерируется сервисом Web Merchant Interface в случае успешного выполнения платежа и передается на веб-сайт продавца через веб-браузер покупателя.
Форма невыполненного платежа - генерируется сервисом Web Merchant Interface в случае невыполнения платежа и передается на веб-сайт продавца через веб-браузер покупателя.

Итак, поподробнее, ПРОДАВЕЦ генерирует или показывает ПОКУПАТЕЛЮ, уже заранее готовую форму с ссылкой(Форма запроса платежа). ПОКУПАТЕЛЬ кликает по ссылке и его перебрасывает на сайт Мерчанта, Мерчант проверяет все данные ПОКУПАТЕЛЯ, ну там к примеру просит загрузить кипер вэбмани, проверяет есть-ли в наличии у него эта сумма и т. д. Затем Мерчант делает запрос на сайт продавца(Форма предварительного запроса), тут лучше проверить параметры с которыми Мерчант сделал запрос. Далее после того как проверили все параметры, возвращаем yes, если что-то пошло не так, то возвращаем что-то другое, например код ошибки, и это Мерчант покажет ПОКУПАТЕЛЮ и соответственно платеж не пройдет. После того как Мерчант получил yes, он забирает дензнаки у ПОКУПАТЕЛЯ и передает их ПРОДАВЦУ, соответственно уведомляя об этом ПРОДАВЦА(Форма оповещения о платеже). Ну и самое несложное, это Форма выполненного платежа и Форма невыполненного платежа, там тоже передаются параметры но это уже не суть важно, процесс завершился, можно просто создать две html-страницы ok.html и bad.html с соответствующей переадресацией на главную страницу сайта.

 
azi Дата: Суббота, 02.01.2010, 02:15 | Сообщение # 2
Admin
Группа: Администраторы
Сообщений: 71
Репутация: 4
Статус: Offline
Вот Форма предварительного запроса. Параметр <Result URL> выставляется в настройках кошелька, на сайте Мерчанта, но об этом позже.

Код

<html>
<head>
...
</head>
<body>
...
<form method="POST" action="<Result URL>">
<input type="hidden" name="LMI_PREREQUEST" value="1">
<input type="hidden" name="LMI_PAYMENT_AMOUNT" value="1.0">
<input type="hidden" name="LMI_PAYMENT_NO" value="1">
<input type="hidden" name="LMI_PAYEE_PURSE" value="R222211112222">
<input type="hidden" name="LMI_MODE" value="1">
<input type="hidden" name="LMI_PAYER_WM" value="111122221111">
<input type="hidden" name="LMI_PAYER_PURSE" value="R111122221111">
<input type="hidden" name="FIELD_1" value="VALUE_1">
<input type="hidden" name="FIELD_2" value="VALUE_2"> ...
</form>
..
</body>
</html>

LMI_PREREQUEST Индикатор предварительного запроса, выставлен в 1. По нему мы узнаем что это предварительный запрос.
LMI_PAYMENT_AMOUNT Сумма платежа, которую продавец желает получить от покупателя. Сумма должна быть больше нуля, дробная часть отделяется точкой.
LMI_PAYMENT_NO В этом поле продавец задает номер покупки в соответствии со своей системой учета.
LMI_PAYEE_PURSE Кошелек продавца, на который покупатель должен совершить платеж. Формат - буква и 12 цифр.
LMI_MODE Флаг тестового режима, если в 0, Платеж выполнялся в реальном режиме, средства переведены с кошелька покупателя на кошелек продавца, если в 1, платеж выполнялся в тестовом режиме, средства реально не переводились.
LMI_PAYER_WM WM-идентификатор покупателя, совершаюшего платеж.
LMI_PAYER_PURSE WM-кошелек покупателя, совершаюшего платеж.

Об остальных полях читайте на сайте www.merchant.webmoney.ru

Тут мы должны проверить все параметры и если все правильно, выдать ответ YES Мерчанту. Вот код файла result.pl:

Код

#!/usr/bin/perl -w
use strict;
use CGI::Carp 'fatalsToBrowser';
use CGI::Session;
use CGI qw(:standard);
my $cgi = new CGI;
my $PREREQUEST = '1';
my $PURSE = "Z745542043205";
my $PAYMENT = '1.0';
my $MODE = '0';

sub get_pay{
my $LMI_PREREQUEST = $cgi -> param('LMI_PREREQUEST');
my $LMI_PAYEE_PURSE = $cgi -> param('LMI_PAYEE_PURSE');
my $LMI_PAYMENT_AMOUNT = $cgi -> param('LMI_PAYMENT_AMOUNT');
my $LMI_MODE = $cgi -> param('LMI_MODE');
my $LMI_PAYER_WM = $cgi -> param('LMI_PAYER_WM');
my $sid = $cgi -> param('sid');

if($PURSE ne $LMI_PAYEE_PURSE){

print "PURSE IS NOT GOOD!!!";
exit();

}

if($PAYMENT ne $LMI_PAYMENT_AMOUNT){

print "SUMM IS NOT GOOD!!!";
exit();
}

if((!$MODE) && (!$LMI_MODE)){

}else{
print "TEST MODE!!!";
exit();
}
my $sess_ID = new CGI::Session("driver:File", "$sid", {Directory=>'tmp/'}) || die;
$sess_ID -> param("pay","1");
$sess_ID -> param("LMI_PREREQUEST","$LMI_PREREQUEST");
$sess_ID -> param("LMI_PAYEE_PURSE","$LMI_PAYEE_PURSE");
$sess_ID -> param("LMI_PAYMENT_AMOUNT","$LMI_PAYMENT_AMOUNT");
$sess_ID -> param("LMI_MODE","$LMI_MODE");
$sess_ID -> param("WMID","$LMI_PAYER_WM");
$sess_ID -> close();
if($PREREQUEST && $LMI_PREREQUEST){
print "YES"; # это ответ на предварительный запрос
}else{
# тут дописать, что делать если были изменены параметры платежки
} # я тут уже не проверял, системе можно доверять, тады if else убрать
}

print $cgi->header(-charset => 'Windows-1251');

get_pay();
exit();

 
azi Дата: Суббота, 02.01.2010, 02:15 | Сообщение # 3
Admin
Группа: Администраторы
Сообщений: 71
Репутация: 4
Статус: Offline
Ну вот в принципе и все, осталось только настроить свой кошелек, идем на www.merchant.webmoney.ru логинимся в систему, и настраиваем тот кошелёк на который вы хотели принимать платежи.

Торговое имя: этот текст будет отображаться при оплате, можно ввести название организации.
Secret Key: здесь можно ввести пароль, да позаковыристие, этот параметр знает только Мерчант и Вы, можно использовать при проверке параметров запроса.
Result URL: тут вставляем путь к нашему скрипту например http://your_site/cgi-bin/result.pl
Передавать параметры в предварительном запросе: ставим в этом чекбоксе галочку.
Succsess URL: тут вставляем путь к странице ok.html например http://your_site/ok.html в самой странице пишем что все о-кей и переадресуем ПОКУПАТЕЛЯ.
Метод вызова Succsess URL: выставляем LINK.
Fail URL: тут вставляем путь к странице bad.html например http://your_site/bad.html в самой странице пишем что все плохо и переадресуем ПОКУПАТЕЛЯ.
Метод вызова Fail URL: выставляем LINK.
Высылать оповещение об ошибке платежа на кипер: ставим галочку, на всякий случай.
Метод формирования контрольной подписи: SIGN, хотя это роли не играет, все равно проверку контрольной подписи делать не будете из-за 100 баксов.
Тестовый/Рабочий режимы: пока не настроили прием денюжек лучше оставить Тестовый.
Активность: ВКЛ. Это что-бы уже тестить можно было, иначе работать не будет.
Жмем сохранить.

Те параметры которые я не указал, не трогать, в частности параметр Secret Key и чекбокс напротив, пока не решили использовать его в проверке.

Скрипты: result.pl и payment.pl я исправлял, вырезал заточенное под другой проект и не тестировал после этого, так что возможно, что-то не работает или работает не так, а посему я не несу ответственность за испорченное оборудование или софт, а также за испорченное настроение . В связи с тем что код написан непрофессионально, то можно исправлять и оптимизировать.

В частности:
1. Создать конфигурационный файл в котором хранить все настроики и необходимые переменные.
2. Добавить проверку дополнительных полей формы.
3. Добавить код проверки Secret Key.
4. Добавить проверку контрольной подписи.

Некоторая информация взята с официального сайта: www.webmoney.ru

 
Форум » Тестовый раздел » Полезные программы » скрипт для приема WM на сайте (прием денег через свой сайт)
  • Страница 1 из 1
  • 1
Поиск: