Ниже приведена процедура создания хэша на основе sha256.
Генерируемый хэш
За параметром строки хеш-запроса должен следовать сгенерированный хэш для этого конкретного запроса.Чтобы сгенерировать хеш:
- Возьмите тело запроса HTTP POST
- Добавьте предоставленный API-секрет в конец тела
- Преобразует его в SHA256 ипреобразует хешированное сообщение в шестнадцатеричный формат
Например, предполагая, что предоставленный API Secret является «secrettapikey», а тело HTTP POST содержит следующее:
{ "apiKey": 123, "invoiceId": 1 }
Сгенерированный хеш будет:
d48cf8a852713844603d7c8cbefb3e81cfb29e7540d98f06affdf58322c1038e
Ниже приведены шаги, предпринятые для создания сгенерированного выше хеша:
HTTP POST Body => { "apiKey": 123, "invoiceId": 1 }
Secret => secrettapikey
Текст для хэширования => { "apiKey": 123, "invoiceId": 1 }secretapikey
SHA-256 Hash => d48cf8a852713844603d7c8cbefb3e81cfb29e7540d98f06affdf58322c1038e
Я должен объединить двастроки ({ "apiKey": 123, "invoiceId": 1 }secretapikey
), а затем хэшируйте их для отправки в конечную точку API.Но хэш, сгенерированный следующим кодом, не соответствует хэшу, сгенерированному онлайн-sha256: -
$secretapikey = "secretapikey";
$postbody = array();
$postbody['apiKey'] = "123";
$postbody['invoiceId'] = 1;
$jpb = json_encode($postbody);
$hashed = $jpb.$secretapikey; //Here is Problem. It is not concatenated according to requirement
$result = hash('SHA256', $hashed);
echo $result;
Это значение $result
d2c5d184be42ff4ae3a0046d0727c026f38c1e92f8960cb9d17d496c7b89b7b3
, тогда как оно должно быть
d48cf8a852713844603d7c8cbefb3e81cfb29e7540d98f06affdf58322c1038e