Подпись, передаваемая в X-Signature не проходит проверку

Здравствуйте!
Вызываем метод маркировки в СУ по адресу https://suzgrid.crpt.ru/api/v3/order?omsId={omsId}
В тело запроса (переменная $post) передаем 
{«productGroup»:«tires»,«products»:[{«gtin»:«<gtin>»,«quantity»:1,«serialNumberType»:«OPERATOR»,«templateId»:7,«cisType»:«UNIT»}],«attributes»:{«releaseMethodType»:«REMARK»,«createMethodType»:«SELF_MADE»}}
Далее подписывем этот запрос открепленной подписью
$signer = new CPSigner();
$signer->set_Certificate($cert);
$sd = new CPSignedData();
$sd->set_Content($post);
// третий параметр указывает на то, что подписываем открепленой подписью
$sm = $sd->SignCades($signer, CADES_BES, true, ENCODE_BASE64);
$sm = preg_replace(«/[\r\n]/»,«»,$sm);

Далее, полученную подпись прикрепляем в заголовки в параметр X-Signature и совершаем запрос, получаем orderId. 
{«orderId»:«<order_id>»,«orderStatus»:«DECLINED»,«buffers»:[{«leftInBuffer»:-1,«totalCodes»:-1,«poolsExhausted»:false,«unavailableCodes»:-1,«availableCodes»:-1,«gtin»:«<gtin>»,«bufferStatus»:«REJECTED»,«totalPassed»:-1,«rejectionReason»:«Order declined: Проверка подписи не пройдена»}],«createdTimestamp»:1701444203028,«declineReason»:«Проверка подписи не пройдена»}
При этом, получение авторизационных ключей через подпись запросов и другие запросы проходят корректно. В чем может быть причина ошибки проверки подписи. Заранее спасибо

или  в систему, чтобы получать уведомления с ответами на ваши вопросы

Жирный текст
Прикрепить файл
К новым комментариям
Здравствуйте, только в том, что могут не совпадать тело и открепленная подпись
06.12.2023 11:51
Евгений, подскажите удалось решить проблему? Так же застряли на этом моменте.
11.03.2024 10:16
Andrey Moroz,
- как с вами связаться ?
29.03.2024 22:27
тоже столкнулись с этой проблемой как с вами связаться vergunka19@yandex.ru
29.03.2024 21:49
Господа,
попробуйте в теле запроса убрать все переводы строки, т е \r\n  ,
затем результат  и подписать и отослать.
Тело должно быть одной строкой.
Крипто-системы похоже не любят перевод строки,
тем более в WIN и Linux они обрабатываются по разному. 
04.04.2024 23:00
V
Все получилось. Чтобы получить корректную подпись необходимо, как было сказано ранее, убрать из тела запроса все лишнее, типа:
$content_format = preg_replace('/(\n|\r|\t|\f)/m', «», $content);
Подписываем этот запрос ОТКРЕПЛЕННОЙ подписью.
Далее уже отправляем в АПИ честного знака этот ОТФОРМАТИРОВАННЫЙ запрос, т.е. $content_format
Тогда внутри честного знака подписи совпадут
04.09.2024 13:29
VaBank,

пробую ... но все равно ошибка
может есть какоой то нюанс ?
*************************
{«products»:[{«gtin»:«04640255275356»,«quantity»:2,«serialNumberType»:«SELF_MADE»,«serialNumbers»:[«TwG3g8VPiTEQ»,«HoKzunmnyJJ2»],«templateId»:10,«cisType»:«UNIT»},{«gtin»:«04640255275349»,«quantity»:1,«serialNumberType»:«SELF_MADE»,«serialNumbers»:[«NuMjA5FjHPfO»],«templateId»:10,«cisType»:«UNIT»}],«releaseMethodType»:«PRODUCTION»,«createMethodType»:«SELF_MADE»}


************************
   $jsonArray = [«products» => $products, 'releaseMethodType' => 'PRODUCTION',
        'createMethodType' => 'SELF_MADE'];

    $url = 'https://suzgrid.crpt.ru/api/v2/lp/orders?omsId=' . $this->omsId;
    //  $headers = ['clientToken' => $this->token,  'Content-Type' => 'application/json'];
    $json = json_encode($jsonArray);
    
    $content_format = preg_replace('/(\n|\r|\t|\f)/m', '', $json);
    
    print_r($content_format); print_r(«\n»);
    $cert = $this->SetupCertificate(CURRENT_USER_STORE, «My», STORE_OPEN_READ_ONLY,
        0, $this->CUR_KEY, 0, 1);
    $signer = new CPSigner();
    $signer->set_Certificate($cert);
    $sd = new CPSignedData();
    $sd->set_Content($json);
    $sd->set_ContentEncoding(1);
    $sm = $sd->SignCades($signer, CADES_BES, true, ENCODE_BASE64);


     $sm = preg_replace(«/[\r\n]/», «», $sm);
 print_r($sm); //print_r(«\n»);

    $this->XSignature = $sm;

    $headers = ['X-Signature' => $this->XSignature, 'clientToken' => $this->token,
        'Content-Type' => 'application/json'];

 //  $headers = ['X-Signature' => $this->XSignature, 'clientToken' => $this->token,        ];

       
      $client = new GuzzleHttp\Client(['headers' => $headers]);
        $request = $client->request('POST', $url, ['debug' => $this->debug_cps,  'json' => $jsonArray, ]);
        $result = json_decode($request->getBody()->__toString());
 print_r($result);
die;

заказ создеться но падает в ошибку

10.09.2024 14:25
Задайте вопрос команде Сообщества

Если у вас есть вопросы, связанные с работой Честного Сообщества или предложения по развитию нашей платформы, то напишите нам!

Если у вас вопросы, связанные с маркировкой, то задайте вопрос тут.

Ваше сообщение отправлено

Ожидайте ответ на электронную почту, указанную в обращении

Наверх
Войти в Cообщество
Впервые в сообществе? Зарегистрироваться
Войти через:
Регистрация в Сообществе
Регистрация участника оборота
Уже зарегистрированы?
или
Войти через GoogleВойти через Vk

Нажимая кнопку «Зарегистрироваться»,
Вы принимаете условия Пользовательского соглашения.

Регистрация Партнера/Интегратора
Уже зарегистрированы?
Регистрация Партнера/Интегратора
Уже зарегистрированы?

Нажимая кнопку «Зарегистрироваться»,
Вы принимаете условия Пользовательского соглашения.

Регистрация Партнера/Интегратора
Уже зарегистрированы?
Уже зарегистрированы?

Нажимая кнопку «Зарегистрироваться»,
Вы принимаете условия Пользовательского соглашения.

Регистрация в Сообществе

Редактировать изображение партнера/интегратора
Восстановление пароля
Проверьте почту

На почту отправлено письмо со ссылкой восстановления пароля

Восстановление пароля