/** * 抓取一段时间内的订单 * @param datetime $starttime * @param datetime $endtime * @return array * @author lzx */ public function getOrderLists($starttime, $endtime) { $allResponse = array(); $service = new MarketplaceWebServiceOrders_Client(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, APPLICATION_NAME, APPLICATION_VERSION, $this->config); $request = new MarketplaceWebServiceOrders_Model_ListOrdersRequest(); $request->setSellerId(MERCHANT_ID); $request->setMarketplaceId(MARKETPLACE_ID); $request->setCreatedAfter($starttime); $request->setCreatedBefore($endtime); $request->setOrderStatus(array("Unshipped", "PartiallyShipped")); $request->setMaxResultsPerPage(100); $response = $service->listOrders($request); $listOrdersResult = $response->getListOrdersResult(); $allResponse[] = $listOrdersResult; ######################### 分页抓取剩下的分页 start #################################### $while_index = 0; while ($listOrdersResult->isSetNextToken()) { $request = new MarketplaceWebServiceOrders_Model_ListOrdersByNextTokenRequest(); $request->setSellerId(MERCHANT_ID); $request->setNextToken($listOrdersResult->getNextToken()); $response = $service->ListOrdersByNextToken($request); $listOrdersResult = $response->getListOrdersByNextTokenResult(); $allResponse[] = $listOrdersResult; //ListOrders 和 ListOrdersByNextToken 操作的最大请求限额为 6 个防止意外循环 if ($while_index % 5 == 4) { sleep(61); //恢复速度1分钟 } //容错机制, 异常后自动弹出 if ($while_index > 50) { break; } $while_index++; } ######################### 分页抓取剩下的分页 end #################################### return $allResponse; }
$marketplaceIdList = new MarketplaceWebServiceOrders_Model_MarketplaceIdList(); $marketplaceIdList->setId(array(MARKETPLACE_ID)); $request->setMarketplaceId($marketplaceIdList); $orderStatuses = new MarketplaceWebServiceOrders_Model_OrderStatusList(); $orderStatuses->setStatus(array('Unshipped', 'PartiallyShipped')); $request->setOrderStatus($orderStatuses); $start = date("Y-m-d H:i:s", $interval_start); $end = date("Y-m-d H:i:s", $interval_end); $astart = date('Y-m-d', strtotime($start)) . " " . date('H:i:s', strtotime($start)); $aend = date('Y-m-d', strtotime($end)) . " " . date('H:i:s', strtotime($end)); $interval_start = $interval_end; $interval_end = strtotime($interval_time, $interval_end); echo $astart . '<br>'; echo $aend; $request->setCreatedAfter(new DateTime($astart, new DateTimeZone('UTC'))); $request->setCreatedBefore(new DateTime($aend, new DateTimeZone('UTC'))); $errorstatus = invokeListOrders($service, $request); echo '$errorstatus:' . $errorstatus . "<br><br>"; } echo "finish"; /** * List Orders Action Sample * ListOrders can be used to find orders that meet the specified criteria. * * @param MarketplaceWebServiceOrders_Interface $service instance of MarketplaceWebServiceOrders_Interface * @param mixed $request MarketplaceWebServiceOrders_Model_ListOrders or array of parameters */ function invokeListOrders(MarketplaceWebServiceOrders_Interface $service, $request) { global $user, $account, $dbcon, $defaultstoreid; try {
* * XML files available under MarketplaceWebServiceOrders/Mock tree * ***********************************************************************/ // $service = new MarketplaceWebServiceOrders_Mock(); /************************************************************************ * Setup request parameters and uncomment invoke to try out * sample for List Orders Action ***********************************************************************/ $request = new MarketplaceWebServiceOrders_Model_ListOrdersRequest(); $request->setSellerId(MERCHANT_ID); if ($user === 'amdd99') { // List all orders udpated after a certain date if (count(explode(" ", $start)) == 2 && count(explode(" ", $end)) == 2) { $request->setCreatedAfter(new DateTime($start, new DateTimeZone('UTC'))); $request->setCreatedBefore(new DateTime($end, new DateTimeZone('UTC'))); } else { $request->setCreatedAfter(new DateTime($start . ' 00:00:00', new DateTimeZone('UTC'))); $request->setCreatedBefore(new DateTime($end . ' 23:59:59', new DateTimeZone('UTC'))); } echo $start . '-----' . $end; // Set the marketplaces queried in this ListOrdersRequest $marketplaceIdList = new MarketplaceWebServiceOrders_Model_MarketplaceIdList(); $marketplaceIdList->setId(array(MARKETPLACE_ID)); $request->setMarketplaceId($marketplaceIdList); invokeListOrders($service, $request); } else { $start = date('Y-m-d H:i:s', strtotime('-0 hour', strtotime($start))); $end = date('Y-m-d H:i:s', strtotime('-0 hour', strtotime($end))); $marketplaceIdList = new MarketplaceWebServiceOrders_Model_MarketplaceIdList(); $marketplaceIdList->setId(array(MARKETPLACE_ID));