【发布时间】:2021-10-30 20:01:39
【问题描述】:
使用:
- 德尔福 10.2.3 东京
- IPWorks SSL、IPWorks 加密
我正在编写一个 Delphi 应用程序以从亚马逊 MWS API 获取订单列表。
我在这里按照他们的指示进行操作:
这里:
但我卡在签名生成过程中,特别是生成 Base64 HMAC。
我正在使用 IPWorks SSL 组件(哈希组件)并且能够根据输入生成 SHA 256 签名。到这一步一切正常。
这是我无法/不确定如何执行的下一步。
我正在使用 Amazon 暂存器生成请求,并且正在查看请求详细信息以及生成的签名:SHA 256 和 Base 64。
我的 Delphi 代码不会像暂存器中生成的那样生成 Base 64 字符串。请参阅随附的屏幕截图(敏感信息已被编辑)。
这是我将 SHA 256 字符串转换为 Base 64 的 Delphi 代码:
procedure TAppMain.Button1Click(Sender: TObject);
var
s: String;
b: TBytes;
begin
s := '9660152e55a7178db9a9521cd80b7f4872f4be2290d1dd0f32205708f2e06589';
s := TNetEncoding.Base64.Encode(s);
// Above line produces:
// OTY2MDE1MmU1NWE3MTc4ZGI5YTk1MjFjZDgwYjdmNDg3MmY0YmUyMjkwZDFkZDBmMzIyMDU3MDhmMmUwNjU4OQ==
// which is not equal to:
// lmAVLlWnF425qVIc2At/SHL0viKQ0d0PMiBXCPLgZYk=
end;
有一个StackOverflow question 面临同样的问题,我已经尝试了该问题的答案中的建议,但我仍然无法得出与 Amazon Scratchpad 相同的结果。具体来说:
SHA256 Scratchpad 显示的不是您使用 base64 转换的值。 您必须转换 SHA256 的十六进制值。
我花了整整 2 天的时间尝试了很多事情来获得正确的结果,从 Google 搜索结果中阅读了很多文章,但我仍然找不到答案。
请参阅我的其他相关问题,该问题显示了完整的 Delphi 代码,以及我面临的问题的完整描述: Delphi - Calculating Amazon MWS signature
谁能帮帮我!?
【问题讨论】:
标签: delphi base64 amazon-mws delphi-10.2-tokyo