2015-08-26 177 views
0

任何人都知道如何使用亚马逊MWS api更新亚马逊产品价格。我想使用亚马逊mws api更新亚马逊产品价格

我已经通过MWS Scratchpad使用提交提交更新了我的产品,但我不知道如何将XML Feed发送到亚马逊。

+0

你需要添加关于你已经完成和你想要什么的细节。现在这个问题似乎太笼统了。 – JoeG

回答

5

雅阿亚马逊是与他们的API文档真的好洛尔.... 这可能有助于

$paths = array(
     get_include_path(), 
     realpath(__DIR__ . '/../AmazonAPI/FeedsAPI/src/'), 
    ); 
    set_include_path(implode(PATH_SEPARATOR, $paths)); 
    unset($paths); 

    //Includes appropriate config data for Amazon API credentials depending on POS associated with the product 
    $AWS_ACCESS_KEY_ID = $pos_data['azn_access_key']; 
    $AWS_SECRET_ACCESS_KEY = $pos_data['azn_secret_access_key']; 
    $APPLICATION_NAME = $pos_data['azn_app_name']; 
    $APPLICATION_VERSION = $pos_data['azn_app_version']; 
    $MERCHANT_ID = $pos_data['azn_merchant_id']; 
    $MARKETPLACE_ID = $pos_data['azn_marketplace_id']; 
    $MERCHANT_TOKEN = $pos_data['azn_merchant_token']; 
    $Service_url = $pos_data['azn_service_url']; 
    $currency = $pos_data['currency']; 

    $merchant_token = $MERCHANT_TOKEN; 
    $config = array(
     'ServiceURL' => $Service_url, 
     'ProxyHost' => null, 
     'ProxyPort' => -1, 
     'MaxErrorRetry' => 3); 

    $service = new MarketplaceWebService_Client($AWS_ACCESS_KEY_ID, $AWS_SECRET_ACCESS_KEY, $config, $APPLICATION_NAME, $APPLICATION_VERSION); 

    $feed = <<< EOD 
<?xml version="1.0" encoding="utf-8"?> 
<AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> 
<Header> 
<DocumentVersion>1.01</DocumentVersion> 
<MerchantIdentifier>$merchant_token</MerchantIdentifier> 
</Header> 
<MessageType>Price</MessageType> 
<Message> 
    <MessageID>1</MessageID> 
    <Price> 
    <SKU>$sku</SKU> 
    <StandardPrice currency="$currency">$new_price</StandardPrice> 
    </Price> 
</Message> 
</AmazonEnvelope> 
EOD; 

    echo "\nProduct Price Change Feed for FeedsAPI: \n$feed\n"; 
    $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_PRODUCT_PRICING_DATA_', 
     'FeedContent' => $feedHandle, 
     'PurgeAndReplace' => false, //Leave this PurgeAndReplace to false so that it want replace whole product in amazon inventory 
     'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true)) 
    ); 
    rewind($feedHandle); 

    $request = new MarketplaceWebService_Model_SubmitFeedRequest($parameters); 
    $return_feed = invokeSubmitFeed($service, $request); 

    function invokeSubmitFeed(MarketplaceWebService_Interface $service, $request) 
    { 
     $DATE_FORMAT = 'Y-m-d'; 
     try 
     { 
      $response = $service->submitFeed($request); 
      echo "\n============================================================================="; 
      echo "\nSubmitFeedResponse\n"; 

      if($response->isSetSubmitFeedResult()) 
      { 
       $submitFeedResult = $response->getSubmitFeedResult(); 
       if($submitFeedResult->isSetFeedSubmissionInfo()) 
       { 
        $feedSubmissionInfo = $submitFeedResult->getFeedSubmissionInfo(); 
        if($feedSubmissionInfo->isSetFeedSubmissionId()) 
        { 
         echo "FeedSubmissionId: " . $feedSubmissionInfo->getFeedSubmissionId() . "\n"; 
        } 
        if($feedSubmissionInfo->isSetFeedType()) 
        { 
         echo "FeedType: " . $feedSubmissionInfo->getFeedType() . "\n"; 
        } 
        if($feedSubmissionInfo->isSetSubmittedDate()) 
        { 
         echo "SubmittedDate: " . $feedSubmissionInfo->getSubmittedDate()->format($DATE_FORMAT) . "\n"; 
        } 
       } 
       echo "=============================================================================\n"; 
      } 
      if($feedSubmissionInfo->getFeedProcessingStatus() == "_SUBMITTED_") 
      { 
       return TRUE; 
      } 
     } 
     catch(MarketplaceWebService_Exception $ex) 
     { 
      echo "Caught Exception: " . $ex->getMessage() . "\n"; 
      echo "Response Status Code: " . $ex->getStatusCode() . "\n"; 
      if($ex->getStatusCode() == 503) 
      { 
       echo "\n===> WARNING: AMAZON MWS API REQUEST HAS BEEN THROTTLED <===.\n"; 
      } 
      echo "Error Code: " . $ex->getErrorCode() . "\n"; 
      echo "Error Type: " . $ex->getErrorType() . "\n"; 
      echo "Request ID: " . $ex->getRequestId() . "\n"; 
      echo "XML: " . $ex->getXML() . "\n"; 
     } 
    } 
+0

谢谢,它适用于我。 –

+1

如果您能批准我的回答并评分,请多谢,谢谢。 –

0

使用Feeds API,如果你下载客户端库之一,大部分的工作是为你做。他们目前提供PHP,C#和Java。插入您的凭证,然后修改您的用例的示例代码。