我需要验证来自ankoder.com的回调签名,该回复提供以下说明:
它是您的私钥的Base64编码的HMAC-SHA1摘要的URL转义字符串以及URL未转义的消息。
$passkey = urlencode(base64_encode(hash_hmac('sha1', urldecode($str), $private_key, true)));
他们提供以下Ruby示例
encoded_signature = CGI.escape Base64.encode64(HMAC::SHA1::digest(private_key, CGI.unescape(message))).strip
我在从回调中返回的示例数据上运行此操作但未获得相同的签名。如何在PHP中复制Ruby代码?
修改 问题是跟踪发送的空格。
答案 0 :(得分:2)
您的PHP代码与Ruby代码匹配。问题必定在其他地方。
检查密钥是否正确并正确解析消息(urldecode,然后是json_decode)。