微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在python中对MWS API的调用后问题我已经在便签本上验证了我的凭据我收到错误消息“签名不匹配”

如何解决在python中对MWS API的调用后问题我已经在便签本上验证了我的凭据我收到错误消息“签名不匹配”

这里是格式化时间戳的函数,它使用秘密密钥和“ string_to_sign”(在我的情况下为“ request_description”)计算签名。

def get_timestamp():
    """Return correctly formatted timestamp"""
    return strftime("%Y-%m-%dT%H:%M:%sZ",gmtime())

def calc_signature():
    """Calculate signature to send with request"""
    sig_data = method + '\n' + domain.replace('https://','').lower() + '\n' + URI + '\n' + request_description
    hmac_obj = hmac.new(codecs.encode(SECRET_KEY,'utf-8'),codecs.encode(sig_data,hashlib.sha256)
    # return  urllib.parse.quote(base64.b64encode(hmac_obj.digest()),safe='-_.~')
    return hmac_obj.digest()

Blockquote 这是我定义“ string_to_sign”的方式。我正在尝试从订单API部分访问“ ListOrders”。我已经使用暂存器验证了所有凭据,并且相同的API正在暂存器上工作。

SECRET_KEY = 'xxxxx'
AWS_ACCESS_KEY = 'xxxx'
SELLER_ID = 'xxxx'
MARKETPLACE_ID = 'xxxx'

Action = 'ListOrders'
SignatureMethod = 'HmacSHA256'
Signatureversion = '2'
Timestamp = get_timestamp()
Version = '2013-09-01'
CreatedAfter = '2020-09-02T23:00:57Z'
URI = '/Orders/2013-09-01'
domain = 'https://mws.amazonservices.in'
method = 'POST'

payload = {'AWSAccessKeyId': AWS_ACCESS_KEY,'Action': Action,'SellerId': SELLER_ID,'Signatureversion': Signatureversion,'Timestamp': Timestamp,'Version': Version,'SignatureMethod': SignatureMethod,'CreatedAfter': '2014-08-26T23:00:00Z','MarketplaceId.Id.1': MARKETPLACE_ID
          }

request_description = '&'.join(['%s=%s' % (k,urllib.parse.quote(payload[k],safe='-_.~').encode('utf-8')) for k in sorted(payload)])

sig = calc_signature()

payload['Signature']= sig;
print(payload)
encodedURL = urllib.parse.urlencode(payload)

Blockquote 使用以下命令创建我的帖子请求:

 url = '%s%s?%s' % (domain,URI,encodedURL)
print(url)
headers = {'Host': 'mws.amazonservices.in','Content-Type': 'text/xml','x-amazon-user-agent': 'python-requests/1.2.0 (Language=Python)'}

# response = request(method,url,headers=headers,data=payload)
response = requests.post(url,headers=headers)

Blockquote 我的帖子通话看起来像签名一样

https://mws.amazonservices.in/Orders/2013-09-01?AWSAccessKeyId=xxxx&Action=ListOrders&SellerId=xxxx&SignatureVersion=2&Timestamp=2020-09-10T09%3A24%3A58Z&Version=2013-09-01&SignatureMethod=HmacSHA256&CreatedAfter=2014-08-26T23%3A00%3A00Z&MarketplaceId.Id.1=xxxx&Signature=%FF%B6%13%84%0C1%7BLm%84%24%DE%296Kw%26G%03%25_vy%E4.%DFz%ACZ%C1u%14

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。