使用Volusion API导入订单数据

时间:2015-11-30 22:57:27

标签: php xml api curl volusion

我一直在尝试使用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)。

3 个答案:

答案 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);

它将始终位于同一目录中。 它开始工作正常。所以试试这个解决方案。