Перейти к содержимому


Фотография

Не получен XML-ответ в Х11


  • Тема закрыта
Нет ответов в данной теме

#1 Новичок 258863071482 (WMID 258863071482 )

  • Группа: Пользователи
  • сообщений 3
  • Регистрация: 27-января 21
  • Webmoney BL

Отправлено 27 января 2021 - 10:58

Здравствуйте

Такая вот проблема
Пытаюсь получить какой аттестат в 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-ответ

Подскажите что не так пожалуйста?


    • 0
  • Наверх