2016-12-06 8 views
1

Ich versuche, die Gebührenschätzung für eine bestimmte SKU mithilfe der Amazon MWS-API abzurufen. Ich habe die Beispieldateien und habe gelesen und gelesen, aber ich kann nicht herausfinden, wie man die SKU für die Einreichung spezifiziert.Einreichen einer Amazon MWS GetMyFeesEstimate API-Anfrage

Ich habe die Beispieldatei GetMyFeesEstimateSample.php gegen die Mock-Datei arbeiten, aber das ist die Antwortdatei, nicht wahr?

Hier ist, was ich habe, wie gebe ich den SellerSKU für die Anfrage?

<?php 
/******************************************************************************* 
* Copyright 2009-2016 Amazon Services. All Rights Reserved. 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* 
* You may not use this file except in compliance with the License. 
* You may obtain a copy of the License at: http://aws.amazon.com/apache2.0 
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
* CONDITIONS OF ANY KIND, either express or implied. See the License for the 
* specific language governing permissions and limitations under the License. 
******************************************************************************* 
* PHP Version 5 
* @category Amazon 
* @package Marketplace Web Service Products 
* @version 2011-10-01 
* Library Version: 2016-06-01 
* Generated: Fri Sep 16 11:49:32 PDT 2016 
*/ 

/** 
* Get My Fees Estimate Sample 
*/ 

require_once('.config.inc.php'); 

/************************************************************************ 
* Instantiate Implementation of MarketplaceWebServiceProducts 
* 
* 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 
***********************************************************************/ 
// More endpoints are listed in the MWS Developer Guide 
// North America: 
//$serviceUrl = "https://mws.amazonservices.com/Products/2011-10-01"; 
// Europe 
//$serviceUrl = "https://mws-eu.amazonservices.com/Products/2011-10-01"; 
// Japan 
//$serviceUrl = "https://mws.amazonservices.jp/Products/2011-10-01"; 
// China 
//$serviceUrl = "https://mws.amazonservices.com.cn/Products/2011-10-01"; 


$config = array (
    'ServiceURL' => $serviceUrl, 
    'ProxyHost' => null, 
    'ProxyPort' => -1, 
    'ProxyUsername' => null, 
    'ProxyPassword' => null, 
    'MaxErrorRetry' => 3, 
); 

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

/************************************************************************ 
* Uncomment to try out Mock Service that simulates MarketplaceWebServiceProducts 
* responses without calling MarketplaceWebServiceProducts service. 
* 
* Responses are loaded from local XML files. You can tweak XML files to 
* experiment with various outputs during development 
* 
* XML files available under MarketplaceWebServiceProducts/Mock tree 
* 
***********************************************************************/ 
// $service = new MarketplaceWebServiceProducts_Mock(); 

/************************************************************************ 
* Setup request parameters and uncomment invoke to try out 
* sample for Get My Fees Estimate Action 
***********************************************************************/ 
// @TODO: set request. Action can be passed as MarketplaceWebServiceProducts_Model_GetMyFeesEstimate 
$request = new MarketplaceWebServiceProducts_Model_GetMyFeesEstimateRequest(); 
$request->setSellerId(MERCHANT_ID); 
// object or array of parameters 
invokeGetMyFeesEstimate($service, $request); 

/** 
    * Get Get My Fees Estimate Action Sample 
    * Gets competitive pricing and related information for a product identified by 
    * the MarketplaceId and ASIN. 
    * 
    * @param MarketplaceWebServiceProducts_Interface $service instance of MarketplaceWebServiceProducts_Interface 
    * @param mixed $request MarketplaceWebServiceProducts_Model_GetMyFeesEstimate or array of parameters 
    */ 

    function invokeGetMyFeesEstimate(MarketplaceWebServiceProducts_Interface $service, $request) 
    { 
     try { 
     $response = $service->GetMyFeesEstimate($request); 

     echo ("Service Response\n"); 
     echo ("=============================================================================\n"); 

     $dom = new DOMDocument(); 
     $dom->loadXML($response->toXML()); 
     $dom->preserveWhiteSpace = false; 
     $dom->formatOutput = true; 
     echo $dom->saveXML(); 
     echo("ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n"); 

    } catch (MarketplaceWebServiceProducts_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"); 
    } 
} 

Ich fand das, aber ich habe immer noch keine Ahnung, was zu tun ist. Sie würden denken, dass die Amazon-Proben ein Beispiel ASIN oder SKU enthalten würden; https://docs.developer.amazonservices.com/en_US/products/Products_GetMyFeesEstimate.html

Get Fees

Antwort

1

Als Teil Ihrer Anfrage geben Sie ein FeesEstimateRequestList In dieser Liste können Sie die IdType specifiy, die ASIN oder SellerSKU sein kann. Dann geben Sie einen Wert in IdValue. Beachten Sie, dass weitere Elemente erforderlich sind. Überprüfen Sie die FeesEstimateRequest für diese Elemente aus hier https://docs.developer.amazonservices.com/en_US/products/Products_Datatypes.html#FeesEstimateRequest

Ihre POST über eine ASIN statt SellerSKU für IdType definiert hat. Ändere das einfach zu SellerSKU wie ich oben erwähnt habe und du wirst festgelegt.

Ich benutze die C# SDK, die Beispiele für all dies hat. Ich würde annehmen, dass die PHP SDK wäre die gleiche, aber vielleicht ist es so vollständig. In jedem Fall müssen Sie einen FeesEstimateRequestList in Ihrem POST einreichen, damit MWS weiß, wonach Sie suchen.

