Vse o BUX

Объявление

Если вам помогли на форуме, помогите и вы нам.

Разместите здесь свой баннер всего за 1 wmr в сутки.



Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Vse o BUX » SoooFast » Подключение Интерфейсов


Подключение Интерфейсов

Сообщений 21 страница 30 из 68

21

ФУНКЦИИ ДЛЯ РАБОТЫ С XML ИНТЕРФЕЙСАМИ WEBMONEY

Информация взята с сайта http://owebmoney.ru/download/
// ФУНКЦИИ ДЛЯ РАБОТЫ С XML ИНТЕРФЕЙСАМИ WEBMONEY
// Описания:
// - http://owebmoney.ru/xml1.shtml
// - http://owebmoney.ru/xml2.shtml
// - http://owebmoney.ru/articles/xml3.shtml
// - http://owebmoney.ru/articles/robots.shtml
// Последнее обновление - 7.08.09
// Для работы этих функций необходимы библиотеки PHP: simplexml, iconv, curl
// (c) Никита Сенченко, owebmoney.ru

БЛОК КОНСТАНТ

Код:
$Global_WMID="XXXXXXXXXXX";  // Ваш WMID
$Path_Folder = "/home/site.ru/data/signer/"; // Путь к директории, в которой лежит .kwm
$Path_Signer = "/home/site.ru/data/signer/wmsigner"; // Путь к WMSigner
$XML_addr[1]="https://w3s.webmoney.ru/asp/XMLInvoice.asp";
$XML_addr[2]="https://w3s.webmoney.ru/asp/XMLTrans.asp";
$XML_addr[3]="https://w3s.webmoney.ru/asp/XMLOperations.asp";
$XML_addr[4]="https://w3s.webmoney.ru/asp/XMLOutInvoices.asp";
$XML_addr[5]="https://w3s.webmoney.ru/asp/XMLFinishProtect.asp";
$XML_addr[6]="https://w3s.webmoney.ru/asp/XMLSendMsg.asp";
$XML_addr[7]="https://w3s.webmoney.ru/asp/XMLClassicAuth.asp";
$XML_addr[8]="https://w3s.webmoney.ru/asp/XMLFindWMPurse.asp";
$XML_addr[9]="https://w3s.webmoney.ru/asp/XMLPurses.asp";
$XML_addr[10]="https://w3s.webmoney.ru/asp/XMLInInvoices.asp";
$XML_addr[11]="https://passport.webmoney.ru/asp/XMLGetWMPassport.asp";
$XML_addr[13]="https://w3s.webmoney.ru/asp/XMLRejectProtect.asp";
$XML_addr[14]="https://w3s.webmoney.ru/asp/XMLTransMoneyback.asp";
$XML_addr[151]="https://w3s.webmoney.ru/asp/XMLTrustList.asp";
$XML_addr[152]="https://w3s.webmoney.ru/asp/XMLTrustList2.asp";
$XML_addr[153]="https://w3s.webmoney.ru/asp/XMLTrustSave2.asp";
$XML_addr[16]="https://w3s.webmoney.ru/asp/XMLCreatePurse.asp";
$XML_addr[171]="https://arbitrage.webmoney.ru/xml/X17_CreateContract.aspx";
$XML_addr[172]="https://arbitrage.webmoney.ru/xml/X17_GetContractInfo.aspx";
$XML_addr[18]="https://merchant.webmoney.ru/conf/xml/XMLTransGet.asp";

ФУНКЦИЯ ФОРМИРУЕТ УНИКАЛЬНЫЙ УВЕЛИЧИВАЮЩИЙСЯ REQN

Код:
function _GetReqn(){
    $time=microtime();
    $int=substr($time,11);
    $flo=substr($time,2,5);
    return $int.$flo;
};


ФУНКЦИЯ ФОРМИРОВАНИЯ ПОДПИСИ

