微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

亚马逊 MWS API 与 R 的集成:SignatureDoesNotMatch

如何解决亚马逊 MWS API 与 R 的集成:SignatureDoesNotMatch

使用此代码(出于安全问题,我已删除 ID 和密钥 - 它们已正确输入)。我不确定出了什么问题。请帮忙。

我正在使用 R 并尝试调用 RequestReport API (http://docs.developer.amazonservices.com/en_US/reports/Reports_RequestReport.html)。所以请仅在 R 脚本中提出解决方案。

base.html.string <- "https://mws.amazonservices.com/Reports/2009-01-01?"
SellerID <- 'xxxxxxxx'
MarketplaceID <- 'xxxxxxxxxxxxxx'
AWSAccessKeyId <- 'xxxxxxxxxxxxxxxx'
AWSsecretkey <- 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' 
ActionType <- 'RequestReport'
version.request <- '2009-01-01'
ReportType <- '_GET_FLAT_FILE_ACTIONABLE_ORDER_DATA_'
pb.txt <- Sys.time()
pb.date <- as.POSIXct(pb.txt,tz = Sys.timezone)
Timestamp <- strtrim(format(pb.date,tz = "GMT",usetz = FALSE,"%Y-%m-%dT%H:%M:%sZ"),24)
str = paste('POST\nmws.amazonservices.com\n/\n','AWSAccessKeyId=',AWSAccessKeyId,'&Action=',ActionType,'&Merchant=',SellerID,'&ReportType=',ReportType,'&SignatureMethod=HmacSHA256','&Signatureversion=2','&Timestamp=',gsub('%2E','.',gsub('%2D','-',curlEscape(Timestamp))),'&Version=',version.request,sep = '')
Signature <- curlEscape(base64(hmac(enc2utf8(AWSsecretkey),enc2utf8(str),algo = 'sha256',serialize = FALSE,raw = TRUE)))
AmazonURL <- paste(base.html.string,'&Signature=',Signature,sep = '')
AmazonResult <- getURL(AmazonURL)
AmazonResult

这是我得到的回复

<?xml version=\"1.0\"?>\n<ErrorResponse xmlns=\"http://mws.amazonaws.com/doc/2009-01-01/\">\n  <Error>\n    <Type>Sender</Type>\n    <Code>SignatureDoesNotMatch</Code>\n    <Message>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.</Message>\n  </Error>\n  <RequestID>fa1f2abf-3acf-435b-b98d-7377e778f53c</RequestID>\n</ErrorResponse>\n

解决方法

解决了。菜鸟失误。我使用了 getURL(url) 而不是 POST(url)。

其次,base.html.string 是“https://mws.amazonservices.com/?”而不是“https://mws.amazonservices.com/Reports/2009-01-01?”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。