Я пытаюсь следовать шагам, описанным Мандриллом здесь http://help.mandrill.com/entries/23704122-Authenticating-webhook-requests для проверки входящих запросов. Я настроил тестовый requestb.in с URL-адресом, видимым в коде. Я хочу, чтобы этот метод возвращал подпись мандрила, которая в данном случае H7Zky1B/GShKH4kuQcfUhNrQq+k=, но вместо этого каждый раз возвращает другое значение. Где я ошибаюсь?
пример кода php, предоставленный mandrill
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