0

我想为 Python 使用亚马逊的 sell-partner-api。我按照下面 url 的提要说明进行操作,但它使用 Java 示例编码:

https://github.com/amzn/ sell-partner-api-docs/blob/main/guides/use-case-guides/feeds-api-use-case-guide-2020-09-04.md#step- 2-加密并上传-feed-data

我想上传带有制表符分隔值的纯文本。这是我遵循的步骤:

第 1 步:创建提要文档(作品)

def createFeedDocument():
    payload={'contentType':"text/tab-separated-values; charset=iso-8859-1"}
    data = json.dumps(payload)
    res = requestAmazon(getToken(),canonical_uri='/feeds/2021-06-30/documents',method='POST',payload=data)
    url = res.get('url')
    document_id = res.get('feedDocumentId')
    return [document_id,url]

requestAmazon 是一个获取标头签名并发出这样的 POST 请求的函数

r = requests.post(request_url,data=payload,headers=headers)

响应步骤 1

{'feedDocumentId':'amzn1.tortuga.3.90f2647c-XXXXXXX','url':'https://tortuga-prod-eu.s3-eu-west-1.amazonaws.com/%2FNinetyDays/amzn1.tortuga。 3.90f2647c-XXXXXXXX?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210827T063456Z&X-Amz-SignedHeaders=content-type%3Bhost&X-Amz-Expires=300&X-Amz-Credential=XXXXXX&X-Amz-Signature=XXXXXX '}

第 2 步:构建提要

我从其他部门得到了文本生成器,所以我跳过了这一步。

第 3 步:上传 Feed 数据

def createFeed():
    feedDocumentId,url = createFeedDocument()
    with open('C:\\users\\XXXXX\\Desktop\\upload.txt', 'rb') as f:
        files = {'file':('upload.txt',f)} 
        response = requests.put(url,data={'feedDocumentId':feedDocumentId},files=files)
        return response.text

第 3 步响应:

<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>AKIAX2ZVOZFBN5LCTW7Y</AWSAccessKeyId><StringToSign>AWS4-HMAC-SHA256
20210827T063456Z
20210827/eu-west-1/s3/aws4_request
(hashed signature)</StringToSign><SignatureProvided>(Signature)c</SignatureProvided><StringToSignBytes>41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 0a 32 30 32 31 30 38 32 37 54 30 36 33 34 35 36 5a 0a 32 30 32 31 30 38 32 37 2f 65 75 2d 77 65 73 74 2d 31 2f 73 33 2f 61 77 73 34 5f 72 65 71 75 65 73 74 0a 34 36 63 66 34 39 65 64 64 35 61 31 36 65 36 38 39 32 62 63 38 64 36 34 64 33 36 64 66 30 39 33 37 30 61 30 31 62 32 31 64 36 61 32 39 34 39 35 63 38 66 38 62 62 37 34 61 62 32 39 36 62 66 30</StringToSignBytes><CanonicalRequest>PUT
//NinetyDays/amzn1.tortuga.XXXXXXX
X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=(CREDENTIALS)%2F20210827%2Feu-west-1%2Fs3%2Faws4_request&amp;X-Amz-Date=20210827T063456Z&amp;X-Amz-Expires=300&amp;X-Amz-SignedHeaders=content-type%3Bhost
content-type:multipart/form-data; boundary=6d6b09af0f54516fd96e3474bc9b28da
host:tortuga-prod-eu.s3-eu-west-1.amazonaws.com

content-type;host
UNSIGNED-PAYLOAD</CanonicalRequest><CanonicalRequestBytes>50 55 54 0a 2f 2f 4e 69 6e 65 74 79 44 61 79 73 2f 61 6d 7a 6e 31 2e 74 6f 72 74 75 67 61 2e 33 2e 39 30 66 32 36 34 37 63 2d 65 37 61 34 2d 34 62 34 62 2d 61 62 35 62 2d 64 38 36 39 31 39 33 39 32 61 61 35 2e 54 32 30 36 46 45 42 44 4b 34 32 54 4b 4f 0a 58 2d 41 6d 7a 2d 41 6c 67 6f 72 69 74 68 6d 3d 41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 26 58 2d 41 6d 7a 2d 43 72 65 64 65 6e 74 69 61 6c 3d 41 4b 49 41 58 32 5a 56 4f 5a 46 42 4e 35 4c 43 54 57 37 59 25 32 46 32 30 32 31 30 38 32 37 25 32 46 65 75 2d 77 65 73 74 2d 31 25 32 46 73 33 25 32 46 61 77 73 34 5f 72 65 71 75 65 73 74 26 58 2d 41 6d 7a 2d 44 61 74 65 3d 32 30 32 31 30 38 32 37 54 30 36 33 34 35 36 5a 26 58 2d 41 6d 7a 2d 45 78 70 69 72 65 73 3d 33 30 30 26 58 2d 41 6d 7a 2d 53 69 67 6e 65 64 48 65 61 64 65 72 73 3d 63 6f 6e 74 65 6e 74 2d 74 79 70 65 25 33 42 68 6f 73 74 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 6d 75 6c 74 69 70 61 72 74 2f 66 6f 72 6d 2d 64 61 74 61 3b 20 62 6f 75 6e 64 61 72 79 3d 36 64 36 62 30 39 61 66 30 66 35 34 35 31 36 66 64 39 36 65 33 34 37 34 62 63 39 62 32 38 64 61 0a 68 6f 73 74 3a 74 6f 72 74 75 67 61 2d 70 72 6f 64 2d 65 75 2e 73 33 2d 65 75 2d 77 65 73 74 2d 31 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 0a 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3b 68 6f 73 74 0a 55 4e 53 49 47 4e 45 44 2d 50 41 59 4c 4f 41 44</CanonicalRequestBytes><RequestId>Y5WW6SGQ0X9VXKVQ</RequestId><HostId>qIxlUro77n6JZNOqR9UM3VEtfWDi+i6liW7nG8cLezfhzNN0HXiXBWnwgBGSvQ3mVbiw0QJzxvg=</HostId></Error>


