• XSS.stack #1 – первый литературный журнал от юзеров форума

WMSigner

Isis

RAID-массив
Пользователь
Регистрация
09.11.2006
Сообщения
97
Реакции
0
Тут вот хотел сделать себе 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."


";

	$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
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А что wmxi уже не акуален? Возвращаемся в каменный век? :)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх