我正在使用亚马逊MWS PHP MarketplaceWebService PHP API将库存Feed数据提交给亚马逊.
https://docs.developer.amazonservices.com/en_US/feeds/Feeds_SubmitFeed.html
我可以通过卖家中央上传库存gui手动提交我生成的库存装载机平面文件而不会出错.
使用API中的SubmitFeed示例提交相同的平面文件我总是得到"不正确的模板类型错误".
我的身份验证和市场数据都是正确的.
Feed数据是$ _feed,我正在从api创建feed数据流
$feedHandle = fopen('php://temp', 'rw+');
fwrite($feedHandle, $_feed);
rewind($feedHandle);
Run Code Online (Sandbox Code Playgroud)
并使用亚马逊的示例代码提交它
$marketplaceIdArray = array("Id" => array(MARKETPLACE_ID));
$parameters = array (
'Merchant' => MERCHANT_ID,
'MarketplaceIdList' => $marketplaceIdArray,
'FeedType' => '_POST_FLAT_FILE_INVLOADER_DATA_',
'FeedContent' => $feedHandle,
'PurgeAndReplace' => false,
'ContentMd5' => base64_encode(md5(stream_get_contents($feedHandle), true)),
);
rewind($feedHandle);
$request = new \MarketplaceWebService_Model_SubmitFeedRequest($parameters);
$_result=$this->invokeSubmitFeed($service, $request);
Run Code Online (Sandbox Code Playgroud)
Feed提交没有错误,但是当我检查提交状态时,我总是从Amazon获得不正确的模板类型错误.
如果我将feed数据写入单独的文件,或者获取流的副本并将其写入测试文件,例如
// TEST copy submitted file to temp file
$copystream = fopen('/copystream.txt', 'w');
stream_copy_to_stream($streamHandle, $copystream);
Run Code Online (Sandbox Code Playgroud)
我可以确认亚马逊MWS API卷曲上传(在client.php中)使用的数据是正确的,因为我也可以通过卖家中心手动上传此测试文件(copystream.txt)而不会出错. …
我创建了自己的各种各样的复制品,但价格没有在亚马逊方面更新.
根据亚马逊提交后的响应,我的代码似乎运行得很好.我希望这里有人知道为什么它实际上没有更新价格.
这是提交的XML:
<?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>MERCHANTID</MerchantIdentifier>
</Header>
<MessageType>Price</MessageType>
<Message>
<MessageID>1</MessageID>
<Price>
<SKU>mysku</SKU>
<StandardPrice currency="USD">350.50</StandardPrice>
</Price>
</Message>
</AmazonEnvelope>
Run Code Online (Sandbox Code Playgroud)
继承人的回应:
GetFeedSubmissionResultResponse{}(ResponseMetadata: <Element_?/ResponseMetadata_0x7fee61f74248>, GetFeedSubmissionResultResult: <Element_?/GetFeedSubmissionResultResult_0x7fee61f74248>, AmazonEnvelope:
{'xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance', 'xsi:noNamespaceSchemaLocation': 'amzn-envelope.xsd'}, DocumentVersion: '1.02', MerchantIdentifier: 'M_EXAMPLE_1234', Header: '\n\t', MessageType: 'ProcessingReport', MessageID: '1', DocumentTransactionID: '4200000000', StatusCode: 'Complete', MessagesProcessed: '1', MessagesSuccessful: '1', MessagesWithError: '0', MessagesWithWarning: '0', ProcessingSummary: '\n\t\t\t', ProcessingReport: '\n\t\t', Message: '\n\t')
Run Code Online (Sandbox Code Playgroud)
我不知道在这个实例中显示我的代码是否会有所帮助,因为我从亚马逊获得了成功的回复.无论如何:
...
# Provide credentials.
conn = MWSConnection(
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
Merchant=AMZ_SELLER_ID
)
# Get the service resource
sqs …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个非常基本的网站,此时只会显示来自亚马逊市场的订单信息.
我需要知道如何安装和访问此API的信息.我觉得我已经尝试了一切.亚马逊没有提供足够的信息来实现这一目标.它们听起来好像需要5到6个简单的步骤,您可以访问您的信息; 这不是真的.
是否有关于MWS的详细教程?我需要尽可能多的信息.如果你可以帮助我,可能会概述实现这一目标所需的步骤,非常感谢!!!! 我把头发拉过来.再次感谢
数据:
<Relationships>
<ns2:VariationChild>
<Identifiers>
<MarketplaceASIN>
<MarketplaceId>ATVPDKIKX0DER</MarketplaceId>
<ASIN>B002KT3XQC</ASIN>
</MarketplaceASIN>
</Identifiers>
<ns2:Color>Black</ns2:Color>
<ns2:Size>Small</ns2:Size>
</ns2:VariationChild>
<ns2:VariationChild>
<Identifiers>
<MarketplaceASIN>
<MarketplaceId>ATVPDKIKX0DER</MarketplaceId>
<ASIN>B002KT3XQW</ASIN>
</MarketplaceASIN>
</Identifiers>
<ns2:Color>Black</ns2:Color>
<ns2:Size>Medium</ns2:Size>
</ns2:VariationChild>
</Relationships>
Run Code Online (Sandbox Code Playgroud)
代码:
$data = simplexml_load_string($response);
foreach($data->GetMatchingProductResult AS $GetMatchingProductResult){
$Product = $GetMatchingProductResult->Product;
$Relationships = $Product->Relationships;
foreach($Relationships->children('ns2', true)->VariationChild AS $VariationChild){
$Identifiers = $VariationChild->Identifiers;
$MarketplaceASIN = $Identifiers->MarketplaceASIN;
$MarketplaceId = $MarketplaceASIN->MarketplaceId;
$ASIN = $MarketplaceASIN->ASIN;
echo "$ASIN<br />";
}
}
Run Code Online (Sandbox Code Playgroud)
这回复了回归,但没有数据,所以它实际上循环遍历XML.但是,我尝试的任何内容都不会实际返回$ ASIN变量中的数据.这是因为命名空间还是simpleXML,还是我完全错过了其他东西?
编辑:尝试过其他方法
foreach($Relationships->children('http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd', true)->VariationChild AS $VariationChild){
$Identifiers = $VariationChild->Identifiers;
$MarketplaceASIN = $Identifiers->MarketplaceASIN;
$MarketplaceId = $MarketplaceASIN->MarketplaceId;
$ASIN = $MarketplaceASIN->ASIN;
echo "[$ASIN]<br />";
} …Run Code Online (Sandbox Code Playgroud) 有没有办法以Json或Xml格式而不是普通字符串获取亚马逊MWS请求的结果?
我的代码如下:
public function listOrders()
{
$request = "https://mws.amazonservices.it/Orders/2013-09-01?";
$request .= $this->getParameterString($this->parameters) . "&Signature=" . $this->calculateSignature($this->calculateStringToSign($this->parameters));
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, $request);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// grab URL and pass it to the browser
$a = curl_exec($ch);
echo $a;
return $a;
}
Run Code Online (Sandbox Code Playgroud)
当$ a显示时,我看到了这个(一个简单的字符串,几乎没有详细说明):
2016-11-21T22:59:59Z StandardOrder 2016-11-17T06:24:44Z 2016-11-17T18:47:54Z 1@marketplace.amazon.it 402-2385999-1452355 1 IT Std Domestic Shipped Amazon.it false 0 2016-11-25T22:59:59Z nico 2016-11-20T23:00:00Z EUR 199.00 false 2016-11-17T23:00:00Z APJ6JRA9NG5V4 MFN Other arezzo 3332260766 …Run Code Online (Sandbox Code Playgroud) 我已经下载了亚马逊的Marketplace SDK,我正在尝试样本目录中的一个样本.但是,每当我尝试时,我都会收到以下详细信息的异常:
Caught Exception: Internal Error
Response Status Code: 0
Error Code:
Error Type:
Request ID:
XML: RequestId: , ResponseContext: , Timestamp:
ResponseHeaderMetadata:
Run Code Online (Sandbox Code Playgroud)
我也使用SSL启用了CURL.我究竟做错了什么?
当我使用我的帐户api密钥时,我需要点击哪个端点和哪个API才能判断我是否可以销售给定的产品?
我在Python 2.7.6中使用boto 2.32.1.我遇到了boto的mws模块的list_orders函数的问题,以获取我的亚马逊订单的XML数据.
这是我的电话:
response = connection.list_orders(CreatedAfter='2014-08-26T05:53:44+00:00',
MarketplaceId=['XXXXXXXXXXXXX'])
Run Code Online (Sandbox Code Playgroud)
这是response(显然删除了个人信息)的价值
ListOrdersResponse{u'xmlns': u'https://mws.amazonservices.com/Orders/2013-09-01'}
(ListOrdersResult: ListOrdersResult{}
(CreatedBefore: u'2014-08-26T10:06:10Z', Orders: ^Orders^{}
(Order: [Order{}(***ORDER INFORMATION***)])),
ResponseMetadata: ^ResponseMetadata^{}(RequestId: u'xxxxxxxxxx'))
Run Code Online (Sandbox Code Playgroud)
这并不理想,因为我有另一个eBay销售模块,它与ebaysdk-python返回的XML一起使用.亚马逊的格式与eBay类似,所以如果我能够获得亚马逊返回的XML而不是上面的格式,那就太棒了.
我注意到,如果我使用boto.set_stream_logger('boto')它,它将打印返回的XML,所以也许我可以以某种方式利用它?
这就是我想要归还的内容:
<ListOrdersResponse xmlns="https://mws.amazonservices.com/Orders/2013-09-01">
<ListOrdersResult>
<Orders>
<Order>
***ORDER INFORMATION***
</Order>
</Orders>
<CreatedBefore>2014-08-26T10:18:59Z</CreatedBefore>
</ListOrdersResult>
<ResponseMetadata>
<RequestId>XXXXXXXXXXXXXXXXXXXXXXXXXXXXX</RequestId>
</ResponseMetadata>
</ListOrdersResponse>
Run Code Online (Sandbox Code Playgroud)
然后我可以使用Python的xml.etree.ElementTree来解析和处理数据.
有几天我试图通过php和亚马逊MWS在PHP上更新亚马逊的库存数量(不使用MWS API,因为在我看来已经过时了)
这是我的代码:
$param = array();
$param['AWSAccessKeyId'] = $this->CHIAVE_ACCESSO;
$param['Action'] = 'SubmitFeed';
$param['Merchant'] = $this->SELLER_ID;
$param['FeedType'] = '_POST_INVENTORY_AVAILABILITY_DATA_';
$param['SignatureMethod'] = 'HmacSHA256';
$param['SignatureVersion'] = '2';
$param['Timestamp'] = gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time());
$param['Version'] = '2009-01-01';
$params['MarketplaceId.Id.1'] = $this->MARCKETPLACE_IT;
$params['MarketplaceId.Id.2'] = $this->MARCKETPLACE_UK;
$params['MarketplaceId.Id.3'] = $this->MARCKETPLACE_ES;
$params['MarketplaceId.Id.4'] = $this->MARCKETPLACE_DE;
$params['MarketplaceId.Id.5'] = $this->MARCKETPLACE_FR;
$param['PurgeAndReplace'] = 'false';
foreach ($param as $key => $val) {
$key = str_replace("%7E", "~", rawurlencode($key));
$val = str_replace("%7E", "~", rawurlencode($val));
$url[] = "{$key}={$val}";
}
$amazon_feed = '<?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> …Run Code Online (Sandbox Code Playgroud) amazon-mws ×10
php ×6
curl ×3
xml ×2
amazon ×1
api ×1
boto ×1
django ×1
java ×1
marketplace ×1
python ×1
python-3.x ×1