php amzon SP-API,我们计算的请求签名与您提供的签名不匹配

ztmd8pv5  于 2022-12-02  发布在  PHP
关注(0)|答案(3)|浏览(235)

加密和上载源数据时出现错误
the document link :https://github.com/amzn/selling-partner-api-docs/blob/main/guides/use-case-guides/feeds-api-use-case-guide-2020-09-04.md#step-2-encrypt-and-upload-the-feed-data
我用php开发,编写者是composer require double-break/spapi-php

$feeder = new Feeder();
$feeder->uploadFeedDocument($docPayload, 'text/plain; charset=utf-8',
        //ROOT_PATH.'uploads/amz/'.$feedFileName
        'https://images-na.ssl-images-amazon.com/images/G/01/rainier/help/xsd/release_4_1/OrderAcknowledgement.xsd'
    );

加密和上载源数据时出现错误:

relj7zay

relj7zay1#

确保传递给createFeedDocument的内容类型与传递给Feeder::uploadFeedDocument的内容类型完全匹配。在我的例子中,我将text/tab-separated-values传递给前者,而将text/tab-separated-values; charset=UTF-8传递给后者(附加了字符集),并得到了您所描述的错误。我通过在两个示例中都传递text/tab-separated-values; charset=UTF-8来修复它。

46scxncf

46scxncf2#

我同意这个评论https://stackoverflow.com/a/67474344/12360781
但更详细的答案是,我们应该将这些头传递给PUT请求,当然,content-type应该与我们传递给CreateFeedDocument操作的相同。
{"Content-Type": "text/tab-separated-values; charset=UTF-8"}
这段代码在Ruby中对我很有效:
faraday_connection = Faraday::Connection.new(@url)
@response = faraday_connection.send(:put, nil, @data.to_json, { "Content-Type": "text/tab-separated-values; charset=UTF-8" })

h5qlskok

h5qlskok3#

我遇到了同样的问题,在花了三天时间寻找解决方案后,我终于找到了下面的解决方案,虽然我使用的是Github C# sdk,但错误是相同的。
我错过了两个重要的标题需要和后提供他们修复了我的问题。
下面是代码(C#)

restRequest.AddOrUpdateHeader("Content-Type", "application/json");
restRequest.AddOrUpdateHeader("User-Agent", "XXXX 2022");

祝你好运!

相关问题