我一直在尝试使用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/WebService.aspx?Login=xxxxx@xxxxcomusa.com &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”),但结果页面上没有“数据”输出,并且记录没有得到更新。我能够使用类似的URL从api返回数据,所以我知道我的加密密码是正确的。我想我也确定了那行......
$header = "POST".$url." HTTP/1.0 \r\n";
应该阅读......
$header = "POST ".$url." HTTP/1.0 \r\n";
POST后有一个空格,但我仍然无法成功更新记录。我希望有人可能取得了成功,并且可以分享更多关于如何使用Volusion API导入更新的细节(希望是PHP)。
答案 0 :(得分: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);
之后使用上面的标题发送您的帖子请求。
tkinter
答案 1 :(得分:0)
以下是我最终得到的代码,但正如我在上面提到的那样,似乎Import = Update不适用于Volusion Order数据,但类似的代码应该在尝试使用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/WebService.aspx?Login=xxxx@xxxxxxxcom.com&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;
?>
答案 2 :(得分:0)
首先你应该回复你的文件。
因为我遇到了同样的问题,剩下的代码是正确的,但可能是你的文件路径错误,并且没有通过PHP获取,所以这就是没有插入记录的原因。
当我更改目录路径时就是这样..
$file = file_get_contents('singleorder.txt', true);
它将始终位于同一目录中。 它开始工作正常。所以试试这个解决方案。