我正在尝试按照 Mandrill 在此处概述的步骤http://help.mandrill.com/entries/23704122-Authenticating-webhook-requests以验证传入的请求。我已经使用代码中看到的 url 设置了一个测试 requestb.in。我希望此方法返回山魈签名,在本例中为 H7Zky1B/GShKH4kuQcfUhNrQq+k= 但它每次都返回不同的值。我哪里错了?
mandrill 提供的 php 代码示例
function generateSignature($webhook_key, $url, $params) {
$signed_data = $url;
ksort($params);
foreach ($params as $key => $value) {
$signed_data .= $key;
$signed_data .= $value;
}
return base64_encode(hash_hmac('sha1', $signed_data, $webhook_key, true));
}
我的红宝石代码
def valid?(params)
wh_key = "Ny_lzk4zxENbNVezqECBxw"
url = "http://requestb.in/15wvu0y1"
signed_data = url
params.sort.each do |key, value|
signed_data += (key.to_s + value.to_s)
end
digest = OpenSSL::Digest.new('sha1')
Base64.encode64("#{OpenSSL::HMAC.digest(digest,signed_data,wh_key)}")
end