使用 PHP 从亚马逊 MWS API 获取订单数据

Posted

技术标签:

【中文标题】使用 PHP 从亚马逊 MWS API 获取订单数据【英文标题】:Get Orders data from Amazon MWS API using PHP 【发布时间】:2019-01-25 09:28:29 【问题描述】:

我正在尝试使用Amazon MWS api访问卖家的订单数据 我已遵循文档并下载了 Orders API 的 php 客户端库。 当我使用相同的信息使用亚马逊暂存器时,我得到了正确的 XML 订单列表,但是当我尝试使用 PHP 客户端库执行此操作时,我没有得到任何 XML 输出,而是得到纯字符串。

代码

  #ListOrdersSample.php   #Page

require_once('.config.inc.php');


$serviceUrl = "https://mws.amazonservices.in/Orders/2013-09-01";

$config = array (
   'ServiceURL' => $serviceUrl,
   'ProxyHost' => null,
   'ProxyPort' => -1,
   'ProxyUsername' => null,
   'ProxyPassword' => null,
   'MaxErrorRetry' => 3,
 );

 $service = new MarketplaceWebServiceOrders_Client(
        AWS_ACCESS_KEY_ID,
        AWS_SECRET_ACCESS_KEY,
        APPLICATION_NAME,
        APPLICATION_VERSION,
        $config);

  $service = new MarketplaceWebServiceOrders_Mock();

 $request = new MarketplaceWebServiceOrders_Model_ListOrdersRequest();
 $request->setSellerId(MERCHANT_ID);
 $request->setCreatedAfter('2018-08-01');

 invokeListOrders($service, $request);

   function invokeListOrders(MarketplaceWebServiceOrders_Interface $service, 
$request)
  
      try 
        $response = $service->ListOrders($request);

        echo ("Service Response\n");
        echo ("====================================================\n");

        $dom = new DOMDocument();
        $dom->loadXML($response->toXML());
        $dom->preserveWhiteSpace = false;
        $dom->formatOutput = true;
        echo $dom->saveXML();
        echo("ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n");

      catch (MarketplaceWebServiceOrders_Exception $ex) 
        echo("Caught Exception: " . $ex->getMessage() . "\n");
        echo("Response Status Code: " . $ex->getStatusCode() . "\n");
        echo("Error Code: " . $ex->getErrorCode() . "\n");
        echo("Error Type: " . $ex->getErrorType() . "\n");
        echo("Request ID: " . $ex->getRequestId() . "\n");
        echo("XML: " . $ex->getXML() . "\n");
        echo("ResponseHeaderMetadata: " . $ex->getResponseHeaderMetadata() . 
   "\n");
     
 

在运行此脚本时,我得到的输出是:

Service Response    
====================================================================== 
String 1969-07-21T02:56:03Z 1969-07-21T02:56:03Z String String 1969-07- 
21T02:56:03Z 1969-07-21T02:56:03Z String String String String String String 
String String String String String String String String String String String 
String String 1 1 String String String String String String String String 
String String String String String String true String String String 1969-07- 
21T02:56:03Z 1969-07-21T02:56:03Z 1969-07-21T02:56:03Z 1969-07-21T02:56:03Z 
true String true true String true 1969-07-21T02:56:03Z true String 
ResponseHeaderMetadata: 

【问题讨论】:

【参考方案1】:

您的 Mock 服务正在覆盖生产服务实例。查看副本。

 $service = new MarketplaceWebServiceOrders_Client(
    AWS_ACCESS_KEY_ID,
    AWS_SECRET_ACCESS_KEY,
    APPLICATION_NAME,
    APPLICATION_VERSION,
    $config);

 $service = new MarketplaceWebServiceOrders_Mock();

请移除第二个 $service 并进行测试

【讨论】:

谢谢你..它工作了,但数据仍然不是正确的格式,如何将这些数据保存为 csv 或任何其他可读格式。 这里的输出是 XML 格式 $dom->saveXML() 。您应该将它带到一个变量中,解析 XML 并将其保存为所需的 CSV 格式。你能接受我上面的回答吗

以上是关于使用 PHP 从亚马逊 MWS API 获取订单数据的主要内容,如果未能解决你的问题,请参考以下文章

从哪里获取买家信息,例如买家电子邮件、姓名等待处理订单或在亚马逊 mws 中取消订单

如何使用PHP调用亚马逊MWS订单?

亚马逊 MWS 提要 API 问题,取消订单

亚马逊 MWS 集成

亚马逊 MWS Feed API 更新订单状态的问题

亚马逊费用未显示在 MWS 订单 API 上