vb.net - Amazon Vendor Central - 如何创建散列工资单?
问题描述
我正在尝试向亚马逊发送 API 调用的 vb.net 项目。每次我尝试时,我都会收到一条消息,说我的“有效负载”的散列版本不正确。我可以通过 Postman 发送请求(它似乎正在为我计算哈希值),但无法弄清楚如何在 vb.net 中对其进行编码 如何为亚马逊正确创建哈希?
我正在按照这里的说明进行操作:https ://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
在这种情况下,我在第 6 步,上面写着“使用 SHA256 之类的散列(摘要)函数从 HTTP 或 HTTPS 请求正文中的有效负载创建散列值。” 然后它给出了例子
HashedPayload = Lowercase(HexEncode(Hash(requestPayload)))
第一,我猜有问题的“有效负载”是我的 API 请求的主体。太长在这里发布它,但我指的是看起来像这样的代码:
RequestBody body = RequestBody.create(mediaType, "{\r\n \"invoices\": [ \r\n { \r\n \"invoiceType\": \"Invoice\", \r\n \"id\": \"INV0127266\", \r\n \"date\": \"2021-04-22T00:00:00.0000000-04:00\", \r\n \"remitToParty\": { \r\n \"partyId\":
第二,我使用的代码改编自另一个创建哈希的同事 C# 代码:
Dim hashBody = HashAndHex(strInvoice)
Private Function HashAndHex(ByVal value As String) As String
Dim data As Byte() = New SHA256CryptoServiceProvider().ComputeHash(Encoding.UTF8.GetBytes(value))
Dim sb As StringBuilder = New StringBuilder()
For i As Integer = 0 To data.Length - 1
sb.Append(data(i).ToString("x2", CultureInfo.InvariantCulture))
'sb.Append(data(i).ToString("x2"))
Next
Return sb.ToString()
End Function
亚马逊说我发送的价值不正确。我可能做错了什么?
解决方案
推荐阅读
- batch-file - 通过 psexec 运行 bat 文件时,启动命令不起作用
- vba - 调用变量
- c# - 如何让 Serilog 丰富日志
- .net - dotnet core openidconnect identityserver4 中断注销方法
- javascript - 使用带有 React 和 webpack 的 jquery 插件
- apollo - 有状态的组件在查询重新获取时失去状态
- office-store - App ID 42949681452 的验证问题/问题
- python - 当输入的大小发生变化时,Keras LSTM 模型对相同的输入给出不同的预测?
- spark-structured-streaming - Spark 2.2 Structured Streaming Stream - 静态左外连接问题
- c# - 如何将此 JSON 字符串解析为 2 个列表