Изпращане на xml файл до url (Econt API)

+1 глас
1,088 прегледа
попитан 2017 януари 21 от djimi.miladinov (280 точки)

Здравейте, опитвам се да интегрирам API-то на Еконт в един онлайн магазин и то работи по следния начин.
Генериа се xml и се изпраща до url което връща отговор.
Правя го с php и използвам SimpleXMLElement за да си генрирам xml-a и пробрах да го изпратя по следния начин:

$curl_connection = curl_init('http://demo.econt.com/e-econt/xml_parcel_import2.php');
                curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
                curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
                curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

                $post_data['file'] = $xml->asXML();

                foreach ( $post_data as $key => $value) {
                    $post_items[] = $key . '=' . $value;
                }
                $post_string = implode ('&', $post_items);

                echo "$post_string";

                curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

                $result = curl_exec($curl_connection);
                curl_close($curl_connection);

                echo "$result";

                print_r($xml);

Но като извикам result ми връща страницата от url-a на която има форма за да може се тества на ръка.
А на мен ми трябва отговора който ми дава след като формата вече е събмитната с въпросния xml файл като параметър.

1 отговор

+1 глас
отговорени 2017 септември 1 от vangelov (160 точки)
Здравей,

предполагам си решил проблема си вече, но да ти постна моето решение.

$query = '<?xml version="1.0" encoding="UTF-8"?>

<request>

<client>

<username>demo</username>

<password>demo</password>

</client>

<request_type>check_address</request_type>

<address>

<city>Русе</city>

<post_code>7000</post_code>

<name>Петър Петров</name>

<phone_num>08888888888</phone_num>

<sms_no/>

<street>Славянска</street>

<street_num>16</street_num>

</address>

</request>';

   $c = curl_init();

   curl_setopt($c, CURLOPT_URL, 'http://demo.econt.com/e-econt/xml_service_tool.php');

   curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);

   curl_setopt($c, CURLOPT_POST,1);

   curl_setopt($c, CURLOPT_POSTFIELDS, array('xml' => $query));   

   $result = curl_exec($c);

   header("Content-type: text/xml");

   echo $result;

Работи и връща статус дали е валидиран адреса.. Аз обаче се срещнах с проблем при следващата стъпка със създаване на товарителницата... ако си намерил нещо ще съм благодарен да пуснеш едно коментарче
...