Тут вот хотел сделать себе WMSigner, а он только на C++ и .Net есть...
На PHP тоже есть, но им уже больше года...не фурычат..
WMSigner можно сделать по статье: http://www.opennet.ru/base/dev/webmoney_pay.txt.html
Нету перла?
Переписал перл скрипт на PHP определение SignStr...:
convert.php
Вообщем переписал и увидел ошибку...
Пошел в гугль и увидел что WMSigner с недавнего времени сделали с минимальным персональным аттестатом...
Мда
Обновление 1.02.2008
На PHP тоже есть, но им уже больше года...не фурычат..
WMSigner можно сделать по статье: http://www.opennet.ru/base/dev/webmoney_pay.txt.html
Нету перла?
Переписал перл скрипт на PHP определение SignStr...:
Код:
[php]
<?php
$path = "/home/www/wm/";
$sign = "/home/www/wm/wmsigner";
$wmid = ""; #wmid
$kwy = "": #key for wmid
$base64 = ""; #base64 вашего ключа kwm..Чтобы узнать его запустите скрипт convert.php и запишите выведенные символы в эту строку...
function space($str, $len)
{
$sum = $len - strlen($str);
$hwost = '';
for ($i = 0; $i < $sum; $i++)
{
$hwost = $hwost.'0';
}
$string = $hwost.$str;
return $string;
}
function GetSign($inStr)
{
global $path, $sign, $key, $wmid, $base64;
chdir($path);
$desc = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("pipe", "r") );
$process = proc_open($sign." -w ".$wmid." -p ".$key." -K64 ".$base64, $desc, $ech);
fwrite($ech[0], "$inStr\004\r\n");
fclose($ech[0]);
$SignStr = fgets($ech[1], 133);
fclose($ech[1]);
$return_value = proc_close($process);
return $SignStr;
}
$OrderID = '999'; # номер счета на Вашем сайте
$PurseOfStores ='Z348176092735'; # кошелек сайта
$LoginOfStores = '521142404582'; # WMID сайта
$LoginOfCust = ''; # WMID покупателя, зададим как константу
$InvAddress = 'INVADDRESS'; # адрес, после оплаты юзер придет сюда..
$Amount = '10'; #сумма счета, которую должен оплатить покупатель
$Desc = 'DESC'; # описание
$Period = '0'; #Срок протекции сделки
$Experation = '3'; #Срок действия счета - 3 дня
list($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
$request = (1900 + $year).space($mon, 2);
$request .= space($mday, 2).space($hour, 2);
$request .= space($min, 2).space($sec, 2).space($sec, 2);
$PlanStr = $OrderID.$LoginOfCust.$PurseOfStores.$Amount;
$PlanStr .= $Desc.$InvAddress.$Period.$Experation.$request;
echo "Строка подписи \$PlanStr: ".$PlanStr."
";
$SignStr = GetSign($PlanStr);
print "Цифровая подпись (возвращена WMSigner'ом): ".$SignStr."
";
$url = "https://w3s.webmoney.ru/asp/Invoice.asp?SL=".$LoginOfStores."&";
$url .= "SP=".$PurseOfStores."&CL=".$LoginOfCust."&IN=".$OrderID."&D=".$Desc."&";
$url .= "AD=".$InvAddress."&A=".$Amount."&E=".$Experation."&P=".$Period."&";
$url .= "RN=".$request."&SS=".$SignStr;
echo "HTTPS запрос к системе:
".$url."
";
?>
convert.php
Код:
<?php
$fn = "key.kwm"; #.kwm key file from your wmid
$handle = fopen($fn,"r");
$contents = fread($handle, filesize($fn));
fclose($handle);
echo base64_encode($contents);
?>
Вообщем переписал и увидел ошибку...
Пошел в гугль и увидел что WMSigner с недавнего времени сделали с минимальным персональным аттестатом...
Мда
Обновление 1.02.2008