Код:
// На входе: строка для подписи. На выходе: строка с результатом подписывания
function _GetSign($inStr) { 
	global $Path_Folder, $Path_Signer;
//	chdir($Path_Folder);
	$descriptorspec = array(
	0 => array("pipe", "r"),
	1 => array("pipe", "w"),
	2 => array("pipe", "r") );
	$process = proc_open($Path_Signer, $descriptorspec, $pipes);
	fwrite($pipes[0], "$inStr\004\r\n");
	fclose($pipes[0]);
	$s = fgets($pipes[1], 133);
	fclose($pipes[1]);
	$return_value = proc_close($process);
	return $s;
}

АЛЬТЕРНАТИВНАЯ ФУНКЦИЯ ПОДПИСИ ДЛЯ PHP НИЖЕ 4.3.0

Код:
// На входе: строка для подписи. На выходе: строка с результатом подписывания
function _GetSign2($inStr){
	global $Path_Folder, $Path_Signer;
	chdir($Path_Folder);
	$PlanStr = "$inStr\004\r\n";
	$fp = popen($Path_Signer, "r+");
	fwrite($fp,$PlanStr);
	$s = fgets($fp, 133);
	pclose($fp);
	return $s;
}

ОТПРАВКА POST-ЗАПРОСА ЧЕРЕЗ CURL

Код:
// На входе: URL для отправки и содержимое XML-запроса. На выходе: XML-ответ от WebMoney
function _GetAnswer($address, $xml){
	// Инициализируем сеанс CURL
	$ch = curl_init($address);
	// В выводе CURL http-заголовки не нужны
	curl_setopt($ch, CURLOPT_HEADER, 0);
	// Возвращать результат, а не выводить его в браузер
	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
	// Метод http-запроса - POST
	curl_setopt($ch, CURLOPT_POST,1);
	// Что передаем?
	curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
	// Путь к корневому сертификату
	if($address=="https://passport.webmoney.ru/asp/XMLGetWMPassport.asp")
    curl_setopt($ch, CURLOPT_CAINFO, "/home/site.ru/data/certs/ns.cer"); // для X11
	elseif($address=="https://merchant.webmoney.ru/conf/xml/XMLTransGet.asp");
    curl_setopt($ch, CURLOPT_CAINFO, "/home/site.ru/data/certs/verisign.cer"); // для X18
	else
    curl_setopt($ch, CURLOPT_CAINFO, "/home/site.ru/data/certs/WebMoneyCA.cer"); // для всех остальных
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
	// Выполняем запрос, ответ помещаем в переменную $result;
	$result=curl_exec($ch);
	return $result;
}

ИНТЕРФЕЙС X1. ВЫПИСКА СЧЕТА.

Код:
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'date'=>дата и время, 'wminvid'=>уникальный номер счета]
function _WMXML1 ($orderid,$wmid,$purse,$amount,$desc,$address,$period,$expiration) {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$desc=trim($desc); $address=trim($address); $amount=floatval($amount);
	$rsign=_GetSign($orderid.$wmid.$purse.$amount.$desc.$address.$period.$expiration.$reqn);
	$address=htmlspecialchars($address, ENT_QUOTES);
	$desc=htmlspecialchars($desc, ENT_QUOTES);
	$address=iconv("CP1251", "UTF-8", $address);
	$desc=iconv("CP1251", "UTF-8", $desc);
	$xml="
	<w3s.request>
    <reqn>$reqn</reqn>
    <wmid>$Global_WMID</wmid>
    <sign>$rsign</sign>
    <invoice>
    	<orderid>$orderid</orderid>
    	<customerwmid>$wmid</customerwmid>
    	<storepurse>$purse</storepurse>
    	<amount>$amount</amount>
    	<desc>$desc</desc>
    	<address>$address</address>
    	<period>$period</period>
    	<expiration>$expiration</expiration>
    </invoice>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[1], $xml);
	//echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	$result['date']=strval($xmlres->invoice->datecrt);
	$result['wminvid']=strval($xmlres->invoice->attributes()->id);
	return $result;
}

ИНТЕРФЕЙС X2. ОТПРАВКА ПЕРЕВОДА.

