API сервиса
Для работы с сервисом необходимо отправить чек POST запросом
POST-запрос отправляется на адрес https://api.check4promo.ru/api/v1/check/add и должен включать в себя следующие параметры:
- contractor_id — идентификатор контрагента (выдается при регистрации в системе)
- project_id — идентификатор проекта (выдается при регистрации проекта)
- check_data — строка с данными чека
1. Формат строки с данными чека
Строка с данными чека следующего формата — t=20211126T1312&s=217.92&fn=9280440301243863&i=130322&fp=3526159982&n=1, где:
t — дата и время;
s — сумма чека;
fn — номер фискального накопителя;
i — номер фискального документа;
fp — фискальный признак документа;
n — тип операции (Приход/Возврат прихода/Расход/Возврат расхода);
sign — подпись.
2. Алгоритм формирования подписи
/**
* @param array $data Массив данных c полями contractor_id,project_id,check_data,sign
* @param string $secretKey Ключ указанный в личном кабинете
* @return string
*/
function createSign(array $data, string $secretKey): string {
ksort($data);
$sign = '';
foreach($data as $key = & gt; $value) {
if ($key != 'sign') {
if (!is_array($value)) {
$sign. = "|$key=$value";
} else {
$sign. = "|$key=".json_encode($value);
}
}
}
$sign. = '|secret_key='.$secretKey.
'|';
return md5($sign);
}
3. Вариации ответа
- Успешный ответ:
{ "success": true, "payload": { "contractor_id": 2, "project_id": 9, "check_id": 54695 } }
- Ответ с ошибкой:
{ "success": false, "payload": { "errorKey": "bad_signature", "message": "Bad signature", } }
-
Возможные ошибки:
1. Запрос с неразрешенного IP
{ "errorKey": "ip_not_allowed", "message": "IP not allowed", }
2. Неверная подпись
{ "errorKey": "bad_signature", "message": "Bad signature" }
3. Чек не принят, так как продавец заблокирован
{ "errorKey": "block_inn", "message": "Too many requests for inn" }
4. Исчерпан суточный лимит запросов
{ "errorKey": "request_limit_daily", "message": "The daily limit of requests has been exceeded" }
5. Превышен суточный лимит запросов для данного чека
{ "errorKey": "check_limit_daily", "message": "The daily limit of checks has been exceeded" }
6. Превышен общий лимит запрос для данного чека
{ "errorKey": "check_limit_total", "message": "The total limit of checks has been exceeded" }
7. Ошибка валидации данных запроса(messages содержит названия полей, которые были заполнены с ошибкой)
{ "errorKey": "validation", "messages": { "check_data": [ "Invalid check data" ] } }
4. Выполнение вебхука и возможные ошибки
Далее будет выполнен вебхук (асинхронный POST) запрос по ссылке указанный в настройках личного кабинета
- Ответ вебхука без ошибки:
{ "contractor_id": 2, "project_id": 9, "check_id": 56669, "success": true, "data": { "id": 4006401313179427330, "ofdId": "ofd22", "address": "413113,Россия,Саратовская область,Энгельсский м.р-н.,город Энгельс г.п.,Энгельс г,Энгельс-1 мкр.,,,д. 57,,,,", "content": { "code": 3, "user": "ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ \"АГРОТОРГ\"", "items": [{ "nds": 1, "sum": 1699, "name": "*ЧУПА ЧУПС Карамель ФРУТ-ТЕЛ.17г", "price": 1699, "quantity": 1, "paymentType": 4, "productType": 1, "moderation": { "status": "blacklist_project", "promoaction_products": [] } }, { "nds": 1, "sum": 9999, "name": "РОДНЫЕ ПРОСТОРЫ Конфеты с ваф/крошко", "price": 9999, "ndsSum": 1667, "quantity": 1, "moderation": { "status": "greylist", "promoaction_products": [ "Родные Просторы®. Конфеты с вафельной крошкой. 200гр", "Родные Просторы®. Конфеты с вафельной крошкой 125гр" ] }, "paymentType": 4 } ], "nds10": 1681, "nds18": 950, "region": "64", "userInn": "7825706086", "dateTime": 1638813240, "kktRegId": "0003242677026901", "operator": "Cнегур Юлия Андреевна, Продавец-каccир", "totalSum": 24195, "creditSum": 0, "numberKkt": "00106906199406", "fiscalSign": 311934807, "prepaidSum": 0, "operatorInn": "644922545881", "retailPlace": "337G 17122-Пятерочка", "shiftNumber": 140, "cashTotalSum": 0, "provisionSum": 0, "ecashTotalSum": 24195, "operationType": 1, "redefine_mask": 14, "requestNumber": 456, "fiscalDriveNumber": "9280440301382512", "messageFiscalSign": 9.297393879985013e+18, "appliedTaxationType": 1, "fiscalDocumentNumber": 85458, "fiscalDocumentFormatVer": 2 }, "subtype": "receipt", "receiveDate": "2021-12-06T17:15:26Z", "moderation_unique_counts": { "blacklist_project": 4 } }, "sign": "8c9a7c64cd1e2867afa40d0db23dfb3e" }
- Ответ вебхука c ошибкой:
{ "contractor_id": 2, "project_id": 9, "check_id": 54695, "success": false, "error_data": { "error": { "code": 456, "message": "Ошибка hsm. Чек не валиден или любая внутренняя ошибка hsm" }, "add_dt": "14.12.2021 19:52:12" }, "sign": "0286baaeef7f5feb375c5f633379a33b" }
-
Возможные ошибки вебхука:
1.{ "error": { "code": 400, "message": "Формат отправленных данных некорректен" } }
2.{ "error": { "code": 455, "message": "Не найдены данные в сервисе поиска чека" } }
3.{ "error": { "code": 456, "message": "Ошибка hsm. Чек не валиден или любая внутренняя ошибка hsm" } }
4.{ "error": { "code": 503, "message": "Сервис недоступен" } }
5.{ "error": { "code": 532, "message": "Внутренняя ошибка сервиса получения чеков" } }
6.{ "error": { "code": 544, "message": "Не прошла проверка пара ККТ +ФН" } }
7.{ "error": { "code": 545, "message": "ККТ в автономном режиме" } }
Оставьте заявку
Заполните форму, в ближайшее время мы свяжемся с вами и продемонстрируем работу нашего сервиса