• Почему в postman работает curl, а на сервере нет?

    @DDA2104
    Здравствуйте, появилось время - решил еще повозится с кодом. Очень интересно, но Ваш код выдает такую-же информацию как у Вас в вопросе, хотя файл с кодировкой UTF-8 пробовал и UTF-8 c BOM - результат такой же. Точно в коде вопроса больше ничего не меняли? А все работает с вот таким кодом (переменные $companyID, $kassir и т.д. заданы):
    $chek=array(
    CURLOPT_URL => "https://api.sbis.ru/retail/sale/create",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_COOKIE => 'sid=0079a2fd-00f8b20c-eedb-4166bdb4075fbcc8',
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS =>"{
    \"companyID\": \"$companyID\",
    \"cashierFIO\": \"$kassir\",
    \"operationType\": \"1\",
    \"cashSum\": \"$summ\",
    \"bankSum\": null,
    \"internetSum\": null,
    \"accountSum\": null,
    \"postpaySum\": null,
    \"prepaySum\": null,
    \"vatNone\": null,
    \"vatSum0\": \"$summ\",
    \"vatSum10\": null,
    \"vatSum20\": null,
    \"vatSum110\": null,
    \"vatSum120\": null,
    \"allowRetailPayed\": \"1\",
    \"nomenclatures\": [
    {
    \"nameNomenclature\": \"Хомут\",
    \"barcodeNomenclature\": \"\",
    \"priceNomenclature\": \"10\",
    \"quantityNomenclature\": \"1\",
    \"measureNomenclature\": \"ШТ\",
    \"kindNomenclature\": \"Т\",
    \"totalPriceNomenclature\": \"10\",
    \"taxRateNomenclature\": \"0\",
    \"totalVat\": \"0\" },
    {
    \"nameNomenclature\": \"Хомут 1\",
    \"barcodeNomenclature\": \"\",
    \"priceNomenclature\": \"1\",
    \"quantityNomenclature\": \"1\",
    \"measureNomenclature\": \"ШТ\",
    \"kindNomenclature\": \"Т\",
    \"totalPriceNomenclature\": \"1\",
    \"taxRateNomenclature\": \"0\",
    \"totalVat\": \"0\" }
    ],
    \"customerEmail\": null,
    \"customerINN\": null,
    \"customerExtId\": null,
    \"taxSystem\": \"8\",
    \"sendEmail\": \"$email\",
    \"sendPhone\": null,
    \"propName\": null,
    \"propVal\": null,
    \"comment\": \"\",
    \"payMethod\": \"4\"}",
    CURLOPT_HTTPHEADER => array(
    "X-SBISAccessToken: ***токен***"
    )
    );
    curl_setopt_array($curl, $chek);
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;

    Но возникла другая проблема: не могу сгенерировать массив CURLOPT_POSTFIELDS с \" и [], а без них ошибки! Пробовал генерировать массив ($tovar) и потом его присваивать \"nomenclatures\": $tovar, но сразу ошибки сыпятся.
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    Ответили мне! Ваше предположение правильное! Как они сказали что companyID это ID кассы! То есть у нас их 4 - и ID дали 4 шт. Но все равно не работает пишет ошибку:
    "{"jsonrpc":"2.0","error":{"code":-32000,"message":"An internal server error occurred.\nPlease try again later.","details":"Возникла ошибка при обработке запроса \r\nПодробная информация: Внутренняя ошибка сервера.\nПопробуйте выполнить операцию позднее. [-1] (ОПИСАНИЕ: Ошибка при вызове обработчика \"RetailImport.CreateSale\" события \"capi.sale.create\": Не правильный формат параметров.)","type":"warning","data":{"classid":"{afd28339-dc44-4ad9-96dc-55a9789c743a}","error_code":-1,"addinfo":null}},"id":null}"
    Я так понимаю, что от них вразумительного ответа не получу почему ошибка, похоже придется методом научного тыка ошибку искать... У Вас такой ошибки не было?
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    Нашу переписку можно смело в ОТЗЫВЫ о СБИС отправлять... Все клещями вытягивать приходится... Они мне до сих пор не дали companyID!
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    Спасибо что отвечаете... Я тоже так думал, что товар, который числиться на остатке в СБИС с маркировкой при продаже автоматом маркировку подтягивает (задавал им этот вопрос, но в ответ одни обещания что разберутся и ответят - создали запрос от моего имени, вот жду теперь официального ответа!), но вроде должно быть обязательное подтверждение маркировки товара, и к сожалению эту систему скоро планируют поэтапно ввести для всех видов товара... Еще им один ребус задал, где в чеке я указываю на какую кассу отправить чек и какой кассе изменить ФН (у меня их 4 шт.!)! Зависли, по имени кассира - ответ "НЕ ЗНАЮ"? Опять мы вам перезвоним...
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    СПАСИБО сразу не заменил Вашего ответа! Получилось sid и token, но теперь следующий вопрос...
    externalId String, обязательный Уникальный идентификатор платежа 4b3d1874-b47c-11ea
    это написано на странице СБИВ в табличке , но в примере его нет, и у Вас его нет! А параметр написан обязательный! Позвонил в СБИС, ответить не смогли - разбираются обещали перезвонить, и еще по моему запросу разбираются с регистрацией маркированного товара, почему нет данных в этом запросе... Будит информация - отпишусь! У Вас работает без externalId? Или вы его где-то получили...
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    А понять что это Ваша организация они отвечали что за это как раз отвечает "sid" и "token". А у Вас companyID случайно нет такой? Если нет в понедельник буду их пытать заново...
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    Я сам их долбил целый час что это не так, но они все где-то консультировались и тыкали мне что цитирую:

    "Чтобы выполнить аутентификацию, используйте логин и пароль от личного кабинета СБИС и параметр «app_client_id». Параметр всегда имеет постоянное значение:
    «1025293145607151» — id организации;
    «2248309793600149» — id арендодателя/франшизы."
    Это указано на странице Аутентификация (https://sbis.ru/help/ofd/api/auth)!

    Но я пока застрял на "Аутентификация веб-сервиса в СБИС через API" и до чека не дошел. Не получается запрос на получение «sid» и «token» сделать! Все варианты с ошибками.... Скиньте, пожалуйста, свой php код на Аутентификация...
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    Я их ДОБИЛ! но самое интересное что они мне про id ответили: эта константа и для всех клиентов она одинаковая, типа это ID СБИСА и она 1025293145607151 для ВСЕХ!
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    Извините за нескромность, но php код можете скинуть для получения "sid" и "token". С Curl сильно не знаком, не знаю куда втыкнуть Content-Type: application/json
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    А POST запрос для получения «sid» и «token» создавался 1 раз, а потом во все остальные запросы вставлялся результат, или в каждой сессии надо этот запрос создавать?
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    maryst1986, К сожалению я еще не так далеко продвинулся, но если наткнусь то обязательно отпишусь.
  • Почему в postman работает curl, а на сервере нет?

    @DDA2104
    Здравствуйте, подскажите ответ на 2 вопроса:
    1. - Окончательный рабочий код все таки как в вопросе?
    2. - при регистрации чека печать этого чека происходит? Касса сейчас печатает из Сбис программы.
    Цель хочу попробовать к 1С 7.7 привинтить... Не могу пока понять может ли 1С7.7 POST запрос отправлять. Но если не может, то придется отправлять на свой сайт GET запрос (1С7.7 это умеет), там формировать POST запрос и отправлять его уже в Сбис.