适用于ProductSync的API集成

时间:2016-10-26 07:59:53

标签: php xml api http volusion

这是由Volusion对ProductSync的支持提供的方法,但是C#中的代码我希望在PHP中实现但是如何实现它我不知道。

https://support.volusion.com/hc/en-us/articles/209637767-API-Integration-ProductSync-Developer-

所以任何人都可以帮助我如何在PHP中实现,因为我正在研究PHP我不知道C#。我只是在我的PHP中粘贴这段代码,它给我一个像这样的错误

  

致命错误:第5行的/home/tlztech/public_html/volusion/productSync.php中找不到“XMLHTTP”类。

我的代码如下。

<?php

$api_url = "http://tebkq.mvlce.servertrust.com/net/WebService.aspx?Login=mylogin&EncryptedPassword=mypass&API_Name=Generic\\Products&SELECT_Columns=p.ProductCode,p.ProductID,p.ProductName,p.StockStatus";

$xml_http = new XMLHTTP();
$xml_http.open("POST", $api_url, false, "", "");
$xml_http.send(null);
$api_response = $xml_http.responseText;



$api_url = "http://tebkq.mvlce.servertrust.com/net/WebService.aspx?Login=mylogin&EncryptedPassword=mypass&Import=Update";
$api_request = "";
$api_request = $api_request + "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
$api_request = $api_request + "<xmldata>";
$api_request = $api_request + "   <Products>";
$api_request = $api_request + "       <ProductCode>0001</ProductCode>";
$api_request = $api_request + "       <StockStatus>5</StockStatus>";
$api_request = $api_request + "   </Products>";
$api_request = $api_request + "</xmldata>";

$xml_http = new XMLHTTP();
$xml_http.open("POST", $api_url, false, "", "");
$xml_http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
$xml_http.setRequestHeader("Content-Action", "Volusion_API");
$xml_http.send(api_request);
$xml_http = $xml_http.responseText;

$api_url = "http://tebkq.mvlce.servertrust.com/net/WebService.aspx?Login=mylogin&EncryptedPassword=mypass&API_Name=Generic\\Products&SELECT_Columns=p.ProductCode,p.ProductID,p.ProductName,p.StockStatus&WHERE_Column=p.ProductCode&WHERE_Value=0002";

$xml_http = new XMLHTTP();
$xml_http.open("POST", $api_url, false, "", "");
$xml_http.send(null);
$api_response = $xml_http.responseText;


?>

2 个答案:

答案 0 :(得分:1)

您正在尝试引用PHP中不存在的Microsoft类。

我在你最近的其他帖子中看到你试图用cURL调用Volusion API。这是我在PHP中使用的有效方法。没有必要将C#示例改编为PHP。

以下是使用cURL和您的URL示例的PHP中的有效示例:

$api_url = "http://tebkq.mvlce.servertrust.com/net/WebService.aspx?Login=mylogin&EncryptedPassword=mypass&Import=Update";

$api_request = '<?xml version="1.0" encoding="utf-8" ?>';
$api_request .= '<xmldata>';
$api_request .= '   <Products>';
$api_request .= '       <ProductCode>0001</ProductCode>';
$api_request .= '       <StockStatus>5</StockStatus>';
$api_request .= '   </Products>';
$api_request .= '</xmldata>';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $api_request); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type:application/x-www-form-urlencoded; charset=utf-8", "Content-Action:Volusion_API"));

$head = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch); 

答案 1 :(得分:0)

我认为这是因为您需要使用XMLHTTP类的命名空间:

$xml_http = new Your\Namespace\XMLHTTP();

因为您的文件中没有XMLHTTP类。这就是找不到它的原因

然后,如果您只想使用XMLHTTP(),则需要在文件的开头添加一个用途:

use <NAMESPACE>;

如果这个类来自全局命名空间,那就这样做: $xml_http = new \XMLHTTP();