Использование Volusion API для импорта данных заказа

Я безуспешно пытаюсь использовать Volusion API для импорта данных заказов, и поддержка через Volusion ограничена. Я склонен склоняться к решению PHP, и на их веб-сайте есть пример использования API для импорта с php …

<?php
//  Create the Xml to POST to the Webservice
$Xml_to_Send = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
$Xml_to_Send .= "<Volusion_API>";
$Xml_to_Send .= "<!--";
$Xml_to_Send .= "    xml input file for \"\"";
$Xml_to_Send .= "-->";
$Xml_to_Send .= "</Volusion_API>";

//  Create the Header
$url = "https://www.xxxxxcomusa.com/net/[email protected] &EncryptedPassword=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&Import=Insert";
$header  = "POST".$url." HTTP/1.0 \r\n";
$header .= "MIME-Version: 1.0 \r\n";
$header .= "Content-type: text/xml; charset=utf-8 \r\n";
$header .= "Content-length: ".strlen($post_string)." \r\n";
$header .= "Content-transfer-encoding: text \r\n";
$header .= "Request-number: 1 \r\n";
$header .= "Document-type: Request \r\n";
$header .= "Interface-Version: Test 1.4 \r\n";
$header .= "Connection: close \r\n\r\n";
$header .= $Xml_to_Send;

//  Post and Return Xml
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 4);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);
$data = curl_exec($ch);

//  Check for Errors
if (curl_errno($ch)){
print curl_error($ch);
} else {
curl_close($ch);
}

//  Display the Xml Returned on the Browser
echo $data;
?>

Я соответственно отредактировал это, чтобы обновить заказ (использовал «Import = Update»), но на полученной странице нет вывода «data», и запись не обновляется. Я могу получить данные, возвращенные из API, используя аналогичный URL, поэтому я знаю, что мой зашифрованный пароль правильный. Я думаю, что я также определил, что строка, которая читает …

$header  = "POST".$url." HTTP/1.0 \r\n";

должен прочесть …

   $header  = "POST ".$url." HTTP/1.0 \r\n";

с пробелом после POST, но я все еще не могу успешно обновить запись. Я надеялся, что кто-то мог добиться успеха и может рассказать больше о том, как вы смогли импортировать обновление с помощью Volusion API (и, надеюсь, PHP).

0

Решение

Вместо того, чтобы пытаться с CUSTOMREQUEST Вы можете использовать ниже одного. Он отправляет ваши заголовки соответствующим образом.

Сначала сделайте заголовок, как показано ниже:

$header  = array(
"MIME-Version: 1.0",
"Content-type: text/xml; charset=utf-8",
"Content-transfer-encoding: text",
"Request-number: 1",
"Document-type: Request",
"Interface-Version: Test 1.4");

После этого отправьте запрос на отправку, как показано ниже, с заголовком выше.

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $Xml_to_Send);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
0

Другие решения

Вот код, который я закончил, но, как я уже упоминал выше, кажется, что Import = Update не работает с данными заказа Volusion, но подобный код должен работать при попытке использовать Volusion API и PHP для импорта. Еще раз спасибо за вашу помощь Sabuj!

<?php

$file = file_get_contents('mydir/singleorder.txt', true);

//  Create the Xml to POST to the Webservice

$Xml_to_Send = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
$Xml_to_Send .= "<Volusion_API>";
//  $Xml_to_Send .= "<!--";
$Xml_to_Send .= $file;
//  $Xml_to_Send .= "\"\"";
//  $Xml_to_Send .= "-->";
$Xml_to_Send .= "</Volusion_API>";

$url = "https://www.xxxxxusa.com/net/[email protected]&EncryptedPassword=0000000000000000000000000000xxxxxxxxxx&Import=Update";

//  Create the Header

$header  = array(
"MIME-Version: 1.0",
"Content-type: text/xml; charset=utf-8",
"Content-transfer-encoding: text",
"Request-number: 1",
"Document-type: Request",
"Interface-Version: Test 1.4");

//  Post and Return Xml
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $Xml_to_Send);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$data = curl_exec($ch);

//  Check for Errors
if (curl_errno($ch)){
print curl_error($ch);
} else {
curl_close($ch);
}

//  Display the Xml Returned on the Browser
echo $data;
?>
0

Сначала вы должны повторить ваш файл.

Поскольку у меня возникла та же проблема, оставшийся код верен, но, возможно, ваш путь к файлу неверен и не попадает в PHP, поэтому записи не вставляются.

Когда я изменил путь к каталогу, как это ..

$file = file_get_contents('singleorder.txt', true);

Он всегда будет в одном каталоге.
Началось нормально работать. Так что попробуйте это для решения.

0
По вопросам рекламы [email protected]