发送请求到亚马逊MWS时SignatureDoesNotMatch

时间:2019-05-22 09:35:46

标签: javascript node.js reactjs amazon-web-services amazon-mws

我要发送GetReport请求以获取卖方帐户的报告。

但是,当我发送给我签名时,签名不匹配,并且我无法弄清问题所在并停留了几个小时,我尝试创建签名并检查请求的格式,但是没有得到通过,暂存器上的请求运行正常。这是我的以下代码

  check=(evt)=>{

    evt.preventDefault();

    let d=new Date();
    let reqDate=d.toISOString();

    let url='POST\nmws.amazonservices.com/\n'+'AWSAccessKeyId'=+accesskey+'&Action=GetReport'+'&Merchant='+sellerid
        +'&MWSAuthToken='+token+'&SignatureVersion=2'+'&Timestamp='+ reqDate +'&Version=2009-01-01'+'&SignatureMethod=HmacSHA256'+'&ReportId=14941942615018036';

    let signature=base64.encode(SHA256(url,secretkey));


    agent
        .post(`https://mws.amazonservices.com/`)
        .query({
            AWSAccessKeyId:accesskey,
            Action:'GetReport',
            Merchant:sellerid,
            MWSAuthToken:token,
            SignatureVersion:2,
            Timestamp:reqDate,
            Version:'2009-01-01',
            Signature:signature,
            SignatureMethod:'HmacSHA256',
            ReportId:'14941942615018036'
        })
        .then(res=>(this.setState({category:res.text},()=>{
            console.log('category==>',this.state.category)
        })))


};

请求

在执行上述步骤后,将发出以下请求:

          Request URL:https://mws.amazonservices.com/?AWSAccessKeyId=accesskey&Action=GetReport&Merchant=sellerid&MWSAuthToken=token&SignatureVersion=2&Timestamp=2019-05-22T09:19:15.213Z&Version=2009-01-01&Signature=ZWZiZjAxNGVlODZlYzc3NDlhYjljMmQ1NGI1NDNiZmY5N2VmMDIzY2YwMTdjNjgzYzkxM2MxMDllNzVjNzI1Mw==&SignatureMethod=HmacSHA256&ReportId=14941942615018036

当我在上面发送请求时,在上面提到的标头中生成了以下请求,在创建签名或在base64或其他代码中进行编码时是否存在任何问题,请提供建议

0 个答案:

没有答案