/** * 抓取一段时间内的订单 * @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; }
while ($interval_end <= $base_end) { $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;
* 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 Orders Action ***********************************************************************/ $request = new MarketplaceWebServiceOrders_Model_ListOrdersRequest(); $request->setSellerId(MERCHANT_ID); if ($user != 'amdd99') { // List all orders udpated after a certain date $request->setCreatedAfter(new DateTime($start . ' 00:00:00', new DateTimeZone('UTC'))); //$request->setCreatedBefore(new DateTime($end.' 23:59:59', new DateTimeZone('UTC'))); // 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('-16 hour', strtotime($start . ' 00:00:00'))); $end = date('Y-m-d H:i:s', strtotime('-16 hour', strtotime($end . date('H:i:s')))); $marketplaceIdList = new MarketplaceWebServiceOrders_Model_MarketplaceIdList(); $marketplaceIdList->setId(array(MARKETPLACE_ID)); $request->setMarketplaceId($marketplaceIdList); $i = 0; while (true) { if ($i == 0) {
* * 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 Orders Action ***********************************************************************/ $request = new MarketplaceWebServiceOrders_Model_ListOrdersRequest(); $request->setSellerId(MERCHANT_ID); // List all orders udpated after a certain date $request->setCreatedAfter(new DateTime('2011-01-01 12:00:00', new DateTimeZone('UTC'))); // Set the marketplaces queried in this ListOrdersRequest $marketplaceIdList = new MarketplaceWebServiceOrders_Model_MarketplaceIdList(); $marketplaceIdList->setId(array(MARKETPLACE_ID)); $request->setMarketplaceId($marketplaceIdList); // Set the order statuses for this ListOrdersRequest (optional) // $orderStatuses = new MarketplaceWebServiceOrders_Model_OrderStatusList(); // $orderStatuses->setStatus(array('Shipped')); // $request->setOrderStatus($orderStatuses); // Set the Fulfillment Channel for this ListOrdersRequest (optional) //$fulfillmentChannels = new MarketplaceWebServiceOrders_Model_FulfillmentChannelList(); //$fulfillmentChannels->setChannel(array('MFN')); //$request->setFulfillmentChannel($fulfillmentChannels); // @TODO: set request. Action can be passed as MarketplaceWebServiceOrders_Model_ListOrdersRequest // object or array of parameters invokeListOrders($service, $request);
public function OnActionListOrders($event) { $checkTime = date("Y-m-d H:i:s", strtotime($this->amazon_check_time)); $checkDate = date("Y-m-d", strtotime($this->amazon_check_time)); Yii::log("Checking for new orders since " . $checkTime, 'info', 'application.' . __CLASS__ . "." . __FUNCTION__); $request = new MarketplaceWebServiceOrders_Model_ListOrdersRequest(); $request->setSellerId($this->MerchantID); $marketplaceIdArray = array("Id" => array($this->MarketplaceID)); // List all orders updated after a certain date $request->setCreatedAfter(new DateTime($checkTime, new DateTimeZone(_xls_get_conf('TIMEZONE')))); // Set the marketplaces queried in this ListOrdersRequest $marketplaceIdList = new MarketplaceWebServiceOrders_Model_MarketplaceIdList(); $marketplaceIdList->setId(array($this->MarketplaceID)); $request->setMarketplaceId($marketplaceIdList); $config = array('ServiceURL' => $this->getMWSUrl() . "/Orders/" . $checkDate, 'ProxyHost' => null, 'ProxyPort' => -1, 'MaxErrorRetry' => 3); $service = new MarketplaceWebServiceOrders_Client($this->MWS_ACCESS_KEY_ID, $this->MWS_SECRET_ACCESS_KEY, $this->APPLICATION_NAME, $this->APPLICATION_VERSION, $config); $response = $this->invokeListOrders($service, $request); if ($response->isSetListOrdersResult()) { $this->parseListOrders($response); } return self::SUCCESS; }
/** * List all orders updated after a certain date * * @param string $date * @param string $orderStatus * @link http://docs.developer.amazonservices.com/en_US/orders/2013-09-01/Orders_ListOrders.html * @link https://mws.amazonservices.ca/Orders/%s?Action=listOrders&SellerId=1&CreatedAfter=2016-02-23T14%3A06%3A41%2B0000&OrderStatus.Status.1=Pending&MarketplaceId.Id.1=1&AWSAccessKeyId=12124654645746765756&Timestamp=2016-02-23T14%3A06%3A41.000Z&Version=2013-09-01&SignatureVersion=2&SignatureMethod=HmacSHA256&Signature=g4xOYeHF5f9oIH8RPv5DIyw0QklnZmVDv10cKG3KdP8%3D * @return \MarketplaceWebServiceOrders_Model_ListOrdersResponse */ public function getOrders($date = 'NOW', array $orderStatuses) { try { // ini list order request $this->request = new ListOrderRequest(); // set marketplace id $this->request->setMarketplaceId($this->merchantConfig['marketplaceId']); // set seller id $this->request->setSellerId($this->merchantConfig['merchantId']); // set create order's date $this->request->setCreatedAfter(new \DateTime($date, new \DateTimeZone('UTC'))); // set the order statuses $this->request->setOrderStatus($orderStatuses); return $this->orderClient->listOrders($this->request); } catch (\MarketplaceWebServiceOrders_Exception $e) { throw new InternalServerErrorException($e->getErrorMessage(), InternalServerErrorException::CODE); } /** * 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) // { // $response = $service->listOrders($request); // // var_dump($response); // exit; // 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(); // $orderList = $orders->getOrder(); // foreach ($orderList as $order) { // echo(" Order\n"); // if ($order->isSetAmazonOrderId()) // { // echo(" AmazonOrderId\n"); // echo(" " . $order->getAmazonOrderId() . "\n"); // } // if ($order->isSetSellerOrderId()) // { // echo(" SellerOrderId\n"); // echo(" " . $order->getSellerOrderId() . "\n"); // } // if ($order->isSetPurchaseDate()) // { // echo(" PurchaseDate\n"); // echo(" " . $order->getPurchaseDate() . "\n"); // } // if ($order->isSetLastUpdateDate()) // { // echo(" LastUpdateDate\n"); // echo(" " . $order->getLastUpdateDate() . "\n"); // } // if ($order->isSetOrderStatus()) // { // echo(" OrderStatus\n"); // echo(" " . $order->getOrderStatus() . "\n"); // } // if ($order->isSetFulfillmentChannel()) // { // echo(" FulfillmentChannel\n"); // echo(" " . $order->getFulfillmentChannel() . "\n"); // } // if ($order->isSetSalesChannel()) // { // echo(" SalesChannel\n"); // echo(" " . $order->getSalesChannel() . "\n"); // } // if ($order->isSetOrderChannel()) // { // echo(" OrderChannel\n"); // echo(" " . $order->getOrderChannel() . "\n"); // } // if ($order->isSetShipServiceLevel()) // { // echo(" ShipServiceLevel\n"); // echo(" " . $order->getShipServiceLevel() . "\n"); // } // if ($order->isSetShippingAddress()) { // echo(" ShippingAddress\n"); // $shippingAddress = $order->getShippingAddress(); // if ($shippingAddress->isSetName()) // { // echo(" Name\n"); // echo(" " . $shippingAddress->getName() . "\n"); // } // if ($shippingAddress->isSetAddressLine1()) // { // echo(" AddressLine1\n"); // echo(" " . $shippingAddress->getAddressLine1() . "\n"); // } // if ($shippingAddress->isSetAddressLine2()) // { // echo(" AddressLine2\n"); // echo(" " . $shippingAddress->getAddressLine2() . "\n"); // } // if ($shippingAddress->isSetAddressLine3()) // { // echo(" AddressLine3\n"); // echo(" " . $shippingAddress->getAddressLine3() . "\n"); // } // if ($shippingAddress->isSetCity()) // { // echo(" City\n"); // echo(" " . $shippingAddress->getCity() . "\n"); // } // if ($shippingAddress->isSetCounty()) // { // echo(" County\n"); // echo(" " . $shippingAddress->getCounty() . "\n"); // } // if ($shippingAddress->isSetDistrict()) // { // echo(" District\n"); // echo(" " . $shippingAddress->getDistrict() . "\n"); // } // if ($shippingAddress->isSetStateOrRegion()) // { // echo(" StateOrRegion\n"); // echo(" " . $shippingAddress->getStateOrRegion() . "\n"); // } // if ($shippingAddress->isSetPostalCode()) // { // echo(" PostalCode\n"); // echo(" " . $shippingAddress->getPostalCode() . "\n"); // } // if ($shippingAddress->isSetCountryCode()) // { // echo(" CountryCode\n"); // echo(" " . $shippingAddress->getCountryCode() . "\n"); // } // if ($shippingAddress->isSetPhone()) // { // echo(" Phone\n"); // echo(" " . $shippingAddress->getPhone() . "\n"); // } // } // if ($order->isSetOrderTotal()) { // echo(" OrderTotal\n"); // $orderTotal = $order->getOrderTotal(); // if ($orderTotal->isSetCurrencyCode()) // { // echo(" CurrencyCode\n"); // echo(" " . $orderTotal->getCurrencyCode() . "\n"); // } // if ($orderTotal->isSetAmount()) // { // echo(" Amount\n"); // echo(" " . $orderTotal->getAmount() . "\n"); // } // } // if ($order->isSetNumberOfItemsShipped()) // { // echo(" NumberOfItemsShipped\n"); // echo(" " . $order->getNumberOfItemsShipped() . "\n"); // } // if ($order->isSetNumberOfItemsUnshipped()) // { // echo(" NumberOfItemsUnshipped\n"); // echo(" " . $order->getNumberOfItemsUnshipped() . "\n"); // } // if ($order->isSetPaymentExecutionDetail()) { // echo(" PaymentExecutionDetail\n"); // $paymentExecutionDetail = $order->getPaymentExecutionDetail(); // $paymentExecutionDetailItemList = $paymentExecutionDetail->getPaymentExecutionDetailItem(); // foreach ($paymentExecutionDetailItemList as $paymentExecutionDetailItem) { // echo(" PaymentExecutionDetailItem\n"); // if ($paymentExecutionDetailItem->isSetPayment()) { // echo(" Payment\n"); // $payment = $paymentExecutionDetailItem->getPayment(); // if ($payment->isSetCurrencyCode()) // { // echo(" CurrencyCode\n"); // echo(" " . $payment->getCurrencyCode() . "\n"); // } // if ($payment->isSetAmount()) // { // echo(" Amount\n"); // echo(" " . $payment->getAmount() . "\n"); // } // } // if ($paymentExecutionDetailItem->isSetPaymentMethod()) // { // echo(" PaymentMethod\n"); // echo(" " . $paymentExecutionDetailItem->getPaymentMethod() . "\n"); // } // } // } // if ($order->isSetPaymentMethod()) // { // echo(" PaymentMethod\n"); // echo(" " . $order->getPaymentMethod() . "\n"); // } // if ($order->isSetMarketplaceId()) // { // echo(" MarketplaceId\n"); // echo(" " . $order->getMarketplaceId() . "\n"); // } // if ($order->isSetBuyerEmail()) // { // echo(" BuyerEmail\n"); // echo(" " . $order->getBuyerEmail() . "\n"); // } // if ($order->isSetBuyerName()) // { // echo(" BuyerName\n"); // echo(" " . $order->getBuyerName() . "\n"); // } // if ($order->isSetShipmentServiceLevelCategory()) // { // echo(" ShipmentServiceLevelCategory\n"); // echo(" " . $order->getShipmentServiceLevelCategory() . "\n"); // } // if ($order->isSetShippedByAmazonTFM()) // { // echo(" ShippedByAmazonTFM\n"); // echo(" " . $order->getShippedByAmazonTFM() . "\n"); // } // if ($order->isSetTFMShipmentStatus()) // { // echo(" TFMShipmentStatus\n"); // echo(" " . $order->getTFMShipmentStatus() . "\n"); // } // } // } // } // if ($response->isSetResponseMetadata()) { // echo(" ResponseMetadata\n"); // $responseMetadata = $response->getResponseMetadata(); // if ($responseMetadata->isSetRequestId()) // { // echo(" RequestId\n"); // echo(" " . $responseMetadata->getRequestId() . "\n"); // } // } // // 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"); // } // } // invokeListOrders($this->client, $this->request); exit; }
* * 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 */ $request = new MarketplaceWebServiceOrders_Model_ListOrdersRequest(); $request->setSellerId(MERCHANT_ID); $request->setMarketplaceId(MARKETPLACE_ID); $now = gmdate('Y-m-d\\TH:i:s\\Z', time() - MAX * 60 * 60); $orderStatuses = array('PartiallyShipped', 'Unshipped'); $request->setOrderStatus($orderStatuses); $request->setCreatedAfter($now); invokeListOrders($service, $request); /* * e-porto invoke List Orders for the last MAX hours. * 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 { $fp = fopen(FILENAME, "w"); $response = $service->ListOrders($request); fwrite($fp, iconv("UTF-8", ENCODEING, "NAME;ZUSATZ;STRASSE;NUMMER;PLZ;STADT;LAND;ADRESS_TYP"));