Как расшифровать полезную нагрузку webhook из Transak?

#php #encryption #payload

#php #шифрование #полезная нагрузка

Вопрос:

Я интегрирую Transak на наш веб-сайт WordPress. Интеграция Transak завершена, но мы сталкиваемся с проблемой дешифрования полезной нагрузки webhook, отправляемой transak

Transak говорит: «Мы отправляем полезную нагрузку webhook в зашифрованном формате. Вы должны расшифровать его с помощью вашего API_SECRET. «

Расшифрованный Transak ответ webhook выглядит следующим образом:

 {body:eyJhbGciOiJIUzI1NiJ9.eyJ3ZWJob29rRGF0YSI6eyJpZCI6IjkxNTFmYWExLWU2OWItNGEzNi1iOTU5LTNjNGY4OTRhZmI2OCIsIndhbGxldEFkZHJlc3MiOiIweDg2MzQ5MDIwZTkzOTRiMkJFMWIxMjYyNTMxQjBDMzMzNWZjMzJGMjAiLCJjcmVhdGVkQXQiOiIyMDIwLTAyLTE3VDAxOjU1OjA1LjA5NVoiLCJzdGF0dXMiOiJBV0FJVElOR19QQVlNRU5UX0ZST01fVVNFUiIsImZpYXRDdXJyZW5jeSI6IklOUiIsInVzZXJJZCI6IjY1MzE3MTMxLWNkOTUtNDE5YS1hNTBjLTc0N2QxNDJmODNlOSIsImNyeXB0b0N1cnJlbmN5IjoiQ0RBSSIsImlzQnV5T3JTZWxsIjoiQlVZIiwiZmlhdEFtb3VudCI6MTExMCwiZnJvbVdhbGxldEFkZHJlc3MiOiIweDA4NWVlNjcxMzJlYzQyOTdiODVlZDVkMWI0YzY1NDI0ZDM2ZmRhN2QiLCJ3YWxsZXRMaW5rIjoiaHR0cHM6Ly9yaW5rZWJ5LmV0aGVyc2Nhbi5pby9hZGRyZXNzLzB4ODYzNDkwMjBlOTM5NGIyQkUxYjEyNjI1MzFCMEMzMzM1ZmMzMkYyMCN0b2tlbnR4bnMiLCJhbW91bnRQYWlkIjowLCJwYXJ0bmVyT3JkZXJJZCI6IjIxODM3MjE4OTMiLCJwYXJ0bmVyQ3VzdG9tZXJJZCI6IjIxODM3MjE4OTMiLCJyZWRpcmVjdFVSTCI6Imh0dHBzOi8vZ29vZ2xlLmNvbSIsImNvbnZlcnNpb25QcmljZSI6MC42NjM4NDcxNjQzNjg2MDYsImNyeXB0b0Ftb3VudCI6NzMxLjM0LCJ0b3RhbEZlZSI6NS41MjY1Mjc2NDMzNjg2NCwiYXV0b0V4cGlyZXNBdCI6IjIwMjAtMDItMTZU
 MTk6NTU6MDUtMDc6MDAiLCJyZWZlcmVuY2VDb2RlIjoyMjYwNTZ9LCJldmVudElEIjoiT1JERVJfQ1JFQVRFRCIsImNyZWF0ZWRBdCI6IjIwMjAtMTAtMTRUMTg6MDA6MDguOTcwWiJ9.abKj3GaKxB46V5MGQf0ouvo_bAx0FbHF84MdrPoE9sk}
  

У меня есть API_SECRET, но как я расшифровываю полезную нагрузку в PHP?

Я попробовал приведенный ниже код, клонируя библиотеку, указанную в комментарии ниже, но столкнулся с ошибками. Что-то не так с кодом?

 require_once 'php-jwt/src/JWT.php';

use FirebaseJWTJWT;

$key = "eyJhbG.....7PENIpC-E";

$payload = "eyJhbGc...FbHF84MdrPoE9sk";

$jwt = JWT::encode($payload, $key);
$decoded = JWT::decode($jwt, $key, array('HS256'));

print_r($decoded);
  

Комментарии:

1.Описано здесь . В качестве альтернативы вы можете ввести JWT eyJh …E9sk здесь в поле Encoded. Ключ нужен только в том случае, если вы хотите проверить подлинность.

2. Спасибо @Topaco за руководство по первоначальным шагам. можете ли вы направить меня дальше? пожалуйста, проверьте обновленный вопрос

3. Для декодирования JWT требуется только JWT::decode() вызов. $jwt содержит JWT ( eyJh …E9sk ), $key ключ ( HS256 поскольку алгоритм в порядке). Если это не сработает, возможно, key и JWT не совпадают. В описании firebase / jwt вы найдете пример HS256, который одновременно кодирует и декодирует.