Здравствуйте
Такая вот проблема
Пытаюсь получить какой аттестат в WebMoney
Выдает: не получен XML-ответ
Код такой:
include_once('auto_pay_req/wmxml.inc.php'); $wmid="258863071482"; $r=_WMXML11($wmid); echo "Код аттестата - ".$r['att']."<br>"; echo "Флаг отзыва (1 - отозван) - ".$r['recalled']."<br>"; echo "Результат (0 - успешно) - ".$r['retval']."<br>"; echo "Расшифровка - ".$r['retdesc']."<br>";
Обработчик:
if(!DEFINED("ROOT_DIR")) DEFINE("ROOT_DIR", $_SERVER["DOCUMENT_ROOT"]); require(ROOT_DIR."/config.php"); // тут связь с базой $global_wmid = "$site_wmid"; // тут вмид сайта $global_kwm = is_file(ROOT_DIR."/auto_pay_req/keys/$global_wmid.kwm") ? file_get_contents(ROOT_DIR."/auto_pay_req/keys/$global_wmid.kwm") : false; $Path_Certs = is_file(ROOT_DIR."/auto_pay_req/cert/WMunited.cer") ? ROOT_DIR."/auto_pay_req/cert/WMunited.cer" : false; include_once(ROOT_DIR."/auto_pay_req/wmsigner.php"); // 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://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"; function _GetReqn(){ $time=microtime(); $int=substr($time,11); $flo=substr($time,2,5); return $int.$flo; }; function _GetAnswer($address, $xml){ global $Path_Certs; // Инициализируем сеанс 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); // Проверяем корневой сертификат сервера WebMoney curl_setopt($ch, CURLOPT_CAINFO, $Path_Certs); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE); // Выполняем запрос, ответ помещаем в переменную $result; $result=curl_exec($ch); 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."; $result['retdesc']=iconv("UTF-8", "CP1251", strval($xmlres->retdesc)); return $result; } $result['att']=strval($xmlres->certinfo->attestat->row->attributes()->tid); $result['recalled']=strval($xmlres->certinfo->attestat->row->attributes()->recalled); $result['retval']=strval($xmlres->attributes()->retval); foreach ($xmlres->certinfo->wmids->row as $row) { $wmids[]=strval($row->attributes()->wmid); } $result['wmids']=$wmids; return $result; }
В итоге выводит на сайте это:
Код аттестата - 0
Флаг отзыва (1 - отозван) -
Результат (0 - успешно) - 1000
Расшифровка - Не получен XML-ответ
Подскажите что не так пожалуйста?