【问题标题】:Moving from MWS Orders 2011-01-01 to 2013-09-01 API Not reading data从 MWS 订单 2011-01-01 移动到 2013-09-01 API 未读取数据
【发布时间】:2017-04-05 19:53:28
【问题描述】:

从 MWS 订单 2011-01-01 迁移到 2013-09-01 API 我无法使用他们提供的示例 PHP 代码读取订单数据。

2011 版有不少帮助,但在 2013 版中没有,所以我尝试使用 2011 示例来读取响应,但我被卡住了。

ListOrdersSample.PHP 有:

 invokeListOrders($service, $request);

 /**
 * Get List Orders Action Sample
 * Gets competitive pricing and related information for a product identified by
 * the MarketplaceId and ASIN.
 *
 * @param MarketplaceWebServiceOrders_Interface $service instance of MarketplaceWebServiceOrders_Interface
 * @param mixed $request MarketplaceWebServiceOrders_Model_ListOrders or array of parameters
 */

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

 echo ("Service Response\n");
 echo ("============================================\n");
 echo(" ListOrdersResponse\n");
 if ($response->isSetListOrdersResult()) { 
 echo(" ListOrdersResult\n");
 $listOrdersResult = $response->getListOrdersResult();
 if ($listOrdersResult->isSetNextToken()) 
 {
 echo(" NextToken\n");
 echo(" " . $listOrdersResult->getNextToken() . "\n");
 }
 if ($listOrdersResult->isSetCreatedBefore()) 
 {
 echo(" CreatedBefore\n");
 echo(" " . $listOrdersResult->getCreatedBefore() . "\n");
 }
 if ($listOrdersResult->isSetLastUpdatedBefore()) 
 {
 echo(" LastUpdatedBefore\n");
 echo(" " . $listOrdersResult->getLastUpdatedBefore() . "\n");
 }
 if ($listOrdersResult->isSetOrders()) { 
 echo(" Orders\n");
 $orders = $listOrdersResult->getOrders();
 //print_r($orders); //debug
 //exit(); //debug
 $orderList = $orders->getOrder(); //line 148

$orders 在(2011 版)中是这样的:

服务响应 ============================================== ======== ListOrdersResponse ListOrdersResult CreatedBefore 2017-04-05T18:53:56Z 订单 MarketplaceWebServiceOrders_Model_OrderList 对象 ( _fields:protected => Array ( Order => Array ( FieldValue => Array ( [0] => MarketplaceWebServiceOrders_Model_Order Object ( _fields:protected => Array (AmazonOrderId => Array (FieldValue => 026-3851269-0939511 FieldType => string) SellerOrderId => Array ( FieldValue => FieldType => string) PurchaseDate => Array (FieldValue => 2017-04-04T18:03:30Z F​​ieldType => string ) LastUpdateDate => Array ( FieldValue => 2017-04-04T18:33:45Z FieldType => string ) OrderStatus => Array (FieldValue => Unshipped FieldType => OrderStatusEnum) FulfillmentChannel => Array (FieldValue => MFN FieldType => FulfillmentChannelEnum ) SalesChannel => Array ( FieldValue => Amazon.co.uk FieldType => string ) OrderChannel => Array ( FieldValue => FieldType => string ) ShipServiceLevel => Array (FieldValue => Std UK Dom_2 FieldType => string) ShippingAddress => Array (....

$orders 在(2013 版)中是这样的:

服务响应 ==================================================== ===========================ListOrdersResponse ListOrdersResult CreatedBefore 2017-04-05T18:35:36Z 订单数组 ( [0] => MarketplaceWebServiceOrders_Model_Order Object (_fields:protected => Array (AmazonOrderId => Array (FieldValue => 026-3851269-0939511 FieldType => string) SellerOrderId => Array (FieldValue => FieldType => string ) PurchaseDate => Array ( FieldValue => 2017-04-04T18:03:30Z F​​ieldType => string ) LastUpdateDate => Array ( FieldValue => 2017-04-04T18:33:45Z 字段类型 => 字符串)订单状态 => 数组( FieldValue => Unshipped FieldType => string) FulfillmentChannel => 数组(FieldValue => MFN FieldType => string)SalesChannel => Array ( FieldValue => Amazon.co.uk FieldType => string) OrderChannel => 数组(字段值 => 字段类型 => 字符串) ShipServiceLevel => 数组 ( FieldValue => Std UK Dom_2 FieldType => string) ShippingAddress => 数组

使用 2013 版本时出现错误:

PHP 致命错误:在非对象上调用成员函数 getOrder() 在 /home/*****/public_html/****/ListOrdersSample.php 第 148 行

上面粘贴的最后一行代码是:

 $orderList = $orders->getOrder();

2013 年的 $orders 看起来确实像一个包含对象的数组,但我不确定如何阅读它,因为我的编码对于数组和对象来说不是太强大。

拥有 $orderList 后,我​​应该能够继续使用示例代码并执行以下操作:

 foreach ($orderList as $order) {
                            echo("                    Order\n");
                            if ($order->isSetAmazonOrderId()) 
                            {
                                echo("                        AmazonOrderId\n");
                                echo("                            " . $order->getAmazonOrderId() . "\n");
                            }

但不幸的是,由于致命错误,我一直卡在第 148 行。

【问题讨论】:

    标签: php amazon-mws


    【解决方案1】:

    非常简单的修复

    $orderList = $orders->getOrder(); //line 148
    

    改为:

    $orderList = $orders;
    

    它开始工作了。

    【讨论】:

      猜你喜欢
      • 2021-02-17
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2018-07-09
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多