Я пытаюсь заставить PayPal Webhooks работать с моим приложением PHP. Проблема заключается в алгоритме хеширования, который они отправляют через заголовки, которые я должен использовать, чтобы проверить, действителен ли запрос.
Когда я пытаюсь его использовать, я получаю такую ошибку:
hash_hmac(): Unknown hashing algorithm: SHA256withRSA
Я пробовал hash_hmac, используя только алгоритм «sha256», и он сработал, поэтому я думаю, что проблема должна быть в том, который они хотят, чтобы я использовал.
Вот код, который я использую для обработки Webhook:
$headers = apache_request_headers();
$body = @file_get_contents('php://input');
$json = json_decode($body);
// Concatanate the reqired strings values
$sigString = $headers['PAYPAL-TRANSMISSION-ID'].'|'.$headers['PAYPAL-TRANSMISSION-TIME'].'|'.$json->id.'|'.crc32($body);
// Get the certificate file and read the key
$pub_key = openssl_pkey_get_public(file_get_contents($headers['PAYPAL-CERT-URL']));
$keyData = openssl_pkey_get_details($pub_key);
// check signature
if ($headers['PAYPAL-TRANSMISSION-SIG'] != hash_hmac($headers['PAYPAL-AUTH-ALGO'],$sigString,$keyData['key'])) {
//invalid
}