Amazon MWS PHP客户库库似乎不完整



我正在尝试开发使用ListMatchingProducts方法的应用程序。

最终结果将是一个应用程序,该应用程序搜索已经在内部库存数据库中的给定产品,并将结果呈现给用户,以便他们可以选择哪种亚马逊产品是其数据库中的产品的正确匹配。<<<<<<<<<<<<

我发现的php客户库库是在此处链接的。

我已经正确编辑了样本/.config.inc.php(我删除了评论并编辑了敏感信息(:

define('AWS_ACCESS_KEY_ID', '/*REDACTED BUT SET CORRECTLY*/');
define('AWS_SECRET_ACCESS_KEY', '/*REDACTED BUT SET CORRECTLY*/');
define('APPLICATION_NAME', 'STES_MWS_STOCK_SYNC_APP');
define('APPLICATION_VERSION', '0.1');
define ('MERCHANT_ID', '/*REDACTED BUT SET CORRECTLY*/');
define ('MARKETPLACE_ID', 'A1F83G8C2ARO7P'); // Marketplace ID for the UK

我还没有按照样本/list -matchingproductssampampame.php中的适当行:

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

执行此脚本,但是,yeilds以下消息(我已经编辑了一些XML响应(:

Caught Exception: Required parameter MarketplaceId not found
Response Status Code: 400
Error Code: MissingParameter
Error Type: Sender
Request ID: /*REDACTED UUID-LIKE STRING*/
XML: <?xml version="1.0"?>
<ErrorResponse xmlns="http://mws.amazonservices.com/schema/Products/2011-10-01"><Error><Type>Sender</Type><Code>MissingParameter</Code><Message>Required parameter MarketplaceId not found</Message><Detail/></Error><RequestID>/*REDACTED UUID-LIKE STRING*/</RequestID></ErrorResponse>
ResponseHeaderMetadata: RequestId: /*REDACTED UUID-LIKE STRING*/, ResponseContext: /*REDACTED LONG STRING*/, Timestamp: 2017-04-24T13:25:33.533Z, Quota Max: 719.0, Quota Remaining: 719.0, Quota Resets At: 2017-04-24T14:03:00.000Z

由于该客户端库从2011年起就已经存在,因此我发现很难相信这实际上是样本中的不正确代码,但我似乎找不到我出了问题的位置。通过代码扫描我找不到对示例/.config.inc.inc.php

MARKETPLACE_ID常数的引用

在我写自己的客户端库(我希望避免使用如此简单的应用程序(之前,我想知道:

  • 是否有人遇到过这个问题并将其修复(如果是,如何(?
  • 我找不到库的较新版本吗?
  • 有人可以建议一个替代库,如果这个库真的被打破了?

- 编辑 -

为了完整性,这是我要运行的代码 - 示例代码 - 减评论:

 require_once('.config.inc.php');
 $serviceUrl = "https://mws-eu.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);
 $request = new MarketplaceWebServiceProducts_Model_ListMatchingProductsRequest();
 $request->setSellerId(MERCHANT_ID);
 invokeListMatchingProducts($service, $request);
 function invokeListMatchingProducts(MarketplaceWebServiceProducts_Interface $service, $request)
  {
      try {
        $response = $service->ListMatchingProducts($request);
        echo ("Service Responsen");
        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");
     }
  }

坦率地说,"样本"似乎有点不naff。

查看代码,似乎您可能需要在构造函数中手动设置MarketPlaceId,或者通过关联数组或作为Setter方法调用。

例如。 $request->setMarketplaceId(MARKETPLACE_ID)

最新更新