Вход Регистрация
Файл: 3020.ru/file_3020/_system/_function/Brodaga.WebmoneyFunc.php
Строк: 241
<?php
$Path_Folder 
"/var/www/magazin/data/wmsigner/"// Путь к директории, в которой лежит .kwm
$Path_Signer "/var/www/magazin/data/wmsigner/wmsigner"// Путь к WMSigner
$Global_WMID "383701637577";
$Path_Certs "/var/www/magazin/data/wmsigner/WMunited.cer";

// URL интерфейсов
$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/XMLFindWMPurseNew.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://apipassport.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";
$XML_addr[19]="https://apipassport.webmoney.ru/XMLCheckUser.aspx";
$XML_addr[201]="https://merchant.webmoney.ru/conf/xml/XMLTransRequest.asp";
$XML_addr[202]="https://merchant.webmoney.ru/conf/xml/XMLTransConfirm.asp";
$XML_addr[211]="https://merchant.webmoney.ru/conf/xml/XMLTrustRequest.asp";
$XML_addr[212]="https://merchant.webmoney.ru/conf/xml/XMLTrustConfirm.asp";
$XML_addr[22]="https://merchant.webmoney.ru/conf/xml/XMLTransSave.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(
    
=> array("pipe""r"),
    
=> array("pipe""w"),
    
=> array("pipe""r") );
    
$process proc_open($Path_Signer$descriptorspec$pipes);
    
fwrite($pipes[0], "$inStr04rn");
    
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 "$inStr04rn";
    
$fp popen($Path_Signer"r+");
    
fwrite($fp,$PlanStr);
    
$s fgets($fp133);
    
pclose($fp);
    return 
$s;
}


// ОТПРАВКА POST-ЗАПРОСА ЧЕРЕЗ CURL
// На входе: URL для отправки и содержимое XML-запроса. На выходе: XML-ответ от WebMoney
function _GetAnswer($address$xml){
    global 
$Path_Certs;
    
// Инициализируем сеанс CURL
    
$ch curl_init($address);
    
// В выводе CURL http-заголовки не нужны
    
curl_setopt($chCURLOPT_HEADER0);
    
// Возвращать результат, а не выводить его в браузер
    
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
    
// Метод http-запроса - POST
    
curl_setopt($chCURLOPT_POST,1);
    
// Что передаем?
    
curl_setopt($chCURLOPT_POSTFIELDS$xml);
    
// Проверяем корневой сертификат сервера WebMoney
    
curl_setopt($chCURLOPT_CAINFO$Path_Certs);
    
curl_setopt($chCURLOPT_SSL_VERIFYPEERTRUE);
    
// Выполняем запрос, ответ помещаем в переменную $result;
    
$result=curl_exec($ch);
    
// Раскомментировать следующую строку, чтобы посмотреть ошибки выполнения curl запроса
    //    if(curl_errno($ch)) echo "Curl Error number='".curl_errno($ch)."' err desc='".curl_error($ch)."' n"; 
    
return $result;
}


// ИНТЕРФЕЙС X11. ПОЛУЧЕНИЕ ИНФОРМАЦИИ ИЗ АТТЕСТАТА.
// На выходе: массив ['att'=>код аттестата, 'recalled'=>флаг отзыва аттестата, 'retval'=>код выполнения, 'retdesc'=>описание результата, 'wmids'=>список прикрепленных к аттестату WMID]
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']=0
        
$result['retval']=1001;
        
$result['retdesc']="Информация об аттестате не получена. Возможно, неверно указан WMID.";
        return 
$result;
    }

$fullaccess explode("<fullaccess>",$xmlres);
//$fullaccess = $fullaccess[1];
//if ($fullaccess==1) echo "<font color=green><b>Доступ к данным WMID,а Разрешен</b></font><br>";
$fullaccess explode("</fullaccess>",$xmlres);
$fullaccess $fullaccess[0];
if (
$fullaccess==0) echo "<font color=red><b>Доступ к данным WMID,а Ограничен</b></font><br>";

$result['att']=strval($xmlres->certinfo->attestat->row->attributes()->tid);
$result['recalled']=strval($xmlres->certinfo->attestat->row->attributes()->recalled);
$result['datecrt']=strval($xmlres->certinfo->attestat->row->attributes()->datecrt);
$result['notary']=strval($xmlres->certinfo->attestat->row->attributes()->notary);
$result['datediff']=strval($xmlres->certinfo->attestat->row->attributes()->datediff);
$result['status']=strval($xmlres->certinfo->attestat->row->attributes()->status);
$result['nickname']=strval($xmlres->certinfo->userinfo->value->row->attributes()->nickname);
$result['byear']=strval($xmlres->certinfo->userinfo->value->row->attributes()->byear);
$result['fname']=strval($xmlres->certinfo->userinfo->value->row->attributes()->fname);
$result['iname']=strval($xmlres->certinfo->userinfo->value->row->attributes()->iname);
$result['oname']=strval($xmlres->certinfo->userinfo->value->row->attributes()->oname);
$result['pnomer']=strval($xmlres->certinfo->userinfo->value->row->attributes()->pnomer);

$result['pasdoc']=strval($xmlres->certinfo->userinfo->value->row->attributes()->pasdoc);
$result['regdoc']=strval($xmlres->certinfo->userinfo->value->row->attributes()->regdoc);
$result['inndoc']=strval($xmlres->certinfo->userinfo->value->row->attributes()->inndoc);
$result['photoid']=strval($xmlres->certinfo->userinfo->value->row->attributes()->photoid);


$result['ctype']=strval($xmlres->certinfo->wmids->row->attributes()->ctype);



$result['retval']=strval($xmlres->attributes()->retval);
foreach (
$xmlres->certinfo->wmids->row as $row) {
$wmids[]=strval($row->attributes()->wmid);
}
$result['wmids']=$wmids;
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="исходящая"$corrpurse=$pursedest;
            } elseif(
$pursedest==$purse) {
                
$type="входящая"$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'=> strval($operation->desc),
                
'datecrt'=>strval($operation->datecrt)
                );
        }
    }
    return 
$result;
}
//    $pcode=iconv("CP1251", "UTF-8", $pcode);
  //      $desc=iconv("CP1251", "UTF-8", $desc);
?>
Онлайн: 1
Реклама