- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经在这个问题上浪费了几天...主要问题是——我不知道如何发布数据。我想从获取 OrderReferenceDetails 开始。通过查看 MWS Scratchpad (API 部分:Off Amazon 支付,操作:GetOferenceDetails)。
据我了解,我应该做的第一件事就是计算签名。所以通过使用这个 Amazon developer guide ,并以暂存器中的值为例,我创建了字符串,并从中计算了签名。这个字符串看起来像这样
POST
mws.amazonservices.com
/offamazonpayments_sandbox/2013-01-01
Action=GetOrderReferenceDetails&AmazonOrderReferenceId=[_my order reference id_]&AWSAccessKeyId=[_my access key_]&SellerId=[_my seller id_]&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2014-11-04T12%3a15%3a38.1988397Z&Version=2013-01-01
所以我对它进行哈希处理并得到一个签名,然后我应该将它添加到查询参数行中,例如 &Signature=[_my clalculated signature]
我用来计算签名的函数:
private static String sign(String data, String secretKey)
{
String result = null;
KeyedHashAlgorithm algorithm = new HMACSHA256();
Encoding encoding = new UTF8Encoding();
algorithm.Key = encoding.GetBytes(secretKey);
result = Convert.ToBase64String(algorithm.ComputeHash(encoding.GetBytes(data.ToCharArray())));
return result;
}
问题从这里开始(我认为)。 Scratchpad 提供了要发布的“数据”,但我不明白如何使用它(从 scratchpad 复制粘贴):
POST /OffAmazonPayments_Sandbox/2013-01-01?AWSAccessKeyId=
&Action=GetOrderReferenceDetails
&SellerId=
&SignatureVersion=2
&Timestamp=2014-11-04T12%3A37%3A58Z
&Version=2013-01-01
&Signature=rEqRKP27Pklu%2BAmRLR%2ByRpUtfhNsVOWuGTQ7s%2FgkB2w%3D
&SignatureMethod=HmacSHA256
&AmazonOrderReferenceId= HTTP/1.1
Host: mws.amazonservices.com
x-amazon-user-agent: AmazonJavascriptScratchpad/1.0 (Language=Javascript)
Content-Type: text/xml
这是什么?我熟悉这样的请求:
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "POST";
request.ContentType = "text/xml";
request.Host = "whatever host I need to use";
request.ContentLength = Encoding.UTF8.GetByteCount(dataAsString);
byte[] byteArray = Encoding.UTF8.GetBytes(dataAsString);
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(byteArray, 0, byteArray.Length);
}
try
{
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
string responseAsString = streamReader.ReadToEnd();
}
}
catch (WebException exception)
{
HttpWebResponse exceptionalResponse = exception.Response as HttpWebResponse;
using (var streamReader = new StreamReader(exceptionalResponse.GetResponseStream()))
{
String responseAsString = streamReader.ReadToEnd();
}
}
问题是:
我是否正确计算了签名?
如何构造web请求?
感谢阅读并尝试提供帮助!
编辑:
好吧,我终于得到了 MWS Amazon 的回应,这不是错误!我为使其工作而执行的步骤:
构造将被手动签名的字符串 - 查询参数的顺序很重要。
构建我将手动发布数据的 url - 同样,顺序很重要,但与之前签名的字符串不同。签名字符串中的键应该使用字典字节顺序进行排序。好吧,我不知道那是什么动物,所以这就是我手工完成所有事情的原因,例如拿便签本。
最佳答案
我为此苦苦挣扎了几天,归结为参数的顺序。我试图找到一种无需手动操作即可对参数进行排序的解决方案,并最终找到了答案。我最初创建了一个 SortedDictionary() 仍然没有用。然后我看到了一个来自 Claytondus nuget 包的例子,它与 MWS 一起工作,他有 SortedDictionary(StringComparer.Ordinal)。一旦我这样做了,它就正确排序并得到了很好的回应。
关于c# - 向亚马逊 MWS 服务发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26735521/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 7年前关闭。 Improve this qu
我已经在我的网站上列出了我所有的亚马逊订单。 现在,我希望能够将订单标记为从我的网站发货,并且状态将在亚马逊上立即更新。 我看过亚马逊提要 api,但不清楚提要 xml 的格式。 我只想要一个用于更新
我想在不经过转换过程(我的内容 --> Epub/Html --> KindleGen/Calibre/其他工具)的情况下生成 KF8,因为我需要更多地控制 kf8 文件的生成。 guidelines
我打算为亚马逊的市场网络服务 (MWS) 开发一个客户端。我的要求是更新订单、同步订单状态、使用他们拥有的 API 获取订单详细信息。 但是,我找不到沙盒环境来测试这些场景。我了解亚马逊有一个支付沙箱
PA-API 的销售已经停止,我想知道这对我来说意味着什么。我喜欢这个 API,但我看不到有自己的网站和购物车等的可能性。 是否有来自 Amazon 的 API 可以将其用于购物车和结账? 只需生成购
我在 salesforce 领域工作,并尝试使用产品 Feed API 在亚马逊卖家账户中创建产品。但我不确定如何为属于珠宝类别的产品创建完美的 xml 提要文件。我可以使用 MWS 客户端库吗?或者
如何使用 Amazon MWS 将内嵌图像添加到注册品牌的产品描述部分还是平面文件? 谢谢! 最佳答案 如果您是注册品牌所有者,则需要使用 enhanced brand content templat
是否可以在一个 aws dynamodb 帐户中创建多个数据库?例如,一个管理大学表格的大学数据库和一个管理学校表格的学校数据库。谢谢。 最佳答案 另一个答案是正确的,但更完整的答案是 DynamoD
我有一个简单的问题,因为没有找到任何答案。实际上,我可以使用亚马逊的 API 从 ASIN 代码中获取有关产品的信息,但在这张图片的情况下,我可以获得一张不同格式的图片,大拇指、中拇指等,对吗? 在我
关于哪个 Web 服务可以上传订单的 pdf 发票? 几周以来,可以通过sellercentral 或第三方软件了解.... 但我找不到有关 mws api 的方法.. 谢谢 最佳答案 也许你应该看看
有没有办法计算通过 amazon redshift 中的 SQL 更新查询影响的最后行数? 类似于 PG_LAST_COPY_COUNT() 之类的函数,用于计算亚马逊 Redshift 中的最后一个
我决定将 MySql 或 NoSQL 用于论坛站点。我对整个 NoSQL 想法很陌生,在阅读文档时我注意到“项目”不能大于 64kb,这包括属性和值。从我理解的方式来看,我能想到的实现这一点的唯一方法
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
我正在创建一个 Alexa 技能,需要检索各种内容,例如日期、文件号等。我还需要它来获取用户对其所说的“描述”并能够保留它。 例如: "Alexa, description, patent draft
我已经用“标题”和“类别”等对我的产品建立了索引。现在,在我的自动建议中,我想要诸如Amazon / Flipkart之类的东西, 例如,如果我查询“绿色”,建议使用“绿茶”,“绿色衬衫”,“男士绿色
我是英国亚马逊(以及同一帐户上的所有欧盟商城)的注册专业卖家 我有我的卖家帐户 ID、开发者 ID、开发者身份验证 token 和私钥。 在 MWS 暂存器中,我可以发出请求并获得状态 API 的成功
我有一个 Web 服务器在 Ubuntu Amazon EC2 实例上运行,端口为 3000。15.0.0.10 是这个 EC2 实例的私有(private) ip。 在我通过 ssh 进入该实例并运
我在 Amazon S3 中使用 GetSessionToken/GetFederationToken 的临时 session ,我计划拥有超过 10K 个用户,每个用户都可以上传到 S3,所以一开始
我在heroku上有一个django应用程序,它提供来自亚马逊s3存储桶的静态文件。我使用 boto 库并按照网站上的指南进行操作。我可以做什么来加快文件传输速度? 部分代码: DEFAULT_FIL
我正在尝试制作一个小Java程序。 该程序有 3 个整数的输入:S:开始的蚊子,K:每只蚊子生下的 child 的数量,N:我们“调查”的天数。 亚马逊地区的每只蚊子只能存活 1 天。第 0 天,我们
我是一名优秀的程序员,十分优秀!