Код:
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата, 'date'=>дата и время]
function _WMXML2 ($tranid,$purse,$rpurse,$amount,$period,$pcode,$desc,$wminvid) {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$desc=trim($desc); $pcode=trim($pcode); $amount=floatval($amount);
	$rsign=_GetSign($reqn.$tranid.$purse.$rpurse.$amount.$period.$pcode.$desc.$wminvid);
	$pcode=htmlspecialchars($pcode, ENT_QUOTES);
	$desc=htmlspecialchars($desc, ENT_QUOTES);
	$pcode=iconv("CP1251", "UTF-8", $pcode);
	$desc=iconv("CP1251", "UTF-8", $desc);
	$xml="
	<w3s.request>
    <reqn>$reqn</reqn>
    <wmid>$Global_WMID</wmid>
    <sign>$rsign</sign>
    <trans>
    	<tranid>$tranid</tranid>
    	<pursesrc>$purse</pursesrc>
    	<pursedest>$rpurse</pursedest>
    	<amount>$amount</amount>
    	<period>$period</period>
    	<pcode>$pcode</pcode>
    	<desc>$desc</desc>
    	<wminvid>$wminvid</wminvid>
    </trans>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[2], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	$result['date']=strval($xmlres->operation->datecrt);
	return $result;
}

ИНТЕРФЕЙС X3. ПОЛУЧЕНИЕ ИСТОРИИ ОПЕРАЦИЙ.

Код:
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'cnt'=>количество операций в выборке, 'operations'=>массив с операциями]
function _WMXML3 ($purse,$wmtranid,$tranid,$wminvid,$orderid,$datestart,$datefinish) {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$rsign=_GetSign($purse.$reqn);
	$xml="
	<w3s.request>
    <reqn>$reqn</reqn>
    <wmid>$Global_WMID</wmid>
    <sign>$rsign</sign>
    <getoperations>
    	<purse>$purse</purse>
    	<wmtranid>$wmtranid</wmtranid>
    	<tranid>$tranid</tranid>
    	<wminvid>$wminvid</wminvid>
    	<orderid>$orderid</orderid>
    	<datestart>$datestart</datestart>
    	<datefinish>$datefinish</datefinish>
    </getoperations>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[3], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	$result['cnt']=strval($xmlres->operations->attributes()->cnt);
	if($result['cnt']>0) {
    // В элементе $result['operations'] формируем элементы, каждый из которых является
    // массивом с параметрами операции
    foreach ($xmlres->operations->operation as $operation) {
    	// определяем тип операции (входящая, исходящая)
    	// и кошелек корреспондента
    	$pursesrc=strval($operation->pursesrc);
    	$pursedest=strval($operation->pursedest);
    	if($pursesrc==$purse) {
        $type="out"; $corrpurse=$pursedest;
    	} elseif($pursedest==$purse) {
        $type="in"; $corrpurse=$pursesrc;
    	}
    	$result['operations'][strval($operation->attributes()->id)] = Array
        (
        'tranid'=>strval($operation->tranid),
    	 	'wminvid'=>strval($operation->wminvid),
        'orderid'=>strval($operation->orderid),
        'type'=>$type,
        'corrpurse'=>$corrpurse,
        'corrwmid'=>strval($operation->corrwm),
        'amount'=>floatval($operation->amount),
        'comiss'=>floatval($operation->comiss),
        'rest'=>floatval($operation->rest),
        'protection'=>strval($operation->opertype),
        'desc'=>iconv("UTF-8", "CP1251", strval($operation->desc)),
        'datecrt'=>strval($operation->datecrt)
        );
    }
	}
	return $result;
}

ИНТЕРФЕЙС X4. ПРОВЕРКА ВЫПИСАННЫХ СЧЕТОВ.

Код:
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'cnt'=>количество счетов вошедших в выборку, 'invoices'=>массив со счетами]
function _WMXML4 ($purse,$wminvid,$orderid,$datestart,$datefinish) {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$rsign=_GetSign($purse.$reqn);
	$xml="
	<w3s.request>
    <reqn>$reqn</reqn>
    <wmid>$Global_WMID</wmid>
    <sign>$rsign</sign>
    <getoutinvoices>
    	<purse>$purse</purse>
    	<wminvid>$wminvid</wminvid>
    	<orderid>$orderid</orderid>
    	<datestart>$datestart</datestart>
    	<datefinish>$datefinish</datefinish>
    </getoutinvoices>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[4], $xml);
	//echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	$result['cnt']=strval($xmlres->outinvoices->attributes()->cnt);
	if($result['cnt']>0) {
    // В элементе $result['invoices'] формируем массив [номер счета в WM] = состояние оплаты
    foreach ($xmlres->outinvoices->outinvoice as $invoice) {
    	$wminvid=strval($invoice->attributes()->id);
    	$state=strval($invoice->state);
    	$result['invoices'][$wminvid]=$state;
    }
	}
	return $result;
}

