· 7 years ago · Feb 19, 2018, 02:44 PM
1def make_update_feed(host, seller_id, mws_auth_token, aws_access_key_id, secret_key, xml):
2 date_now = dt.utcnow().replace(microsecond=0).isoformat() + "Z"
3 xml_md5_b64 = md5_b64_hash(xml)
4 timestamp = urllib.quote_plus(date_now)
5 params = "AWSAccessKeyId={0}&Action=SubmitFeed&ContentMD5Value={1}&FeedType=_POST_INVENTORY_AVAILABILITY_DATA_&MWSAuthToken={2}&Merchant={3}&PurgeAndReplace=false&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp={4}&Version=2009-01-01".format(aws_access_key_id,urllib.quote_plus(xml_md5_b64),mws_auth_token,seller_id,timestamp)
6 string_2_sign = "POSTn{0}n/n{1}".format(host,params)
7 signature = hmac_sha256_b64(string_2_sign, secret_key)
8 params_req = {
9 "AWSAccessKeyId": urllib.quote_plus(aws_access_key_id),
10 "Action": "SubmitFeed",
11 "ContentMD5Value": urllib.quote_plus(xml_md5_b64),
12 "FeedType": "_POST_INVENTORY_AVAILABILITY_DATA_",
13 "MWSAuthToken": urllib.quote_plus(mws_auth_token),
14 "Merchant": urllib.quote_plus(seller_id),
15 "PurgeAndReplace": False,
16 "SignatureMethod": "HmacSHA256",
17 "SignatureVersion": 2,
18 "Timestamp": timestamp,
19 "Version": "2009-01-01",
20 "Signature": urllib.quote_plus(signature),
21 }
22
23 headers = {
24 'Host': urllib.quote_plus(host),
25 'Content-Type': "text/xml",
26 "x-amazon-user-agent": "MyPythonApp/1.0 (Language=Python)"
27 }
28
29 data_xml = {
30 'FeedContent': xml
31 }
32 url = "https://%s" % host
33 r = requests.post(url, params=params_req, headers=headers,data=data_xml)
34 return r
35
36<?xml version="1.0"?>
37<ErrorResponse xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
38 <Error>
39 <Type>Sender</Type>
40 <Code>InvalidParameterValue</Code>
41 <Message>Timestamp 2018-02-19T14%3A30%3A50Z must be in ISO8601 format</Message>
42 </Error>
43 <RequestID>7c8631e4-8d61-4f46-9256-af0130028d96</RequestID>
44</ErrorResponse>