2014-01-20 7 views
1

Я использую следующий API для извлечения деталей заказа от амазонкиAWS подпись не соответствует

https://mws.amazonservices.com/Orders/2011-01-01?AWSAccessKeyId=aces key&Action=ListOrderItems&SellerId=seller id&AmazonOrderId=order id&Signature=ZQLpf8vEXAMPLE0iC265pf18n0%3D&SignatureVersion=2&SignatureMethod=HmacSHA256&Timestamp=2014-10-04T18%3A12%3A21.687Z&Version=2011-01-01 

Но получить следующее сообщение об ошибке

<ErrorResponse> 
    <Error> 
      <Type>Sender</Type> 
      <Code>SignatureDoesNotMatch</Code> 
      <Message>The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.</Message> 
    </Error> 
    <RequestID>ba13b457-bd7c-4413-b138-b216f887ac68</RequestID> 
</ErrorResponse> 

Вот питон код для создания подписи

import hmac 

import urllib 

from base64 import b64encode 

from hashlib import sha256 

secret_key = '' 

to_sign = """""" 

signature=b64encode(hmac.new(secret_key, to_sign, sha256).digest()) 
request = "%s&Signature=%s" %(to_sign,urllib.quote(signature)) 

Можете ли вы рассказать мне, какие данные я должен предоставить в to_sign и что означает to_sign?

ответ

1

to_sign - это то, что вы хотите подписать (или хеш), в этом случае его запрос. Подпишите запрос с помощью секретного ключа, а затем отправьте весь запрос с этой подписью, чтобы Amazon мог работать, если запрос, который вы делаете, совпадает с тем, который вы подписали.

В случае, вы должны быть (за исключением использования соответствующих дат и т.д.):

to_sign = "GET https://mws.amazonservices.com/Orders/2011-01-01?AWSAccessKeyId=aces key&Action=ListOrderItems&SellerId=seller id&AmazonOrderId=order id&SignatureVersion=2&SignatureMethod=HmacSHA256&Timestamp=2014-10-04T18%3A12%3A21.687Z&Version=2011-01-01" 

Смотрите документацию здесь: http://docs.developer.amazonservices.com/en_US/dev_guide/DG_ClientLibraries.html#DG_OwnClientLibrary__Signatures

+0

Все еще такая же ошибка. Я не могу понять, где я не ошибаюсь. –

Смежные вопросы