Я работаю над интеграцией с API Hotelbeds, но у меня возникла проблема с аутентификацией, необходимой для отправки как ключа API, так и X-подписи, хэша SHA256 в шестнадцатеричном формате, рассчитанного на основе ключа API, секретного плюс текущего временные метки в секундах
вот их пример:
#!/bin/bash
apiKey="yourApiKey"
secret="yourSecret"
curl -i \
-X GET \
-H 'Accept:application/json' \
-H 'Api-key:'$apiKey'' \
-H 'X-Signature:'$(echo -n ${apiKey}${secret}$(date +%s)|sha256sum|awk '{ print $1}')'' \
https://api.test.hotelbeds.com/hotel-api/1.0/status
и этот тоже
//Begin UTC creation
var utcDate = Math.floor(new Date().getTime() / 1000);
//Begin Signature Assembly
var publicKey = environment["Api-key"];
var privateKey = environment["secret"];
var assemble = (publicKey+privateKey+utcDate);
//Begin SHA-256 Encryption
hash = CryptoJS.SHA256(assemble).toString();
encryption = (hash.toString(CryptoJS.enc.Hex));
postman.setEnvironmentVariable("X-Signature", encryption);
поэтому я использую Laravel для аутентификации, и вот мой код:
$client = new \GuzzleHttp\Client();
$apiKey = "apiXXXXXXX";
$secret = "seceretXXXXX";
$assemble = $apiKey . $secret . Carbon::now()->timestamp;
// $hash = Hash::make($assemble);
$hash = base64_encode(hash('sha512', $assemble));
$headers = [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Api-key' => $apiKey,
'X-Signature' => $$hash,
];
$apiURL = 'https://api.test.hotelbeds.com/hotel-api/1.0/status';
$res = $client->request('GET', $apiURL, [
'headers' => $headers,
'json' => [
"data" => [
"type" => "flight-offers-pricing",
]
],
]);
$statusCode = $res->getStatusCode();
$responseBody = json_decode($res->getBody(), true);
dd($responseBody);
но я получаю следующую ошибку Ошибка клиента: GET https://api.test.hotelbeds.com/hotel-api/1.0/status привела к ошибке `400 Bad Запрос
как отправить ключ API и X-подпись, хеш SHA256 в шестнадцатеричном формате, рассчитанный на основе ключа API, секрета и текущих меток времени в секундах
решено проблема и вот новый код
$client = new \GuzzleHttp\Client();
$apiKey = "apixxxxxx";
$secret = "secxxxxxx";
// Signature is generated by SHA256 (Api-Key + Shared Secret + Timestamp (in seconds))
$signature = hash("sha256", $apiKey . $secret . time());
$headers = [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Api-key' => $apiKey,
'X-Signature' => $signature,
];
$apiURL = 'https://api.test.hotelbeds.com/hotel-api/1.0/status';
$res = $client->request('GET', $apiURL, [
'headers' => $headers,
]);
$statusCode = $res->getStatusCode();
$responseBody = json_decode($res->getBody(), true);
return $responseBody;
Подробнее здесь: https://stackoverflow.com/questions/758 ... in-laravel
Как использовать хеш SHA256 в шестнадцатеричном формате в laravel ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1732267380
Anonymous
Я работаю над интеграцией с API Hotelbeds, но у меня возникла проблема с аутентификацией, необходимой для отправки как ключа API, так и X-подписи, хэша SHA256 в шестнадцатеричном формате, рассчитанного на основе ключа API, секретного плюс текущего временные метки в секундах
вот их пример:
#!/bin/bash
apiKey="yourApiKey"
secret="yourSecret"
curl -i \
-X GET \
-H 'Accept:application/json' \
-H 'Api-key:'$apiKey'' \
-H 'X-Signature:'$(echo -n ${apiKey}${secret}$(date +%s)|sha256sum|awk '{ print $1}')'' \
https://api.test.hotelbeds.com/hotel-api/1.0/status
и этот тоже
//Begin UTC creation
var utcDate = Math.floor(new Date().getTime() / 1000);
//Begin Signature Assembly
var publicKey = environment["Api-key"];
var privateKey = environment["secret"];
var assemble = (publicKey+privateKey+utcDate);
//Begin SHA-256 Encryption
hash = CryptoJS.SHA256(assemble).toString();
encryption = (hash.toString(CryptoJS.enc.Hex));
postman.setEnvironmentVariable("X-Signature", encryption);
поэтому я использую Laravel для аутентификации, и вот мой код:
$client = new \GuzzleHttp\Client();
$apiKey = "apiXXXXXXX";
$secret = "seceretXXXXX";
$assemble = $apiKey . $secret . Carbon::now()->timestamp;
// $hash = Hash::make($assemble);
$hash = base64_encode(hash('sha512', $assemble));
$headers = [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Api-key' => $apiKey,
'X-Signature' => $$hash,
];
$apiURL = 'https://api.test.hotelbeds.com/hotel-api/1.0/status';
$res = $client->request('GET', $apiURL, [
'headers' => $headers,
'json' => [
"data" => [
"type" => "flight-offers-pricing",
]
],
]);
$statusCode = $res->getStatusCode();
$responseBody = json_decode($res->getBody(), true);
dd($responseBody);
но я получаю следующую ошибку Ошибка клиента: GET https://api.test.hotelbeds.com/hotel-api/1.0/status привела к ошибке `400 Bad Запрос
как отправить ключ API и X-подпись, хеш SHA256 в шестнадцатеричном формате, рассчитанный на основе ключа API, секрета и текущих меток времени в секундах
решено проблема и вот новый код
$client = new \GuzzleHttp\Client();
$apiKey = "apixxxxxx";
$secret = "secxxxxxx";
// Signature is generated by SHA256 (Api-Key + Shared Secret + Timestamp (in seconds))
$signature = hash("sha256", $apiKey . $secret . time());
$headers = [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Api-key' => $apiKey,
'X-Signature' => $signature,
];
$apiURL = 'https://api.test.hotelbeds.com/hotel-api/1.0/status';
$res = $client->request('GET', $apiURL, [
'headers' => $headers,
]);
$statusCode = $res->getStatusCode();
$responseBody = json_decode($res->getBody(), true);
return $responseBody;
Подробнее здесь: [url]https://stackoverflow.com/questions/75838517/how-to-use-a-sha256-hash-in-hex-format-in-laravel[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия