亚马逊MWS API中的签名错误

时间:2016-11-18 13:18:28

标签: node.js meteor amazon-mws

我正在尝试点击亚马逊MWS API的SubmitFeed API,但每当我尝试对API进行HTTP调用时,它都会在服务器上显示错误“Signature Mismatch”。 注意:首先,我尝试在没有Content MD5值和文件的情况下点击API。

var AWSAccessKeyId = "<AWSAccessKeyId>",
  Action = "SubmitFeed",
  MarketplaceId = "<MarketplaceId>",
  SellerId = "<SellerId>",
  SignatureMethod = "HmacSHA256",
  SignatureVersion = "2",
  Timestamp = new Date().toISOString(),
  Version = "2009-01-01",
  FeedType = "_POST_INVENTORY_AVAILABILITY_DATA_",
  ContentMD5Value = "",
  Signature = "",
  SecretKey = "<SecretKey>";

var queryString = "AWSAccessKeyId=" + AWSAccessKeyId + "&Action=" + Action + "&ContentMD5Value=" + ContentMD5Value + "&FeedType=" + FeedType + "&MarketplaceIdList.Id.1=" + MarketplaceId + "&Merchant=" + SellerId + "&PurgeAndReplace=false" + "&SignatureMethod=" + SignatureMethod + "&SignatureVersion=2" + "&Timestamp=" + Timestamp + "&Version=" + Version;
var StringToSign = "POST" + "\n" + "mws.amazonservices.com" + "\n" + "/" + "\n" + queryString;

Signature = crypto.createHmac('sha256', SecretKey).update(StringToSign).digest('base64');

request({
  url: 'https://mws.amazonservices.com/Feeds/2009-01-01/',
  qs: {
    AWSAccessKeyId: AWSAccessKeyId,
    Action: Action,
    FeedType: FeedType,
    'MarketplaceIdList.Id.1': MarketplaceId,
    Merchant: SellerId,
    PurgeAndReplace: false,
    SignatureMethod: SignatureMethod,
    SignatureVersion: 2,
    Timestamp: Timestamp1,
    Version: Version,
    Signature: Signature
  },
  method: 'POST',
  headers: {
    'Content-Type': 'text/txt; charset=iso-8859-1',
    'x-amazon-user-agent': 'DIApp/1.0 (Language=Javascript)'
  }
}, function(error, response, body) {
  if (error) {
    console.log(error);
  } else {
    console.log('-----------Status Code-------------');
    console.log(response.statusCode);
    console.log('-----------Status Code-------------');
    console.log('-----------BODY-------------');
    console.log(body);
    console.log('-----------BODY-------------');
  }
});

0 个答案:

没有答案