- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый вечер!
Стала задача использовать в работе LiqPay API, линк: https://liqpay.com/?do=pages&p=cnb12
Стала проблема, не могу понять как распарсить ответ.
Вот кусок кода:
<operation_xml>'.$operation_xml.'</operation_xml>
<signature>'.$signature.'</signature>
</operation_envelope>';
$post = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<request>
<liqpay>'.$operation_envelop.'</liqpay>
</request>';
$url = "https://www.liqpay.com/?do=api_xml";
$page = "/?do=api_xml";
$headers = array("POST ".$page." HTTP/1.0",
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Content-length: ".strlen($post));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
echo "
<form action='https://www.liqpay.com/?do=clickNbuy' method='POST' />
<input type='hidden' name='operation_xml' value='".$operation_xml."' />
<input type='hidden' name='signature' value='".$signature."' />
<input value='Оплатить' type='submit'/>
</form>
";
if (isset($_POST['signature']) and isset($_POST['operation_xml'])) {
$xml = $_POST['operation_xml'];
$xml_decoded=base64_decode($xml);
echo $xml_decoded;
}
Сейчас выводится строкой результат: echo $xml_decoded;
Вот ответ:
<action>result_url</action>
<amount>1.00</amount>
<currency>UAH</currency>
<description>Описание</description>
<goods_id>1234</goods_id>
<merchant_id>тут айди мерчанта</merchant_id>
<order_id>z23</order_id>
<pay_way>liqpay</pay_way>
<pays_count>12</pays_count>
<sender_phone></sender_phone>
<status>success</status>
<transaction_id>31626901</transaction_id>
<version>1.2</version>
</response>
Как вытащить отдельные значения полей, например <status>?
Спасибо, просто всегда работал через json, а тут необходимо через xml.