C#SP-API给出了getReportDocument的签名错误,但它对其他方法也适用



我使用的是C#Amazon SP-API库,我已经使用swagger codegen转换了C#包装器类,所有这些都与Pricing以及Reports API中的一些功能配合良好。

但当我尝试调用getReportDocument时,它给出了AWS签名不匹配的错误。

https://github.com/amzn/selling-partner-api-docs/blob/main/references/reports-api/reports_2020-09-04.md#getreportdocument

如果您可以确认只有在使用亚马逊的情况下,通过GetOrder、GetReport等id调用单个项目时才会出现问题。亚马逊提供的SellingPartnerAPIAA.csproj用于签名,很可能AWSSigV4Signer.CreateCanonicalRequest方法使用段占位符而不是id本身来签名url。

例如"/reports/2021-06-30/documents/{reportDocumentId}";而不是"/reports/2021-06-30/documents/0356cf79-b8b0-426-b4b9-0ee058ea5760";一种可能的解决方案是解析url";"手工";调用ExtractCanonicalURIParameters之前

foreach(var par in restRequest.Parameters)
{
if(restRequest.Resource.Contains($"{{{par.Name}}}"))
{
restRequest.Resource = restRequest.Resource.Replace($"{{{par.Name}}}", par.Value.ToString());
}
}
//CanonicalURI
canonicalizedRequest.AppendFormat("{0}n", AwsSignerHelper.ExtractCanonicalURIParameters(restRequest.Resource));

相关内容

最新更新