Как подписать запрос к Amazon MWS в Python - PullRequest
0 голосов
/ 15 февраля 2020

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

...