Мне нужно отправить фид в 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, это сработает.