<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message><AWSAccessKeyId>AKIAX2ZVOZFBN5LCTW7Y</AWSAccessKeyId><StringToSign>AWS4-HMAC-SHA256
20210827T063524Z
20210827/eu-west-1/s3/aws4_request
(HASHED REQUESTS)</StringToSign><SignatureProvided>(SIGNATURE)</SignatureProvided><StringToSignBytes>41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 0a 32 30 32 31 30 38 32 37 54 30 36 33 35 32 34 5a 0a 32 30 32 31 30 38 32 37 2f 65 75 2d 77 65 73 74 2d 31 2f 73 33 2f 61 77 73 34 5f 72 65 71 75 65 73 74 0a 61 66 38 66 65 65 38 34 62 63 30 65 64 32 34 36 63 65 65 36 66 63 36 32 39 35 32 37 65 35 36 37 31 39 36 63 62 65 32 61 38 65 63 62 33 62 66 33 35 33 35 30 65 63 64 34 30 64 39 37 38 39 65 30</StringToSignBytes><CanonicalRequest>PUT
//NinetyDays/amzn1.tortuga.XXXXXXX
X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=(CREDENTIALS)%2F20210827%2Feu-west-1%2Fs3%2Faws4_request&amp;X-Amz-Date=20210827T063524Z&amp;X-Amz-Expires=300&amp;X-Amz-SignedHeaders=content-type%3Bhost
content-type:multipart/form-data; boundary=d71d844d9fb5f53939da8c2599dfb329
host:tortuga-prod-eu.s3-eu-west-1.amazonaws.com

content-type;host
UNSIGNED-PAYLOAD</CanonicalRequest><CanonicalRequestBytes>50 55 54 0a 2f 2f 4e 69 6e 65 74 79 44 61 79 73 2f 61 6d 7a 6e 31 2e 74 6f 72 74 75 67 61 2e 33 2e 32 62 39 35 33 39 37 36 2d 33 64 38 64 2d 34 34 66 65 2d 39 35 35 33 2d 32 31 64 62 65 35 32 65 34 62 36 65 2e 54 33 45 43 45 56 52 47 54 53 48 4c 59 39 0a 58 2d 41 6d 7a 2d 41 6c 67 6f 72 69 74 68 6d 3d 41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 26 58 2d 41 6d 7a 2d 43 72 65 64 65 6e 74 69 61 6c 3d 41 4b 49 41 58 32 5a 56 4f 5a 46 42 4e 35 4c 43 54 57 37 59 25 32 46 32 30 32 31 30 38 32 37 25 32 46 65 75 2d 77 65 73 74 2d 31 25 32 46 73 33 25 32 46 61 77 73 34 5f 72 65 71 75 65 73 74 26 58 2d 41 6d 7a 2d 44 61 74 65 3d 32 30 32 31 30 38 32 37 54 30 36 33 35 32 34 5a 26 58 2d 41 6d 7a 2d 45 78 70 69 72 65 73 3d 33 30 30 26 58 2d 41 6d 7a 2d 53 69 67 6e 65 64 48 65 61 64 65 72 73 3d 63 6f 6e 74 65 6e 74 2d 74 79 70 65 25 33 42 68 6f 73 74 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3a 6d 75 6c 74 69 70 61 72 74 2f 66 6f 72 6d 2d 64 61 74 61 3b 20 62 6f 75 6e 64 61 72 79 3d 64 37 31 64 38 34 34 64 39 66 62 35 66 35 33 39 33 39 64 61 38 63 32 35 39 39 64 66 62 33 32 39 0a 68 6f 73 74 3a 74 6f 72 74 75 67 61 2d 70 72 6f 64 2d 65 75 2e 73 33 2d 65 75 2d 77 65 73 74 2d 31 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 0a 0a 63 6f 6e 74 65 6e 74 2d 74 79 70 65 3b 68 6f 73 74 0a 55 4e 53 49 47 4e 45 44 2d 50 41 59 4c 4f 41 44</CanonicalRequestBytes><RequestId>HWWJ5HHZ93155V3M</RequestId><HostId>PwrBTmU4tcGziTLW1+twLK8rTn/b7jB2R5y4raJi95XcZrfCMxSYV5UeopGtAKAAtJyMwOve2Eo=</HostId></Error>

有没有人有同样的问题?谢谢。

4

0 回答 0