ИНТЕРФЕЙС X6. ОТПРАВКА СООБЩЕНИЯ.

Код:
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата, 'date'=>дата и время]
function _WMXML6 ($wmid,$msg,$subj) {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$msg=trim($msg); $subj=trim($subj);
	$msg=str_replace ("\r", "", $msg);
	$rsign=_GetSign($wmid.$reqn.$msg.$subj);
	$msg=htmlspecialchars($msg, ENT_QUOTES);
	$subj=htmlspecialchars($subj, ENT_QUOTES);
	$msg=iconv("CP1251", "UTF-8", $msg);
	$subj=iconv("CP1251", "UTF-8", $subj);
	$xml="
	<w3s.request>
    <reqn>$reqn</reqn>
    <wmid>$Global_WMID</wmid>
    <sign>$rsign</sign>
    <message>
    	<receiverwmid>$wmid</receiverwmid>
    	<msgsubj>$subj</msgsubj>
    	<msgtext>$msg</msgtext>
    </message>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[6], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	$result['date']=strval($xmlres->message->datecrt);
	return $result;
}

ИНТЕРФЕЙС X7. Проверка подписи

Код:
// На входе: WMID, чью подпись нужно проверить; исходная строка; подпись исходной строки
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата, 'res'=>результат проверки (yes\no)]
function _WMXML7 ($wmid,$string,$sign) {
	global $Global_WMID, $XML_addr;
	$rsign=_GetSign($Global_WMID.$wmid.$string.$sign);
	$xml="
	<w3s.request>
    <wmid>$Global_WMID</wmid> 
    <sign>$rsign</sign>
    <testsign>
    	<wmid>$wmid</wmid>
    	<plan><![CDATA[$string]]></plan>
    	<sign>$sign</sign>
    </testsign>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[7], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
    $result['retval']=1000;
    $result['retdesc']="Не получен XML-ответ";
	} else {
    $result['retval']=strval($xmlres->retval);
    $result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
    $result['res']=strval($xmlres->testsign->res);
	}
	return $result;
}

ИНТЕРФЕЙС X8. ОПРЕДЕЛЕНИЕ ПРИНАДЛЕЖНОСТИ КОШЕЛЬКА.

Код:
// На выходе: массив ['wmid'=>wmid, 'purse'=>кошелек, 'retval'=>код выполнения, 'retdesc'=>описание результата]
function _WMXML8 ($wmid,$purse) {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$rsign=_GetSign($wmid.$purse);
	$xml="
	<w3s.request>
    <reqn>$reqn</reqn>
    <wmid>$Global_WMID</wmid>
    <sign>$rsign</sign>
    <testwmpurse>
    	<wmid>$wmid</wmid>
    	<purse>$purse</purse>
    </testwmpurse>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[8], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['wmid']=strval($xmlres->testwmpurse->wmid);
	$result['purse']=strval($xmlres->testwmpurse->purse);
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	return $result;
}

ИНТЕРФЕЙС X9. ПОЛУЧЕНИЕ БАЛАНСОВ

Код:
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'purses'=>массив балансов]
function _WMXML9 () {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$rsign=_GetSign($Global_WMID.$reqn);
	$xml="
	<w3s.request>
    <reqn>$reqn</reqn>
    <wmid>$Global_WMID</wmid>
    <sign>$rsign</sign>
    <getpurses>
    	<wmid>$Global_WMID</wmid>
    </getpurses>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[9], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	if($result['retval']==0 && $result['retval']!==false) {
    // Формируем массив [номер кошелька] = баланс
    foreach ($xmlres->purses->purse as $purse) {
    	$pursename=strval($purse->pursename);
    	$amount=floatval($purse->amount);
    	$result['purses'][$pursename]=$amount;
    }
	}
	return $result;
}

