1

我们目前正在尝试集成到 Netsuite 网络服务中,但是我们不希望使用他们的 PHP 连接器工具包。我们已经有了一个使用 Coldfusion 和 cfhttp 开发的脚本,可以毫无问题地将数据发布到 Netsuite。

现在,我们目前已将脚本转换为 PHP,并正在使用 curl 函数将数据发送到 Netsuite。

我们可以毫无问题地成功创建新的销售订单记录,但是事实证明,获取返回响应消息非常困难,因为我们得到的只是 302 重定向。

我假设这可能与执行收集返回对象的登录凭据有关,但是我不知道如何将此数据存储在 cookie 值中,以便可以继续在系统中读取它以进行系统集成。

下面是我们的 CURL 代码

$http_header = array(
    'Content-Type: text/xml; charset="utf-8"',
    'SOAPAction: getItemAvailability',
    'Content-Length: ' . strlen($myXml),
    'Accept: text/xml',
    'Cache-Control: no-cache',
    'Pragma: no-cache'
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->wdsl);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $http_header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $myXml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
$returnObj = curl_exec($ch);
curl_close($ch);

我们已经尝试了各种方法,但似乎无法使其正常工作,因此我们可以获得返回的 xml 数据,它可以毫无问题地创建记录。任何建议将不胜感激

4

1 回答 1

0

我建议使用包装库而不是 curl 进行 NetSuite 通信。我已经用ruby​​ 包装器做了很多工作,它对我来说效果很好。

您可以获得 302 的原因之一是您尝试访问的帐户与您指向的当前 WSDL 位于不同的数据中心。标准 WSDL 域是system.netsuite.com,但许多 NetSuite 安装都在system.na1.netsuite.com. 检查您所在的数据中心的最简单方法是登录到 GUI 并查看域。

于 2015-10-09T12:55:32.210 回答