/** * 抓取订单产品详细 * @param number $OrderId * @return array * @author czq */ public function getOrderDetailLists($OrderId) { $service = new MarketplaceWebServiceOrders_Client(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, APPLICATION_NAME, APPLICATION_VERSION, $this->config); $request = new MarketplaceWebServiceOrders_Model_ListOrderItemsRequest(); $request->setSellerId(MERCHANT_ID); $request->setAmazonOrderId($OrderId); $response = $service->listOrderItems($request); $listOrderItemsResult = $response->getListOrderItemsResult(); $all_response = array(); $all_response[] = $listOrderItemsResult; while ($listOrderItemsResult->isSetNextToken()) { $request = new MarketplaceWebServiceOrders_Model_ListOrderItemsByNextTokenRequest(); $request->setSellerId(MERCHANT_ID); $request->setNextToken($listOrderItemsResult->getNextToken()); $response = $service->ListOrdersByNextToken($request); $listOrderItemsResult = $response->getListOrderItemsByNextTokenResult(); $all_response[] = $listOrderItemsResult; //最大的请求权限为30个,每30个就sleep 60秒恢复 if ($this->_requestTimes % 30 == 0) { sleep(60); $this->_requestTimes = 0; } $this->_requestTimes++; } return $all_response; }
/** * List Order Items By Next Token * If ListOrderItems cannot return all the order items in one go, it will * provide a nextToken. That nextToken can be used with this operation to * retrive the next batch of items for that order. * * @param mixed $request array of parameters for MarketplaceWebServiceOrders_Model_ListOrderItemsByNextToken request or MarketplaceWebServiceOrders_Model_ListOrderItemsByNextToken object itself * @see MarketplaceWebServiceOrders_Model_ListOrderItemsByNextTokenRequest * @return MarketplaceWebServiceOrders_Model_ListOrderItemsByNextTokenResponse * * @throws MarketplaceWebServiceOrders_Exception */ public function listOrderItemsByNextToken($request) { if (!$request instanceof MarketplaceWebServiceOrders_Model_ListOrderItemsByNextTokenRequest) { require_once dirname(__FILE__) . '/Model/ListOrderItemsByNextTokenRequest.php'; $request = new MarketplaceWebServiceOrders_Model_ListOrderItemsByNextTokenRequest($request); } $parameters = $request->toQueryParameterArray(); $parameters['Action'] = 'ListOrderItemsByNextToken'; $httpResponse = $this->_invoke($parameters); require_once dirname(__FILE__) . '/Model/ListOrderItemsByNextTokenResponse.php'; $response = MarketplaceWebServiceOrders_Model_ListOrderItemsByNextTokenResponse::fromXML($httpResponse['ResponseBody']); $response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']); return $response; }
* Uncomment to try out Mock Service that simulates MarketplaceWebServiceOrders * responses without calling MarketplaceWebServiceOrders service. * * Responses are loaded from local XML files. You can tweak XML files to * experiment with various outputs during development * * XML files available under MarketplaceWebServiceOrders/Mock tree * ***********************************************************************/ // $service = new MarketplaceWebServiceOrders_Mock(); /************************************************************************ * Setup request parameters and uncomment invoke to try out * sample for List Order Items By Next Token Action ***********************************************************************/ // @TODO: set request. Action can be passed as MarketplaceWebServiceOrders_Model_ListOrderItemsByNextTokenRequest $request = new MarketplaceWebServiceOrders_Model_ListOrderItemsByNextTokenRequest(); $request->setSellerId(MERCHANT_ID); // object or array of parameters invokeListOrderItemsByNextToken($service, $request); /** * List Order Items By Next Token Action Sample * If ListOrderItems cannot return all the order items in one go, it will * provide a nextToken. That nextToken can be used with this operation to * retrive the next batch of items for that order. * * @param MarketplaceWebServiceOrders_Interface $service instance of MarketplaceWebServiceOrders_Interface * @param mixed $request MarketplaceWebServiceOrders_Model_ListOrderItemsByNextToken or array of parameters */ function invokeListOrderItemsByNextToken(MarketplaceWebServiceOrders_Interface $service, $request) { try {