MWSから商品の情報を抜き出そうとして、下記コードを書いたのですが、
import base64 import datetime import hashlib import hmac import urllib.parse import requests import six AMAZON_CREDENTIAL = { 'SELLER_ID': 'セラーID', 'ACCESS_KEY_ID': 'AWSアクセスキーID', 'ACCESS_SECRET': 'アクセスシークレット', } DOMAIN = 'mws.amazonservices.jp' ENDPOINT = '/Orders/2013-09-01' def datetime_encode(dt): return dt.strftime('%Y-%m-%dT%H:%M:%SZ') timestamp = datetime_encode(datetime.datetime.utcnow()) last_update_after = datetime_encode( datetime.datetime.utcnow() - datetime.timedelta(days=1)) data = { 'AWSAccessKeyId': AMAZON_CREDENTIAL['ACCESS_KEY_ID'], 'Action': 'ListOrders', 'MarketplaceId.Id.1': 'A1VC38T7YXB528', 'SellerId': AMAZON_CREDENTIAL['SELLER_ID'], 'SignatureMethod': 'HmacSHA256', 'SignatureVersion': '2', 'Timestamp': timestamp, 'Version': '2013-09-01', 'LastUpdatedAfter': last_update_after, } query_string = '&'.join('{}={}'.format( n, urllib.parse.quote(v, safe='')) for n, v in sorted(data.items())) canonical = "{}\n{}\n{}\n{}".format( 'POST', DOMAIN, ENDPOINT, query_string ) h = hmac.new( six.b(AMAZON_CREDENTIAL['ACCESS_SECRET']), six.b(canonical), hashlib.sha256) signature = urllib.parse.quote(base64.b64encode(h.digest()), safe='') url = 'https://{}{}?{}&Signature={}'.format( DOMAIN, ENDPOINT, query_string, signature) response = requests.post(url) print(response.content.decode())
下記エラーコードが出てしまいます。
<?xml version="1.0"?> <ErrorResponse xmlns="https://mws.amazonservices.com/Orders/2013-09-01"> <Error> <Type>Sender</Type> <Code>AccessDenied</Code> <Message>Access to Orders.ListOrders is denied</Message> </Error> <RequestID>d02af61c-e40a-478c-a6fc-f863b272333c</RequestID> </ErrorResponse>
エラーの意味も分かりません。
教えていただけないでしょうか。
ID,シークレットコードは間違っておりません。
あなたの回答
tips
プレビュー