# PHPOrangeData PHP integration for OrangeData service Актуальная версия библиотеки: 3.0.0 Версия PHP: 5.6.6+ Версия протокола взаимодействия с интернет кассой: 2.22.0 от 28.04.2019 # Содержание # Начало работы ## Подключение библиотеки Для начала работы необходимо подключить файл класса: ```php '0123456789', 'api_url' => '2443', // 'api_url' => 'https://apip.orangedata.ru:2443', // link access 'sign_pkey' => dirname(__DIR__) . '/secure_path/private_key.pem', 'ssl_client_key' => dirname(__DIR__) . '/secure_path/client.key', 'ssl_client_crt' => dirname(__DIR__) . '/secure_path/client.crt', 'ssl_ca_cert' => dirname(__DIR__) . '/secure_path/cacert.pem', 'ssl_client_crt_pass' => 1234, ]; $buyer = new orangedata\orangedata_client($client); // create new client ``` **Cвойства клиента** | Имя | Обязательное поле | Описание | | ------------------- | -------------------- | ------------------------------------------------------------------ | | inn | Да | ИНН организации (строка от 1 до 64) | | api_url | Да | Порт, на который будем отправлять запросы или Адрес API или прокси | | sign_pkey | Да | Путь к приватному ключу, который используется для подписи "чека" | | ssl_client_key | Да | Путь к приватному ключу используемому для 2ssl взаимодействия | | ssl_client_crt | Да | Путь к клиентскому сертификату используемому для 2ssl | | ssl_ca_cert | Да | Путь к cacert.pem | | ssl_client_crt_pass | Да | Пароль к клиентскому сертификату | Для включения записи логов в файл 'curl.log', прописываем: ```php is_debug(); ``` # Заказ ## Создание заказа После того, как создали клиента, можно приступить к созданию заказа. ```php '23423423434', 'type' => 1, 'customerContact' => 'example@example.com', 'taxationSystem' => 1, 'key' => '1234567', ]; $buyer->create_order($order); ``` **Cвойства заказа** | Имя | Обязательное поле | Описание | | ------------------- | -------------------- | ------------------------------------------------------------------ | | id | Да | Идентификатор документа (строка от 1 до 64) | | type | Да | 1 - Приход
2 - Возврат прихода
3 - Расход
4 - Возврат расхода | | customerContact | Да | Телефон или электронный адрес покупателя (строка от 1 до 64) | | taxationSystem | Да | 0 - Общая, ОСН
1 - Упрощенная доход, УСН доход
2 - Упрощенная доход минус расход, УСН доход - расход
3 - Единый налог на вмененный доход, ЕНВД
4 - Единый сельскохозяйственный налог, ЕСН
5 - Патентная система налогообложения, Патент | | key | Да | Название ключа, который должен быть использован для проверки подпись. Для клиентов используется их ИНН, для партнеров и платежных агентов код с маской 301****, для вендинга 401**** (cтрока от 1 до 32 ) | | group | Да | Группа устройств, с помощью которых будет пробит чек (строка от 1 до 32 символов), по умолчанию 'Main' | ### Добавление позиции в заказ ```php '10', 'price' => 100, 'tax' => 1, 'text' => 'some text', 'paymentMethodType' => 3, 'paymentSubjectType' => 1, 'nomenclatureCode' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', 'supplierInfo' => [ 'phoneNumbers' => ['+79266660011', '+79293456723'], 'name' => 'PAO Example', ], 'supplierINN' => 1234567890, 'agentType' => 127, 'agentInfo' => [ 'paymentTransferOperatorPhoneNumbers' => ['+79266660011', '+79293456723'], 'paymentAgentOperation' => 'some operartion', 'paymentAgentPhoneNumbers' => ['+79266660011', '+79293456723'], 'paymentOperatorPhoneNumbers' => ['+79266660011'], 'paymentOperatorName' => 'OAO ATLANT', 'paymentOperatorAddress' => 'Address', 'paymentOperatorInn' => 1234567890, ], 'unitOfMeasurement' => 'kg', 'additionalAttribute' => 'attribute', 'manufacturerCountryCode' => '534', 'customsDeclarationNumber' => 'AD 11/77 from 01.08.2018', 'excise' => '12.43', ]; $buyer->add_position_to_order($position); ``` **Cвойства позиции** | Имя | Обязательное поле | Описание | | ------------------- | -------------------- | ------------------------------------------------------------------ | | quantity | Да | Количество предмета расчета (десятичное число) | | price | Да | Цена за единицу предмета расчета с учетом скидок и наценок (десятичное число) | | tax | Да | Ставка НДС:
1 - ставка НДС 20%
2 - ставка НДС 10%
3 - ставка НДС расч. 20/120
4 - ставка НДС расч. 10/110
5 - ставка НДС 0%
6 - НДС не облагается | | text | Да | Наименование предмета расчета (строка до 128 символов) | | paymentMethodType | Да | Признак способа расчета:
1 - Предоплата 100%
2 - Частичная предоплата
3 - Аванс
4 - Полный расчет
5 - Частичный расчет и кредит
6 - Передача в кредит
7 - оплата кредита | | paymentSubjectType | Да | Признак предмета расчета:
1 - Товар
2 - Подакцизный товар
3 - Работа
4 - Услуга
5 - Ставка азартной игры
6 - Выигрыш азартной игры
7 - Лотерейный билет
8 - Выигрыш лотереи
9 - Предоставление РИД
10 - Платеж
11 - Агентское вознаграждение
12 - Составной предмет расчета
13 - Иной предмет расчета
14 - Имущественное право
15 - Внереализационный доход*
16 - Страховые взносы*
17 - Торговый сбор
18 - Курортный сбор
19 - Залог | | nomenclatureCode | | Код товарной номенклатуры (строка, содержащая base64 кодированный массив от 1 до 32 байт) | | supplierInfo | | Данные поставщика (смотреть "Свойства supplierInfo") | | supplierINN | | ИНН поставщика (строка длиной от 10 до 12 символов) | | agentType | | Признак агента по предмету расчета (Число от 1 до 127) | | agentInfo | | Данные агента (смотреть "Свойства agentInfo") | | unitOfMeasurement | | Единица измерения предмета расчета (строка от 1 до 16) | | additionalAttribute | | Дополнительный реквизит предмета расчета (строка от 1 до 64) | | manufacturerCountryCode | | Код страны происхождения товара (строка длиной от 1 до 3 ) | | customsDeclarationNumber | | Номер таможенной декларации (строка от 1 до 32) | | excise | | Акциз (десятичное число) | **Cвойства supplierInfo** | Имя | Обязательное поле | Описание | | ------------------- | -------------------- | ------------------------------------------------------------------ | | phoneNumbers | | Телефон поставщика (массив строк длиной от 1 до 19 символов) | | name | | Наименование поставщика (строка до 239 символов) | **Cвойства agentInfo** | Имя | Обязательное поле | Описание | | ----------------------------------- | -------------------- | ------------------------------------------------------------------ | | paymentTransferOperatorPhoneNumbers | | Телефон оператора перевода (массив строк длиной от 1 до 19 символов) | | paymentAgentOperation | | Операция платежного агента (строка до 24 символов) | | paymentAgentPhoneNumbers | | Телефон платежного агента (массив строк длиной от 1 до 19 символов) | | paymentOperatorPhoneNumbers | | Телефон оператора по приему платежей (массив строк длиной от 1 до 19 символов) | | paymentOperatorName | | Наименование оператора перевода (строка до 64 символов) | | paymentOperatorAddress | | Адрес оператора перевода (строка до 243 символов) | | paymentOperatorINN | | ИНН оператора перевода (cтрока длиной от 10 до 12 символов) | ### Добавление оплаты в заказ ```php 16, 'amount' => 131.23, ]; $buyer->add_payment_to_order($payment); ``` **Cвойства оплаты** | Имя | Обязательное поле | Описание | | ------------------- | -------------------- | ------------------------------------------------------------------ | | type | Да | Тип оплаты:
1 - сумма по чеку наличными, 1031
2 - сумма по чеку безналичными, 1081
14 - сумма по чеку предоплатой (зачетом аванса и (или) предыдущих платежей), 1215
15 - сумма по чеку постоплатой (в кредит), 1216
16 - сумма по чеку (БСО) встречным предоставлением, 1217 | | amount | Да | Сумма оплаты (десятичное число) | ### Добавление агента в заказ ```php 127, 'paymentTransferOperatorPhoneNumbers' => ['+79998887766', '+76667778899'], 'paymentAgentOperation' => 'Operation', 'paymentAgentPhoneNumbers' => ['+79998887766'], 'paymentOperatorPhoneNumbers' => ['+79998887766'], 'paymentOperatorName' => 'Name', 'paymentOperatorAddress' => 'ulitsa Adress, dom 7', 'paymentOperatorINN' => '3123011520', 'supplierPhoneNumbers' => ['+79998887766', '+76667778899'], ]; $buyer->add_agent_to_order($agent); ``` **Cвойства агента** | Имя | Обязательное поле | Описание | | ----------------------------------- | -------------------- | ------------------------------------------------------------------ | | agentType | | Признак агента по предмету расчета (число от 1 до 127) | | paymentTransferOperatorPhoneNumbers | | Телефон оператора перевода (массив строк длиной от 1 до 19 символов) | | paymentAgentOperation | | Операция платежного агента (строка до 24 символов) | | paymentAgentPhoneNumbers | | Телефон платежного агента (массив строк длиной от 1 до 19 символов) | | paymentOperatorPhoneNumbers | | Телефон оператора по приему платежей (массив строк длиной от 1 до 19 символов) | | paymentOperatorName | | Наименование оператора перевода (строка до 64 символов) | | paymentOperatorAddress | | Адрес оператора перевода (строка до 243 символов) | | paymentOperatorINN | | ИНН оператора перевода (cтрока длиной от 10 до 12 символов) | | supplierPhoneNumbers | | Телефон поставщика (массив строк длиной от 1 до 19 символов) | ### Добавление дополнительного реквизита пользователя ```php 'Like', 'value' => 'Example', ]; $buyer->add_user_attribute($userAttribute); ``` **Cвойства дополнительного реквизита пользователя** | Имя | Обязательное поле | Описание | | ----------------------------------- | -------------------- | ------------------------------------------------------------------ | | name | | Наименование дополнительного реквизита пользователя (строка от 1 до 64 символов) | | value | | Значение дополнительного реквизита пользователя (строка от 1 до 234 символов) | ### Добавление дополнительных полей ```php 'Attribute', 'customer' => 'Ivanov Ivan', 'customerINN' => '0987654321', ]; $buyer->add_additional_attributes($additional); ``` **Cвойства дополнительных полей** | Имя | Обязательное поле | Описание | | ----------------------------------- | -------------------- | ------------------------------------------------------------------ | | additionalAttribute | | Дополнительный реквизит чека(БСО) (строка от 1 до 16 символов) | | customer | | Покупатель (клиент) (строка от 1 до 243 символов) | | customerINN | | ИНН покупателя (клиента) (Строка длиной от 10 до 12 символов) | ### Добавление вендинга в заказ ```php '21321321123', 'settlementAddress' => 'Address', 'settlementPlace' => 'Place', ]; $buyer->add_vending_to_order($vending); ``` **Cвойства вендинга** | Имя | Обязательное поле | Описание | | ----------------------------------- | -------------------- | ------------------------------------------------------------------ | | automatNumber | | Номер автомата (строка от 1 до 20 символов) | | settlementAddress | | Адрес расчетов (строка от 1 до 243 символов) | | settlementPlace | | Место расчетов (Строка длиной от 10 до 12 символов) | ## Отправка заказа После того, как заполнены все поля заказа и добавлены все параметры, можно отправлять заказ на обработку: ```php send_order(); var_dump($result); ``` ## Проверка статуса заказа ```php get_order_status(23423423434); var_dump($order_status); ``` # Чек коррекции ## Создание чека коррекции ```php '23423423', 'key' => '1234567', 'correctionType' => 0, 'type' => 1, 'description' => 'cashier error', 'causeDocumentDate' => new \DateTime(), 'causeDocumentNumber' => '56ce', 'totalSum' => 567.9, 'cashSum' => 567, 'eCashSum' => 0.9, 'prepaymentSum' => 0, 'postpaymentSum' => 0, 'otherPaymentTypeSum' => 0, 'tax1Sum' => 0, 'tax2Sum' => 0, 'tax3Sum' => 0, 'tax4Sum' => 0, 'tax5Sum' => 0, 'tax6Sum' => 0, 'taxationSystem' => 2, ]; $buyer->create_correction($correction); ``` **Cвойства чека коррекции** | Имя | Обязательное поле | Описание | | ----------------------------------- | -------------------- | ------------------------------------------------------------------ | | id | Да | Идентификатор документа (строка от 1 до 64 символов) | | group | Да | Группа устройств, с помощью которых будет пробит чек (строка от 1 до 32 символов), по умолчанию 'Main' | | key | Да | Название ключа, который должен быть использован для проверки подписи (строка от 1 до 32 символов) | | correctionType | Да | Тип коррекции 1173:
0. Самостоятельно
1. По предписанию | | type | Да | Признак расчета, 1054:
1. Приход
3. Расход | | description | Да | Описание коррекции (cтрока от 1 до 243 символов. ) | | causeDocumentDate | Да | Дата документа основания для коррекции (время в виде строки в формате ISO8601) | | causeDocumentNumber | Да | Номер документа основания для коррекции (строка от 1 до 32 символов) | | totalSum | Да | Сумма расчета, указанного в чеке (десятичное число) | | cashSum | | Сумма по чеку (БСО) наличными (десятичное число) | | eCashSum | | Сумма по чеку (БСО) безналичными (десятичное число) | | prepaymentSum | | Сумма по чеку (БСО) предоплатой (зачетом аванса и (или) предыдущих платежей) (десятичное число) | | postpaymentSum | | Сумма по чеку (БСО) постоплатой (в кредит) (десятичное число) | | otherPaymentTypeSum | | Сумма по чеку (БСО) встречным предоставлением (десятичное число) | | tax1Sum | | Сумма НДС чека по ставке 20% (десятичное число) | | tax2Sum | | Сумма НДС чека по ставке 10% (десятичное число) | | tax3Sum | | Сумма расчета по чеку с НДС по ставке 0% (десятичное число) | | tax4Sum | | Сумма расчета по чеку без НДС (десятичное число) | | tax5Sum | | Сумма НДС чека по расч. ставке 20/120 (десятичное число) | | tax6Sum | | Сумма НДС чека по расч. ставке 10/110 (десятичное число) | | taxationSystem | | Применяемая система налогообложения, 1055:
0. Общая
1. Упрощенная доход
2. Упрощенная доход минус расход
3. Единый налог на вмененный доход
4. Единый сельскохозяйственный налог
5. Патентная система налогообложения | ### Добавление вендинга в чек коррекции ```php '21321321123', 'settlementAddress' => 'Address', 'settlementPlace' => 'Place', ]; $buyer->add_vending_to_correction($correctionVending); ``` **Cвойства вендинга** | Имя | Обязательное поле | Описание | | ----------------------------------- | -------------------- | ------------------------------------------------------------------ | | automatNumber | | Номер автомата (строка от 1 до 20 символов) | | settlementAddress | | Адрес расчетов (строка от 1 до 243 символов) | | settlementPlace | | Место расчетов (Строка длиной от 10 до 12 символов) | ## Отправка чека коррекции ```php post_correction(); var_dump($result); ``` ## Проверка статуса чека коррекции ```php get_correction_status('23423423'); var_dump($cor_status); ```