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