ИНТЕРФЕЙС X11. ПОЛУЧЕНИЕ ИНФОРМАЦИИ ИЗ АТТЕСТАТА.

Код:
// На выходе: массив ['att'=>код аттестата, 'recalled'=>флаг отзыва аттестата, 'retval'=>код выполнения, 'retdesc'=>описание результата]
function _WMXML11 ($wmid) {
	global $XML_addr;
	$xml="
	<request>
    <wmid></wmid>
    <passportwmid>$wmid</passportwmid>        
    <sign></sign>
    <params>
    	<dict>1</dict>
    	<info>1</info>
    	<mode>0</mode>
    </params>
	</request>";
	$resxml=_GetAnswer($XML_addr[11], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['att']=0;
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	if($xmlres->certinfo->attestat->row)
	  $result['att']=strval($xmlres->certinfo->attestat->row->attributes()->tid);
	else {
	  $result['att']=0; 
	  $result['retval']=1001;
	  $result['retdesc']="Информация об аттестате не получена. Возможно, неверно указан WMID.";
	  return $result;
	}
	$result['recalled']=$xmlres->certinfo->attestat->row->attributes()->recalled;
	$result['retval']=strval($xmlres->attributes()->retval);
	return $result;
}

ИНТЕРФЕЙС X14. БЕСКОМИССИОННЫЙ ВОЗВРАТ.

Код:
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата,
// 'date'=>дата и время, 'wmtranid_ret'=>номер транзакции возврата]
function _WMXML14 ($wmtranid,$amount) {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$amount=floatval($amount);
	$rsign=_GetSign($reqn.$wmtranid.$amount);
	$xml="
	<w3s.request>
	    <reqn>$reqn</reqn>
	    <wmid>$Global_WMID</wmid>
	    <sign>$rsign</sign>
	        <trans>
	            <inwmtranid>$wmtranid</inwmtranid>
	            <amount>$amount</amount>
	        </trans>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[14], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	$result['wmtranid_ret']=strval($xmlres->operation->attributes()->id);
	$result['date']=strval($xmlres->operation->datecrt);
	return $result;
}

ИНТЕРФЕЙС X16. СОЗДАНИЕ КОШЕЛЬКА.

Код:
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата, 'purse'=>номер кошелька]
function _WMXML16 ($type,$desc) {
	global $Global_WMID, $XML_addr;
	$reqn=_GetReqn();
	$rsign=_GetSign($Global_WMID.$type.$reqn);
	$desc=trim($desc);
	$desc=htmlspecialchars($desc, ENT_QUOTES);
	$desc=iconv("CP1251", "UTF-8", $desc);
	$xml="
	<w3s.request>
    <reqn>$reqn</reqn>
    <wmid>$Global_WMID</wmid>
    <sign>$rsign</sign>
    <createpurse>
    	<wmid>$Global_WMID</wmid>
    	<pursetype>$type</pursetype>
    	<desc>$desc</desc>
    </createpurse>
	</w3s.request>";
	$resxml=_GetAnswer($XML_addr[16], $xml);
	// echo $resxml;
	$xmlres = simplexml_load_string($resxml);
	if(!$xmlres) {
	  $result['retval']=1000;
	  $result['retdesc']="Не получен XML-ответ";
	  return $result;
	}
	$result['retval']=strval($xmlres->retval);
	$result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc));
	$result['purse']=strval($xmlres->purse->pursename);
	return $result;
}

0

22

Хы, и что из всего этого брать? Копи-пастить всю инфу ДО "ИНТЕРФЕЙС X1. ВЫПИСКА СЧЕТА.", далее копи-пастить блок Х2 и все? А можно по конкретней пожалуйста, уважаемый qazantip, что конкретно им написать? А то с первых постов этой темы я им написал все то, что вы опубликовали, и меня...послали

0

23

ipsuss написал(а):

Хы, и что из всего этого брать?

