Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

19.12.2007, 21:22
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
WMSigner PHP
Тут вот хотел сделать себе WMSigner, а он только на C++ и .Net есть...
На 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."<br/><br/><br/>";
$SignStr = GetSign($PlanStr);
print "Цифровая подпись (возвращена WMSigner'ом): ".$SignStr."<br><br><br>";
$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 запрос к системе:<br/>".$url."<br/><br/><br/>";
?>
convert.php
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
Последний раз редактировалось Isis; 01.02.2008 в 07:10..
|
|
|

01.02.2008, 07:12
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Обновление.....все через 1 функцию..безопасное хранение пароля
|
|
|

27.02.2008, 05:13
|
|
Новичок
Регистрация: 24.10.2007
Сообщений: 2
Провел на форуме: 3878
Репутация:
10
|
|
Сообщение от Isis
На PHP тоже есть, но им уже больше года...не фурычат..
Что значит больше года и не фурычат?
Вообще последнее обновление было как раз за две недели до твоего поста и ПХП версия отлично "фурычит".
Может быть не там и не то искали? 
http://my-tools.net/wmxi/
|
|
|

27.02.2008, 07:30
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Хм, допустим...
Посмотри сколько файлов требует их скрипт и сколько строк мой
+ в моем скрипте посл.апдейта не надо пихать файлы кипера на сервак...
Так что хек
|
|
|

27.02.2008, 11:45
|
|
Новичок
Регистрация: 24.10.2007
Сообщений: 2
Провел на форуме: 3878
Репутация:
10
|
|
Сообщение от Isis
Хм, допустим...
Посмотри сколько файлов требует их скрипт и сколько строк мой
+ в моем скрипте посл.апдейта не надо пихать файлы кипера на сервак...
Так что хек
Все аргументы притянуты за уши  )
Количество файлов - не проблема пересобрать в один файл.
Файлы на сервак - ключ точно так же легко помещается в переменную. Достаточно было изучить функцию инициализации класса
Но есть существенное преимущество:
модуль Сигнера реализован на пхп, а это не требует компиляции и запуска бинарника на сервере, из-за чего либа может работать даже в сейфмоде и с кучей прочих жёстких ограничений.
есть только неудобное требование - необходим bcmath, не всегда всюду устанавливаемый.
а так же вроде бы ещё не до конца отловлены ньюансы с 64-разряными платформами (в частноти правильнось мд4 хэшей).
|
|
|

27.02.2008, 14:58
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Но все мой мой скрипт работает
За знания ловите плюс )
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|