+0

Entschuldigung, der Screenshot stammt von der Amazon-Website, nicht meine Anfrage. Das ist der Teil, den ich zu verstehen versuche. Wie kann ich die Anfrage formulieren und einreichen? Ich werde mehrere Anfragen in einer Schleife ausführen. – Stuart

+0

Ich bin kein PHP-Typ, aber das Endergebnis ist, einen POST zu MWS zu erzeugen. Sie können es manuell codieren und das SDK von Amazon einreichen oder verwenden. Wenn Sie sich den obigen PHP-Code ansehen, müssen Sie die Zeile auskommentieren: "* @param mixed $ request MarketWebServiceProducts_Model_GetMyFeesEstimate oder Array von Parametern" und setzen Sie Ihre Parameter dort hinein. Es ist mir etwas fremd. Schauen Sie sich stackoverflow für Beispiele an. Vielleicht dieses: http://stackoverflow.com/questions/37416063/fetch-product-from-amazon-mws-using-product-api – ScottG

2

War diese gestern Programmierung und die Lösung herausgefunden, für weitere Informationen in Bezug auf die FeesEstimateRequestElements:

http://docs.developer.amazonservices.com/en_US/products/Products_Datatypes.html#FeesEstimateRequest

Info über den Betrieb GetMyFeesEstimate:

http://docs.developer.amazonservices.com/en_US/products/Products_GetMyFeesEstimate.html

GetMyFeesEstimateSample mit einigen Kommentaren, das funktioniert:

<?php 

require_once('.config.inc.php'); 


$serviceUrl = "https://mws.amazonservices.com/Products/2011-10-01"; 

$config = array (
    'ServiceURL' => $serviceUrl, 
    'ProxyHost' => null, 
    'ProxyPort' => -1, 
    'ProxyUsername' => null, 
    'ProxyPassword' => null, 
    'MaxErrorRetry' => 3, 
); 

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


//First we set up all the list variables 
$FeesEstimateRequest = new MarketplaceWebServiceProducts_Model_FeesEstimateRequest(); 
$FeesEstimateRequest->setMarketplaceId('ATVPDKIKX0DER'); // Amazon.com marketplace id 
$FeesEstimateRequest->setIdType('SellerSKU');    // IdType values: ASIN, SellerSKU, SellerSKU in your case 
$FeesEstimateRequest->setIdValue('XXXXXXXXXX');  // The value of the id you have entered 
$FeesEstimateRequest->setIdentifier('request1');   // A identifier for the item you have requested, this is for your own use 
$FeesEstimateRequest->setIsAmazonFulfilled(FALSE);  // Fullfilled by Amazon? true if the offer is fulfilled by Amazon.  

//To set up the $PriceToEstimateFees object we need two instances of the object MarketplaceWebServiceProducts_Model_MoneyType 
//@ set up for both cases: Listing Price and Shipping Price 
//New object MoneyType, setting up the currency and amount for listing price 
$MoneyTypeListingPrice = new MarketplaceWebServiceProducts_Model_MoneyType(); 
$MoneyTypeListingPrice->setCurrencyCode('USD'); // String, the currency code of the price : USD in this example for amazon.com marketplace 
$MoneyTypeListingPrice->setAmount('0.00');  // String, the price of the item 

//New object MoneyType, setting up the currency and amount for shipping price 
$MoneyTypeShipping = new MarketplaceWebServiceProducts_Model_MoneyType(); 
$MoneyTypeShipping->setCurrencyCode('USD'); // String, the currency code of the price : USD in this example for amazon.com marketplace 
$MoneyTypeShipping->setAmount('0.00');  // String, the price of the item 

//Setting up the prices: Listing Price and Shipping Price 
$PriceToEstimateFees = new MarketplaceWebServiceProducts_Model_PriceToEstimateFees(); 
$PriceToEstimateFees->setListingPrice($MoneyTypeListingPrice); 
$PriceToEstimateFees->setShipping($MoneyTypeShipping); 

//Finally setting up the $PriceToEstimateFees object to the $FeesEstimateRequest object 
$FeesEstimateRequest->setPriceToEstimateFees($PriceToEstimateFees); // The product price that the fee estimate is based on. 

//setting up the final required parameter in the $FeesEstimateRequestList object 
$FeesEstimateRequestList = new MarketplaceWebServiceProducts_Model_FeesEstimateRequestList(); 
$FeesEstimateRequestList->setFeesEstimateRequest($FeesEstimateRequest); 

// Last step : sending the $FeesEstimateRequestList object into $request 
$request = new MarketplaceWebServiceProducts_Model_GetMyFeesEstimateRequest(); 
$request->setSellerId(MERCHANT_ID); 
$request->setFeesEstimateRequestList($FeesEstimateRequestList); 
// object or array of parameters 
invokeGetMyFeesEstimate($service, $request); 



function invokeGetMyFeesEstimate(MarketplaceWebServiceProducts_Interface $service, $request) 
    { 
    try { 
    $response = $service->GetMyFeesEstimate($request); 

    echo ("Service Response\n"); 
    echo ("=============================================================================\n"); 

    $dom = new DOMDocument(); 
    $dom->loadXML($response->toXML()); 
    $dom->preserveWhiteSpace = false; 
    $dom->formatOutput = true; 
    echo $dom->saveXML(); 
    echo("ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n"); 

} catch (MarketplaceWebServiceProducts_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"); 
} 
} 
+0

War dies der Hilfe? –