Liqpay xml ответ. Как распарсить?

vlad00777
На сайте с 24.12.2009
Offline
119
2134

Добрый вечер!

Стала задача использовать в работе LiqPay API, линк: https://liqpay.com/?do=pages&p=cnb12

Стала проблема, не могу понять как распарсить ответ.

Вот кусок кода:

$operation_envelop = '<operation_envelope>
<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;

Вот ответ:

<response>
<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.

Верстка. Качественно! Адаптивная, резиновая, с параллаксом и прочими плюшками. В ЛС.
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1


<?php
$obj = simplexml_load_string($xml);
echo '<pre>';
print_r($obj);
echo '</pre>';
?>
Подпись))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий