Как получить json представление тела запроса?

Тут просят:

Формирование подписи запросов

"Подпись запроса необходимо передавать в заголовках запроса в параметре Authorization. Пример:

Authorization: 0ed9166cbb3595ec9bdaf4cbb79b94196d8d8be5

Сама подпись является sha1 хешем полученной из конкатенированной строки, содержащей в себе: «json представление тела запроса» + «API ключ»"

Я разобрался с заголовками, с шифрованием sha1, но как мне получить «json представление тела запроса»?

Вот мой код:

import requests
import json
import hashlib

url ='https://*****.taxicrm.ru/api/public/v1/user/list'
key = "Мой ключ"

json_key = key + "json тело"
h = hashlib.sha1(json_key.encode('utf-8')).hexdigest()

req = requests.post(url, headers = {"Authorization": h})

try:
    resp = req.json()
except Exception as e:
    print(e)
    resp = None
print(resp)

Копипаста рабочего кода от поставщика API:

<?php
include('config.php');

$key = $_POST['api'];
$server = $_POST['server'];
$date_start = $_POST['date_start'];
$date_stop = $_POST['date_stop'];

    function getDates($startTime, $endTime)
    {
        $day = 86400;
        $format = 'Y-m-d';
        $startTime = strtotime($startTime);
        $endTime = strtotime($endTime);
        #   $numDays = round(($endTime - $startTime) / $day); // без +1
        $numDays = round(($endTime - $startTime) / $day) + 1;
        $days = array();
        for ($i = '0'; $i < $numDays; $i++) {
            $days[] = date($format, ($startTime + ($i * $day)));
        }
        return $days;
    }

#   Берем все даты на загрузку (в днях)
$days = getDates($date_start, $date_stop);

$url_car_transaction = "https://".$server.".taxicrm.ru/api/public/v1/car/transaction/list";

#   Перебор массива всех дней
foreach ($days AS $day)
{
    $method = "POST";
    $post_data = [
        "timestamp" => time(),
        "filters" => [
            "date_start" => $day,
            "time_start" => "00:00:00",
            "date_end" => $day,
            "time_end" => "23:59:59",
        ]
    ];

    $data_json = json_encode($post_data);

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json);

    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Authorization: '. sha1($data_json . $key),
        'Content-Type:application/json'
    ));

    curl_setopt($curl, CURLOPT_URL, $url_car_transaction);
    $html = html_entity_decode(curl_exec($curl), ENT_HTML401, 'UTF-8');

    $array = json_decode($html);
    
    curl_close($curl);
    
    foreach ($array->{"transactions_list"} as $line)
    {
        // добавляем транзакции в базу
            $sql = "INSERT INTO `***`
            (`***`,     `***`,      `***`, ... `***`) VALUES
            ('".$line->{"transaction_id"}."',   ... '".$line->{"car_id"}."')";
            mysqli_query($conn, $sql);
    }
}
?>

Ответы (0 шт):