亚马逊卖家中心 - SP-API - 创建提要文档 - InvalidInput

Posted

技术标签:

【中文标题】亚马逊卖家中心 - SP-API - 创建提要文档 - InvalidInput【英文标题】:Amazon Seller Central - SP-API - Create a feed document - InvalidInput 【发布时间】:2021-04-26 18:43:01 【问题描述】:

尝试创建提要文档 (here),我收到 InvalidInput 错误代码。 身份验证效果很好(我尝试了其他端点并且它有效)所以我认为标头不是问题。

这是我的示例代码:

endpoint = 'https://sellingpartnerapi-eu.amazon.com/feeds/2020-09-04/documents'
body = 
    "contentType": "text/tab-separated-values; charset=UTF-8"

resp = requests.post(
    endpoint,
    auth=self.amazon_auth.auth, 
    headers=self.amazon_auth.headers,
    json=body
)
return resp

响应码:

'errors': ['code': 'InvalidInput',
   'message': 'Invalid Input',
   'details': '']

我还尝试使用不同的contentType 和字符集(如text/plain),但收到相同的错误代码!

这是Submit feed tutorial的第一步。

我正在尝试创建提要,以便获得 cartonIds 以下载我在亚马逊卖家中心创建的货件的标签。

任何提示,帮助都非常受欢迎!

谢谢!

【问题讨论】:

您好,请问您有解决办法吗? 嗨,我没有,为此花了太多时间——可能会根据开发优先级再次选择这个话题。现在我们正在解析导出的 csv 文件并完成工作。祝你好运! :) 【参考方案1】:

我通过以下方式解决了这个问题:

requests.post(data=json.dumps(body))

还要确保您也将正文传递给签名

【讨论】:

【参考方案2】:

我使用 RestSharp restRequest1.AddParameter(....);给了我和你一样的错误 Invalid Input 但下面的行给了我一个响应值 restRequest1.AddJsonBody(new contentType = "text/xml; charset=UTF-8" ); 它将obj序列化为json格式并添加到请求体中。

【讨论】:

你能告诉我你的请求是什么样子的吗?像所有标题、正文和网址一样打印我吗?我也尝试了 text/xml 但相同的响应。我用的是python,你用的是C#? 类型:- RequestBody application/json="contentType":"text/xml; charset=UTF-8" 类型:- httpHeader x-amz-access-token=Atza| XXXXX... x-amz-security-token=XXXXXXX X-Amz-Date=20210120T205817Z host= sellpartnerapi-XXXXX.amazon.com Authorization=AWS4-HMAC-SHA256 Credential=/20210120/XXXXX -west-1/execute-api/aws4_request, SignedHeaders=host;x-amz-access-token;x-amz-date;x-amz-security-token, Signature=XXX 我不认为这里的问题是内容类型,而是它是如何保存在 RequestBody 中的,你可以看到它是一个应用程序/json @JJohn 我用这种方式遇到了错误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【参考方案3】:

C# 中的这段代码 sn-p 对我有用,我成功上传了一个提要

我的上传方式:

private static bool UploadFile(byte[] encrypted, string url)

    bool isUploaded = false;

    var contentType = "text/tab-separated-values; charset=UTF-8";

    var parameter = new Parameter
    
        Name = contentType,
        Value = encrypted,
        Type = ParameterType.RequestBody
    ;

    var restRequest = new RestRequest(Method.PUT);
    restRequest.Parameters.Add(parameter);

    var restClient = new RestClient(url);
    var response = restClient.Execute(restRequest);

    isUploaded = response.StatusCode == System.Net.HttpStatusCode.OK;

    return isUploaded;

【讨论】:

您的回答确实没有解决有关 createfeeddocument 的最初问题。为了能够处理上传的文件,您需要创建 documentId 和 OP,就像我的情况有问题一样。虽然当我对 ORDERS 使用相同的授权时,我的访问被拒绝了。您能否提供更多代码来展示您如何从创建中获得验证文档 ID?另外,你用的是什么网址?

以上是关于亚马逊卖家中心 - SP-API - 创建提要文档 - InvalidInput的主要内容,如果未能解决你的问题,请参考以下文章

Amazon SP-API文档看着累?那就看这里!

使用 Python 访问亚马逊卖家中心

我可以从亚马逊按产品获取会话和页面浏览数据吗?

亚马逊 MWS 提交价格设置提要

关于amazon亚马逊开发人员资料申请,amazon亚马逊销售合作伙伴 API,amazon亚马逊SP-API申请,amazon亚马逊Selling Partner API申请详细指导

Unit_count 和 unit_count_type 似乎在亚马逊产品提要中是必需的,但在产品 XML 中放置在哪里?