我需要向MWS提交供稿。我尝试如下进行操作:
xml="""
<xml-feed>
"""
m = hashlib.md5()
m.update(bytes(xml, 'UTF-8'))
md=m.digest()
md=base64.b64encode(md).strip()
l=[
"AWSAccessKeyId=############",
"Action=SubmitFeed",
"FeedType=_POST_PRODUCT_DATA_",
"MWSAuthToken=amzn############################",
"MarketplaceId=A1PA6795UKMFR9",
"SellerId=A###########",
"SignatureMethod=HmacSHA256",
"SignatureVersion=2",
"Timestamp="+str(datetime.today()-timedelta(hours=1)).replace(" ","T")[:19].replace(':',r'%3A')+"Z",
"Version=2009-01-01"
,"ContentMD5Value="+str(md)[2:-3]+'%3D%3D'
]
sts="""POST
mws-eu.amazonservices.com
/Feeds/2009-01-01
"""
string=""
for i in l:
string+=i+"&"
sts+=i+"&"
string=string[:-1]
sts=sts[:-1]
signature = hmac.new(key=b"#####secret##key####",
msg=bytes(sts, 'UTF-8'),
digestmod=hashlib.sha256).digest()
signature = base64.b64encode(signature).strip()
r=requests.post("https://mws-eu.amazonservices.com/Feeds/2009-01-01?"+string+"&Signature="+(str(signature))[2:-2]+"%3D"
,data=xml)
但是Amazon向我返回了一个错误: 我们计算出的请求签名与您提供的签名不匹配。
非常感谢您的建议,以及如何修复程序。有趣的是,如果我对GetCompetitivePricingForASIN进行同样的操作,它将起作用。