/PHP-OrangeData-official

PHP integration for OrangeData service

Primary LanguagePHPMIT LicenseMIT

PHPOrangeData

PHP integration for OrangeData service

Актуальная версия библиотеки: 3.0.0

Версия PHP: 5.6.6+

Версия протокола взаимодействия с интернет кассой: 2.22.0 от 28.04.2019

Содержание

Начало работы

Подключение библиотеки

Для начала работы необходимо подключить файл класса:

<?php
include_once 'orangedata_client.php';

Создание клиента

<?php
$client = [
  'inn' => '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
$buyer->is_debug();

Заказ

Создание заказа

После того, как создали клиента, можно приступить к созданию заказа.

<?php
$order = [
  'id' => '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
$position = [
  'quantity' => '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
$payment = [
  'type' => 16,
  'amount' => 131.23,
];

$buyer->add_payment_to_order($payment);

Cвойства оплаты

Имя Обязательное поле Описание
type Да Тип оплаты:
1 - сумма по чеку наличными, 1031
2 - сумма по чеку безналичными, 1081
14 - сумма по чеку предоплатой (зачетом аванса и (или) предыдущих платежей), 1215
15 - сумма по чеку постоплатой (в кредит), 1216
16 - сумма по чеку (БСО) встречным предоставлением, 1217
amount Да Сумма оплаты (десятичное число)

Добавление агента в заказ

<?php
$agent = [
  'agentType' => 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
$userAttribute = [
  'name' => 'Like',
  'value' => 'Example',
];

$buyer->add_user_attribute($userAttribute);

Cвойства дополнительного реквизита пользователя

Имя Обязательное поле Описание
name Наименование дополнительного реквизита пользователя (строка от 1 до 64 символов)
value Значение дополнительного реквизита пользователя (строка от 1 до 234 символов)

Добавление дополнительных полей

<?php
$additional = [
  'additionalAttribute' => 'Attribute',
  'customer' => 'Ivanov Ivan',
  'customerINN' => '0987654321',
];

$buyer->add_additional_attributes($additional);

Cвойства дополнительных полей

Имя Обязательное поле Описание
additionalAttribute Дополнительный реквизит чека(БСО) (строка от 1 до 16 символов)
customer Покупатель (клиент) (строка от 1 до 243 символов)
customerINN ИНН покупателя (клиента) (Строка длиной от 10 до 12 символов)

Добавление вендинга в заказ

<?php
$vending = [
  'automatNumber' => '21321321123',
  'settlementAddress' => 'Address',
  'settlementPlace' => 'Place',
];

$buyer->add_vending_to_order($vending);

Cвойства вендинга

Имя Обязательное поле Описание
automatNumber Номер автомата (строка от 1 до 20 символов)
settlementAddress Адрес расчетов (строка от 1 до 243 символов)
settlementPlace Место расчетов (Строка длиной от 10 до 12 символов)

Отправка заказа

После того, как заполнены все поля заказа и добавлены все параметры, можно отправлять заказ на обработку:

<?php
$result = $buyer->send_order();
var_dump($result);

Проверка статуса заказа

<?php
$order_status = $buyer->get_order_status(23423423434);
var_dump($order_status);

Чек коррекции

Создание чека коррекции

<?php
$correction = [
  'id' => '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
$correctionVending = [
  'automatNumber' => '21321321123',
  'settlementAddress' => 'Address',
  'settlementPlace' => 'Place',
];

$buyer->add_vending_to_correction($correctionVending);

Cвойства вендинга

Имя Обязательное поле Описание
automatNumber Номер автомата (строка от 1 до 20 символов)
settlementAddress Адрес расчетов (строка от 1 до 243 символов)
settlementPlace Место расчетов (Строка длиной от 10 до 12 символов)

Отправка чека коррекции

<?php
$result = $buyer->post_correction();
var_dump($result);

Проверка статуса чека коррекции

<?php
$cor_status = $buyer->get_correction_status('23423423');
var_dump($cor_status);