Вход Регистрация
Файл: 3020.ru/file_3020/_system/_function/incfunc.webmoney.php
Строк: 117
<?
// БЛОК КОНСТАНТ
$Path_Folder "/var/www/magazin/data/wmsigner/"// Путь к директории, в которой лежит .kwm
$Path_Signer "/var/www/magazin/data/wmsigner/wmsigner"// Путь к WMSigner
$Global_WMID $system['wmid'];

$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/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";
$XML_addr[19]="https://passport.webmoney.ru/XML/XMLCheckUser.aspx";


// ФУНКЦИЯ ФОРМИРУЕТ УНИКАЛЬНЫЙ УВЕЛИЧИВАЮЩИЙСЯ 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;
}

// ОТПРАВКА 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);
    return 
$result;
}

// ИНТЕРФЕЙС X2. ОТПРАВКА ПЕРЕВОДА.
// На выходе: массив ['retval'=>код выполнения, 'retdesc'=>описание результата, 'date'=>дата и время]
function _WMXML2 ($tranid,$purse,$rpurse,$amount,$period,$pcode,$desc,$wminvid,$onlyauth) {
    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($pcodeENT_QUOTES);
    
$desc=htmlspecialchars($descENT_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>
            <onlyauth>
$onlyauth</onlyauth>
        </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;
}
?>
Онлайн: 1
Реклама