我知道这个问题并不新鲜,但我得到的所有解决方案都是在PHP中,或者我的问题与它们不同.
我正在使用MWS Feed API提交价格和数量更新的平面文件,并始终收到以下错误:
您为Feed传递的Content-MD5 HTTP标头与我们为您的Feed计算的Content-MD5不匹配
我想在这里问3个问题: -
ContentMD5Value参数是doc中给出的可选参数,但如果我没有传递,那么它会说你必须输入ContentMD5Value.
正如ContentFeed我们给予亚马逊的doc那样.Amazon contentMD5为该文件创建,然后将该contentMD5值与contentMD5我们发送给Amazon 的值进行比较.
如果两者都匹配则OK,否则会抛出错误.但是如果假设我不发送文件,那么同样的错误也会与MD5不匹配.怎么可能?他们在为哪个文件计算MD5?因为我还没有发送文件ContentFeed.
如果我发送contentMD5标题以及参数并发送ContentFeed正文,我仍然会收到错误.
注意: - 我contentMD5使用请求模块发送标题以及表单中的参数,并使用它计算签名然后传入contentFeed正文.
我正在使用JavaScript(Meteor),我使用crpyto模块计算md5 .
首先,我认为我的md5是错的,但后来我尝试了一个在线网站,它会给我一个文件md5的md5.
对于我的文件是:
MD5值:d90e9cfde58aeba7ea7385b6d77a1f1e
Base64Encodevalue:ZDkwZTljZmRlNThhZWJhN2VhNzM4NWI2ZDc3YTFmMWU =
我从价格和数量更新下载的平面文件: -
https://sellercentral.amazon.in/gp/help/13461?ie=UTF8&Version=1&entries=0&
我在计算签名时也通过给ContentMD5Value出来计算签名.
的FeedType: '_ POST_FLAT_FILE_PRICEANDQUANTITYONLY_UPDATE_DATA_'
因为,我读了文档,我在标题中传递了MD5标题,并作为参数发送.
亚马逊医生说:
以前,亚马逊MWS接受MD5哈希作为Content-MD5标头而不是参数.将其作为参数传递可确保MD5值是方法签名的一部分,从而防止网络上的任何人篡改Feed内容.
无论是否包含ContentMD5Value参数,亚马逊MWS仍将接受Content-MD5标头.如果使用标头和参数,并且它们不匹配,您将收到InvalidParameterValue错误.
我正在使用request模块进行http请求.
我正在以请求模块的形式传递所有必需的密钥,卖方ID等,并传递FeedContent正文.
我尝试发送文件如下:
submitFeed的方法是: -
submitFeed : function(){
console.log("submitFeedAPI running..");
app = mwsReport({auth: {sellerId:'A4TUFSCXD64V3', accessKeyId:'AKIAJBU3FTBCJUIZWF', secretKey:'Eug7ZbaLljtrnGKGFT/DTH23HJ' }, marketplace: 'IN'});
app.submitFeedsAPI({FeedType:'_POST_FLAT_FILE_PRICEANDQUANTITYONLY_UPDATE_DATA_'},Meteor.bindEnvironment(function(err,response){ …Run Code Online (Sandbox Code Playgroud) 我正在使用亚马逊MWS订单API来获取订单,因此我点击了ListOrder API,它给出了订单详细信息,其状态为
待处理,已发货,未发货,取消
我收到了orderStatus发货的买家信息,未发货.如Amazon orderList文档中所述: -
对于未发货,Partiallyshipped,Shipped orderStatus,我们获得买方的以下信息,即: - BuyerEmail,BuyerName,Shipping Address,OrderTotal.
但我正在集成我的应用程序以实际处理我的亚马逊订单.在这种情况下,我希望任何新订单都放置,而不是该订单的所有信息与买方详细信息,如买方名称,电子邮件,送货地址等也是如此我知道哪个买家在取消的情况下新订单相同,以便我可以在我的申请表上显示.
所以,请让我知道如何获得挂单和取消订单的买家详细信息.我需要发送任何API或属性,或者我遗漏了什么,或者我是否需要每次都生成报告来实现.
任何帮助,将不胜感激.
谢谢!
我通过邮递员点击HTTP API从网站获取一些数据.它对我来说很好,但从最近几天它给了我一个错误,即
无效的csrf令牌403
因此,当我使用chrome中的开发人员工具进行检查时,请转到网站的网络选项卡并检查API.
所以现在该站点还在头字段中发送CSRF-Token.
所以我知道我可以生成csrf令牌的API.
我还从API获取令牌,并在原始站点中发送带有标头的令牌.
但我想知道为什么每次API返回无效的csrf令牌
是否可以通过邮递员发送CSRF令牌.因为我知道有关csrf令牌用于停止伪造请求.而现场有CSRF令牌的隐藏字段的格式,并作为表单提交的浏览器从隐藏字段获得令牌和工作原理是这样.
我想知道一些事情: -
1)是否可以通过邮递员在标题字段中发送csrf标记.或者我们必须通过浏览器登录该站点,然后我们才能获取数据.
2)如何使用Postman从网站获取数据?
3)我是否需要使用一些无头浏览器来实现这一目标?
4)当我查看帖子时,他们说我们需要在cookie中设置csrf-token然后我们可以从cookie中获取令牌并发送请求.
任何帮助深表感谢.
谢谢
我在我的一个项目中使用 Meteor,因为我通过 go 检查了 Meteor 使用的节点版本
/.meteor/local/build/.node_version.txt
. 它使用 node.js 的 v0.10.43。我使用的模块只能在 node.js 版本 v4.0.0 或更高版本上运行。所以我很想知道有没有什么方法可以更改 Meteor 应用程序中 node.js 的版本(如果是的话),而不是我们如何更改它。我已经安装
节点 v5.8.0
在我的 ubuntu 机器本地
谢谢
amazon-mws ×2
meteor ×2
node.js ×2
amazon ×1
api ×1
csrf ×1
javascript ×1
npm ×1
postman ×1
web-scraping ×1