Я безуспешно пытаюсь использовать 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).
Вместо того, чтобы пытаться с 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);
Вот код, который я закончил, но, как я уже упоминал выше, кажется, что 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;
?>
Сначала вы должны повторить ваш файл.
Поскольку у меня возникла та же проблема, оставшийся код верен, но, возможно, ваш путь к файлу неверен и не попадает в PHP, поэтому записи не вставляются.
Когда я изменил путь к каталогу, как это ..
$file = file_get_contents('singleorder.txt', true);
Он всегда будет в одном каталоге.
Началось нормально работать. Так что попробуйте это для решения.