//echo $file;exit; $feed = setFeedXml($dat); //print_r($feed);exit; error_reporting(-1); file_put_contents($file, $feed); file_put_contents($xmlFile, ''); $feedHandle = fopen($file, 'rw+'); // fopen('php://temp', 'rw+'); fwrite($feedHandle, $feed); rewind($feedHandle); //设置接口参数 $parameters = array('Merchant' => MERCHANT_ID, 'MarketplaceIdList' => $marketplaceIdArray, 'FeedType' => '_POST_ORDER_FULFILLMENT_DATA_', 'FeedContent' => $feedHandle, 'PurgeAndReplace' => false, 'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true))); rewind($feedHandle); //echo "==============="; echo "\n"; $request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters); $submissionId = invokeSubmitFeed($service, $request); //echo $submissionId."\r\n"; fclose($feedHandle); //***************end------- 上传跟踪号******************* sleep(120); //暂停120秒再查询$submissionId //***************begin----- 检测跟踪号状态******************* getFeedStatus($submissionId, $service, $xmlFile); while (true) { if (is_file($xmlFile)) { $requestXml = file_get_contents($xmlFile); $xmlResult = xml_to_array($requestXml); if (isset($xmlResult['ErrorResponse']['Error'])) { sleep(90); getFeedStatus($submissionId, $service, $xmlFile); } else {
$marketplaceIdArray = array("Id" => array(MARKETPLACE_ID)); $now = date(DATE_ATOM); //提供给amazon mws的必须是带时区的DATE_ATOM格式 $dat = array(array("AmazonOrderID" => "203-9224758-5617961", "FulfillmentDate" => $now, "CarrierName" => "Specify carrier", "ShippingMethod" => "Deutschland Post", "ShipperTrackingNumber" => "RG267410498DE")); //$tName = 'om_unshipped_order'; //$select = ''; //OmAvailableModel::getTNameList(); $feed = setFeedXml($dat); $feedHandle = fopen('php://temp', 'rw+'); fwrite($feedHandle, $feed); rewind($feedHandle); //设置接口参数 $parameters = array('Merchant' => MERCHANT_ID, 'MarketplaceIdList' => $marketplaceIdArray, 'FeedType' => '_POST_ORDER_FULFILLMENT_DATA_', 'FeedContent' => $feedHandle, 'PurgeAndReplace' => false, 'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true))); rewind($feedHandle); $request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters); invokeSubmitFeed($service, $request); fclose($feedHandle); //组装xml文件 function setFeedXml($ret) { $xmlHeader = '<?xml version="1.0" encoding="UTF-8"?> <AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Header> <DocumentVersion>1.01</DocumentVersion> <MerchantIdentifier>ListingsContentHandler</MerchantIdentifier> </Header> <MessageType>OrderFulfillment</MessageType>'; $xmlBody = ""; foreach ($ret as $k => $v) { $index = $k + 1; $xmlBody .= '<Message>
function markettoamazon($ebay_id) { global $MERCHANT_ID, $request, $service, $dbConn, $user, $nowtime; $start0 = strtotime("{$nowtime} -16 hours"); $shiptime = date('Y-m-d', $start0) . 'T' . date('H:i:s', $start0) . '-00:00'; echo 'ff' . $shiptime; die; $sq = "select * from ebay_order where ebay_id='{$ebay_id}'"; $sq = $dbConn->execute($sq); $sq = $dbConn->getResultArray($sq); $corder = $sq[0]['ebay_combine']; $corder = explode('#', $corder); $ebay_ordersn = $sq[0]['ebay_ordersn']; $ebay_tracknumber = $sq[0]['ebay_tracknumber']; $ebay_carrier = $sq[0]['ebay_carrier']; $account = $sq[0]['ebay_account']; $sql = "select * from ebay_account where ebay_user='******' and ebay_account='{$account}'"; $sql = $dbConn->execute($sql); $sql = $dbConn->getResultArray($sql); $token = $sql[0]['ebay_token']; // ebay toekn $MERCHANT_ID = $sql[0]['MERCHANT_ID']; // amazon key $MARKETPLACE_ID = $sql[0]['MARKETPLACE_ID']; // amazon key /* 检查订单项的资料 */ $sq = "select * from ebay_orderdetail where ebay_ordersn='{$ebay_ordersn}'"; $sq = $dbConn->execute($sq); $sq = $dbConn->getResultArray($sq); $Itemstr = ''; for ($i = 0; $i < count($sq); $i++) { $recordnumber = $sq[$i]['recordnumber']; $ebay_amount = $sq[$i]['ebay_amount']; $Itemstr = '<Item> <AmazonOrderItemCode>' . $recordnumber . '</AmazonOrderItemCode> <Quantity>' . $ebay_amount . '</Quantity> </Item>'; } /* 取得订单的对应的运送方式的值 */ $ss = "select * from ebay_carrier where name='{$ebay_carrier}' and ebay_user='******'"; $ss = $dbConn->execute($ss); $ss = $dbConn->getResultArray($ss); $ebay_carrier = $ss[0]['value']; if ($ebay_carrier == '') { echo $ebay_ordersn . ' 未设置运送方式, 不能上传更新<br>'; return; } $feed = <<<EOD <?xml version="1.0" encoding="UTF-8"?> <AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Header> <DocumentVersion>1.01</DocumentVersion> <MerchantIdentifier>{$MERCHANT_ID}</MerchantIdentifier> </Header> <MessageType>OrderFulfillment</MessageType> <Message> <MessageID>1</MessageID> <OperationType>Update</OperationType> <OrderFulfillment> <AmazonOrderID>{$ebay_ordersn}</AmazonOrderID> <FulfillmentDate>2012-08-03T04:59:59-07:00</FulfillmentDate> <FulfillmentData> <CarrierName>{$ebay_carrier}</CarrierName> <ShippingMethod>{$ebay_carrier}</ShippingMethod> <ShipperTrackingNumber>{$ebay_tracknumber}</ShipperTrackingNumber> </FulfillmentData> {$Itemstr} </OrderFulfillment> </Message> </AmazonEnvelope> EOD; echo $feed; die; $marketplaceIdArray = array("Id" => array($MARKETPLACE_ID)); $feedHandle = @fopen('php://temp', 'rw+'); fwrite($feedHandle, $feed); rewind($feedHandle); $parameters = array('Merchant' => $MERCHANT_ID, 'MarketplaceIdList' => $marketplaceIdArray, 'FeedType' => '_POST_ORDER_FULFILLMENT_DATA_', 'FeedContent' => $feedHandle, 'PurgeAndReplace' => false, 'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true))); rewind($feedHandle); $request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters); invokeSubmitFeed($service, $request); @fclose($feedHandle); }
/** * MwsfeedProductPrice method * * @return json */ public function mwsfeedProductPrice() { $this->autoRender = FALSE; $vender_id = 3; $conn = ConnectionManager::get('default'); $query = $conn->query('SELECT `secondaries`.* ,(CASE WHEN `item_discounts`.`discount` IS NULL THEN `brand_discounts`.`discount` ELSE `item_discounts`.`discount` END) as `final_discount` FROM `secondaries` LEFT JOIN brand_discounts ON (`brand_discounts`.`brand_code` = `secondaries`.`brand_code` AND `brand_discounts`.`vendor_id` = ' . $vender_id . ' and `brand_discounts`.`status` =1 AND (NOW() BETWEEN `brand_discounts`.`start_date` AND `brand_discounts`.`end_date`)) LEFT JOIN item_discounts ON ( `item_discounts`.`sku` = `secondaries`.`sku` AND `item_discounts`.`vendor_id` = ' . $vender_id . ' AND (NOW() BETWEEN `item_discounts`.`start_date` AND `item_discounts`.`end_date`)) INNER JOIN brands on (`brands`.`brand_code` = `secondaries`.`brand_code` AND `brands`.`status` =1) INNER JOIN stores on (`stores`.`store_code` = `secondaries`.`store_code` AND `stores`.`status` =1) WHERE `secondaries`.`stock` > `secondaries`.`layaway`'); $feedEthos = ""; foreach ($query as $key => $item) { if ($key > 10) { continue; } $sku = $item['sku']; $price = $item['price']; $discount = $item['final_discount']; if (!empty($discount)) { $finalPrice = round($price - $price * $discount / 100, 2); } else { $finalPrice = round($price, 2); } $feedEthos .= "<Message>\n <MessageID>" . $key . "</MessageID>\n <OperationType>Update</OperationType>\n <Price>\n <SKU>" . $sku . "</SKU>\n <StandardPrice currency='INR'>" . $finalPrice . "</StandardPrice>\t\t\t\n </Price>\n\t\t\t</Message>"; } /** * PHP Version 5 * * @category Amazon * @package MarketplaceWebService * @copyright Copyright 2009 Amazon Technologies, Inc. * @link http://aws.amazon.com * @license http://aws.amazon.com/apache2.0 Apache License, Version 2.0 * @version 2009-01-01 */ /******************************************************************************* * Marketplace Web Service PHP5 Library * Generated: Thu May 07 13:07:36 PDT 2009 * */ /** * Submit Feed Sample */ //include_once('.config.inc.php'); require_once ROOT . DS . 'vendor' . DS . 'brickfox' . DS . 'mws' . DS . 'src' . DS . 'MarketplaceWebService' . DS . 'Api' . DS . '.config.inc.php'; /************************************************************************ * Uncomment to configure the client instance. Configuration settings * are: * * - MWS endpoint URL * - Proxy host and port. * - MaxErrorRetry. ***********************************************************************/ // IMPORTANT: Uncomment the approiate line for the country you wish to // sell in: // United States: //$serviceUrl = "https://mws.amazonservices.com"; // United Kingdom //$serviceUrl = "https://mws.amazonservices.co.uk"; // Germany //$serviceUrl = "https://mws.amazonservices.de"; // France //$serviceUrl = "https://mws.amazonservices.fr"; // Italy //$serviceUrl = "https://mws.amazonservices.it"; // Japan //$serviceUrl = "https://mws.amazonservices.jp"; // China //$serviceUrl = "https://mws.amazonservices.com.cn"; // Canada //$serviceUrl = "https://mws.amazonservices.ca"; // India $serviceUrl = "https://mws.amazonservices.in"; $config = array('ServiceURL' => $serviceUrl, 'ProxyHost' => null, 'ProxyPort' => -1, 'MaxErrorRetry' => 3); /************************************************************************ * Instantiate Implementation of MarketplaceWebService * * AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY constants * are defined in the .config.inc.php located in the same * directory as this sample ***********************************************************************/ $service = new MarketplaceWebService_Client(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, $config, APPLICATION_NAME, APPLICATION_VERSION); /************************************************************************ * Uncomment to try out Mock Service that simulates MarketplaceWebService * responses without calling MarketplaceWebService service. * * Responses are loaded from local XML files. You can tweak XML files to * experiment with various outputs during development * * XML files available under MarketplaceWebService/Mock tree * ***********************************************************************/ // $service = new MarketplaceWebService_Mock(); /************************************************************************ * Setup request parameters and uncomment invoke to try out * sample for Submit Feed Action ***********************************************************************/ // @TODO: set request. Action can be passed as MarketplaceWebService_Model_SubmitFeedRequest // object or array of parameters // Note that PHP memory streams have a default limit of 2M before switching to disk. While you // can set the limit higher to accomidate your feed in memory, it's recommended that you store // your feed on disk and use traditional file streams to submit your feeds. For conciseness, this // examples uses a memory stream. $feed = '<?xml version="1.0" encoding="UTF-8"?> <AmazonEnvelope xsi:noNamespaceSchemaLocation="amzn-envelope.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Header> <DocumentVersion>1.01</DocumentVersion> <MerchantIdentifier>A21TJRUUN4KGV</MerchantIdentifier> </Header> <MessageType>Price</MessageType> ' . $feedEthos . ' </AmazonEnvelope>'; // Constructing the MarketplaceId array which will be passed in as the the MarketplaceIdList // parameter to the SubmitFeedRequest object. //$marketplaceIdArray = array("Id" => array('<Marketplace_Id_1>','<Marketplace_Id_2>')); $marketplaceIdArray = array("Id" => array('A21TJRUUN4KGV')); // MWS request objects can be constructed two ways: either passing an array containing the // required request parameters into the request constructor, or by individually setting the request // parameters via setter methods. // Uncomment one of the methods below. /********* Begin Comment Block *********/ $feedHandle = @fopen('php://temp', 'rw+'); fwrite($feedHandle, $feed); rewind($feedHandle); $parameters = array('Merchant' => 'A2NO191O6JIY8M', 'MarketplaceIdList' => $marketplaceIdArray, 'FeedType' => '_POST_PRODUCT_PRICING_DATA_', 'FeedContent' => $feedHandle, 'PurgeAndReplace' => false, 'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true)), 'MWSAuthToken' => 'M_ETHOSWATCH_4685999'); rewind($feedHandle); $request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters); /********* End Comment Block *********/ /********* Begin Comment Block *********/ //$feedHandle = @fopen('php://memory', 'rw+'); //fwrite($feedHandle, $feed); //rewind($feedHandle); //$request = new MarketplaceWebService_Model_SubmitFeedRequest(); //$request->setMerchant(MERCHANT_ID); //$request->setMarketplaceIdList($marketplaceIdArray); //$request->setFeedType('_POST_PRODUCT_DATA_'); //$request->setContentMd5(base64_encode(md5(stream_get_contents($feedHandle), true))); //rewind($feedHandle); //$request->setPurgeAndReplace(false); //$request->setFeedContent($feedHandle); //$request->setMWSAuthToken('<MWS Auth Token>'); // Optional //rewind($feedHandle); /********* End Comment Block *********/ echo '<pre>'; print_r($request); print_r($service); die; invokeSubmitFeed($service, $request); //@fclose($feedHandle); /** * Submit Feed Action Sample * Uploads a file for processing together with the necessary * metadata to process the file, such as which type of feed it is. * PurgeAndReplace if true means that your existing e.g. inventory is * wiped out and replace with the contents of this feed - use with * caution (the default is false). * * @param MarketplaceWebService_Interface $service instance of MarketplaceWebService_Interface * @param mixed $request MarketplaceWebService_Model_SubmitFeed or array of parameters */ function invokeSubmitFeed(MarketplaceWebService_Interface $service, $request) { try { $response = $service->submitFeed($request); echo "Service Response\n"; echo "=============================================================================\n"; echo " SubmitFeedResponse\n"; if ($response->isSetSubmitFeedResult()) { echo " SubmitFeedResult\n"; $submitFeedResult = $response->getSubmitFeedResult(); if ($submitFeedResult->isSetFeedSubmissionInfo()) { echo " FeedSubmissionInfo\n"; $feedSubmissionInfo = $submitFeedResult->getFeedSubmissionInfo(); if ($feedSubmissionInfo->isSetFeedSubmissionId()) { echo " FeedSubmissionId\n"; echo " " . $feedSubmissionInfo->getFeedSubmissionId() . "\n"; } if ($feedSubmissionInfo->isSetFeedType()) { echo " FeedType\n"; echo " " . $feedSubmissionInfo->getFeedType() . "\n"; } if ($feedSubmissionInfo->isSetSubmittedDate()) { echo " SubmittedDate\n"; echo " " . $feedSubmissionInfo->getSubmittedDate()->format(DATE_FORMAT) . "\n"; } if ($feedSubmissionInfo->isSetFeedProcessingStatus()) { echo " FeedProcessingStatus\n"; echo " " . $feedSubmissionInfo->getFeedProcessingStatus() . "\n"; } if ($feedSubmissionInfo->isSetStartedProcessingDate()) { echo " StartedProcessingDate\n"; echo " " . $feedSubmissionInfo->getStartedProcessingDate()->format(DATE_FORMAT) . "\n"; } if ($feedSubmissionInfo->isSetCompletedProcessingDate()) { echo " CompletedProcessingDate\n"; echo " " . $feedSubmissionInfo->getCompletedProcessingDate()->format(DATE_FORMAT) . "\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 (MarketplaceWebService_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"; } } }