А ничего брать не надо) - это образцы запросов.
У каждого свой индивидуальный запрос.
Добавлю еще:
Интерфейс X2. Перевод средств с одного кошелька на другой.
Этот интерфейс доступен только зарегистрированным клиентам. Для регистрации перешлите по внутренней почте на WMID 941977853154 (Техническая поддержка) краткую информацию о проекте, URL сайта, IP-адрес с которого будут отсылаться запросы, цель и способ использования интерфейса. Кипер подписывающий запросы должен иметь персональный аттестат (запросы обрабатываются до 3х раб. дней).

    * URL для передачи запроса с авторизацией по ключам WM Keeper Classic – https://w3s.webmoney.ru/asp/XMLTrans.asp
    * URL для передачи запроса с авторизацией по ключам WM Keeper Light – https://w3s.wmtransfer.com/asp/XMLTransCert.asp
    * метод – POST
    * формат запроса:

Код:
<w3s.request>
	<reqn></reqn>
	<wmid></wmid>
	<sign></sign>
	<trans>
    <tranid></tranid>
    <pursesrc></pursesrc>
    <pursedest></pursedest>
    <amount></amount>
    <period></period>
    <pcode></pcode>
    <desc></desc>
    <wminvid></wminvid>
    <onlyauth></onlyauth>
	</trans>
</w3s.request>

параметры запроса:
название  назначение  примечание
reqn /номер запроса     /целое без знака, макс. количество цифр – 15; всегда должен быть больше номера предыдущего запроса на перевод средств!!!
wmid /WMID подписавшего запрос /используется только при авторизации с ключами WM Keeper Classic
sign /подпись запроса /формируется из параметров: reqn+tranid+pursesrc+pursedest+amount+period+pcode+desc+wminvid   /используется только при авторизации с ключами WM Keeper Classic
trans /параметры перевода
trans\tranid /номер перевода /номер перевода в системе учета отправителя; любое целое число без знака, должно быть уникальным (два перевода с одним и тем же tranid невозможен)
trans\pursesrc /номер кошелька с которого выполняется перевод (отправитель)
trans\pursedest /номер кошелька, на который выполняется перевод (получатель)
trans\amount /переводимая сумма число с плавающей точкой (разделитель – .(точка) ) и для десяти с половиной может выглядеть так: 10.5; незначащие нули в конце и точка, если число целое, должны отсутствовать, например, 10.50 – не верно, 10.5 – верно, 9. – не верно, 9 – верно)
trans\period /срок протекции сделки в днях /целое от 0 до 255 символов; 0 – без протекции
trans\pcode /код протекции сделки /произвольная строка от 0 до 255 символов; пробелы в начале или конце не допускаются
trans\desc /описание оплачиваемого товара или услуги /произвольная строка от 0 до 255 символов; пробелы в начале или конце не допускаются
trans\wminvid /номер счета (в системе WebMoney), по которому выполняется перевод /целое число > 0; если 0 – перевод не по счету; максимально 2 32 -1
trans\onlyauth /учитывать разрешение получателя если 0 – перевод будет выполняться без учета разрешает ли получатель перевод; 1 – перевод будет выполняться только если получатель разрешает перевод (в противном случае код возврата – 35)

Значение параметра trans\amount (переводимая сумма) не может быть меньше значения, приведенного в таблице:
тип  минимальное значение
WMZ        0.01
WME                0.01
WMR        0.01
WMU        0.01
WMY                1000
WMB        2000
WMG        0.01

формат ответа:

Код:
<w3s.response>
	<reqn></reqn>
	<retval></retval>
	<retdesc></retdesc>
    <operation id="n1" ts="n2">
    	<tranid></tranid>
    	<pursesrc></pursesrc>
    	<pursedest></pursedest>
    	<amount></amount>
    	<comiss></comiss>
    	<opertype></opertype>
    	<period></period>
    	<wminvid></wminvid>
    	<orderid></orderid>
    	<desc></desc>
    	<datecrt></dateupd>
    	<dateupd></dateupd>
    </operation>
</w3s.response>

параметры ответа:
название    назначение    примечание
reqn /номер запроса
retval /код выполнения запроса 0 – запрос выполнен; остальные коды см. ниже
retdesc /расшифровка кода выполнения запроса
operation /параметры выполненного перевода (транзакции) /атрибут id – уникальный номер транзакции в системе учета WebMoney
атрибут ts – служебный номер транзакции в системе учета WebMoney
operation\tranid /номер перевода /номер перевода в системе учета отправителя; любое целое число без знака, должно быть уникальным (два перевода с одним и тем же tranid невозможны)
operation\pursesrc /номер кошелька с которого выполняется перевод (отправитель)
operation\pursedest /номер кошелька, на который выполняется перевод (получатель)
operation\amount /сумма платежа /число с плавающей точкой (разделитель – .(точка) ) и для десяти с половиной может выглядеть так: 10.5; незначащие нули в конце и точка, если число целое, должны отсутствовать, например, 10.50 – не верно, 10.5 – верно, 9. – не верно, 9 – верно)
operation\comiss /комиссия за выполненный платеж /число с плавающей точкой (разделитель – .(точка) ) и для десяти с половиной может выглядеть так: 10.5; незначащие нули в конце и точка, если число целое, должны отсутствовать, например, 10.50 – не верно, 10.5 – верно, 9. – не верно, 9 – верно)
operation\opertype /тип перевода (платежа) 0 – обычный; 4 – с протекцией
operation\period /срок протекции сделки в днях /целое число от 0 до 255; если 0 – платеж без протекции сделки
operation\wminvid /номер счета (в системе WebMoney), по которому выполняется перевод /целое число > 0; если 0 – перевод не по счету
operation\orderid /номер счета (в системе магазина, выдавшего счет), по которому выполняется перевод целое число > 0; если 0 – перевод не по счету
operation\desc /описание оплачиваемого товара или услуги
operation\datecrt /дата и время выполнения операции
operation\dateupd /дата и время последнего изменения состояния операции

0

24

Ну это все я видел у них на сайте, вопрос в том (а главное, вопрос самой темы и ее цель) это узнать Конкретный XML запрос на перевод средств и ответ. В обещм то, что требуют WM для подключения Х2.

0

25

Да нет никакого конкретного запроса) Он индивидуален.
Берем заготовку и проставляем свои данные, к конкретно своему сайту.
И хоть 100 ответов им отправь, но если ты чем то им не понравился, то не подключат никогда.
Лично мне после отправки им запросов ответили 6 раз одно и тоже)
Какая цель в существовании вашего сервиса?
И что я им должен ответить? И никакого ответа, правильный ли запрос или нет)))
Я лично забил на время с автовыплатами, автооплата есть и слава богу.

0

26

Ну возьмите стандартный скрипт где есть  convert.php и _ap.php. Какой же он там индивидуальный для каждого сайта? Индивидуальность в том, чтобы прописать пунть до ключа, пароль и вставить кошель. Вот и все, в остальном нужно правильно ответить на вопрос.

0

27

ipsuss написал(а):

Индивидуальность в том, чтобы прописать пунть до ключа, пароль и вставить кошель.

Вот именно)
Но фишка в том что суппорт тупо не обращает никакого внимания на правильные ответы, и так будет до тех пор пока вы не откажетесь от подачи им заявок.

0

28

ок. Тогда что конкретно им ответить? :) не согласятся-фиг с ними, согласятся-хорошо. А что ответить? Вот сообщение какое написать? :) (пример XMl запроса на Ваш взгляд напишите здесь пожалуйста)

0

29

у меня ваще идея есть....ток сложная наверное..но осуществимая..
1.открываем лимит доверия для кошелька у чела с х2(у меня например)
2.с этого кошеля(напрмер чисто созданного для вашего сайта),будет производиться автовыплата
3.надо учесть что она должна идти и с моего сайта...но сделать можно методом POST.то есть юзер заказывая выплату жмёт на кнопку,а там подобно мерчанту через мой сайт проходит запрос и выплачивает юзеру.а вы кошель просто пополняете,который вам открыт и т.п. короче

а мне выгода?????а я буду с вас отзыв брать на вмид и у меня BL взлетит))))

0

30

Сложно, но можно все. И все-таки жду пример запроса :)

0


Вы здесь » Vse o BUX » SoooFast » Подключение Интерфейсов