djjerry85 / atol-online
用于操作АТОЛ在线的库。从 quasar/atol-online 分支
4.1.1
2021-02-22 11:20 UTC
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.12
- phpunit/phpunit: ^7.2
README
用于操作 АТОЛ Онлайн v4 的 PHP 库。
该库包含用于向 АТОЛ Онлайн 发送请求和接收响应的 PHP 类。所有类的名称和属性都尽可能符合 АТОЛ Онлайн v4 官方文档。
要求
- PHP 7.1 或更高版本
- PHP cURL 扩展 (ext-curl)
- PHP JSON 扩展 (ext-json)
该库使用标准的 PSR-兼容缓存(请参阅 http://www.php-cache.com)来存储 API 访问的临时密钥。
支持任何 PSR-兼容缓存,例如,可以使用文件缓存(请参阅 https://github.com/php-cache/filesystem-adapter)。为此,需要使用 Composer 进行安装
$ composer require cache/filesystem-adapter
安装
该包可以通过包管理器 Composer 进行安装
$ composer require it-quasar/atol-online
使用
为了在 KKT 中注册文档,需要执行以下代码
<?php // Классы PSR-совместимого кеша (в данном примере используется Filesystem кеш, может быть любой другой) use Cache\Adapter\Filesystem\FilesystemCachePool; use League\Flysystem\Adapter\Local; use League\Flysystem\Filesystem; use ItQuasar\AtolOnline\AtolClient; use ItQuasar\AtolOnline\Client; use ItQuasar\AtolOnline\Company; use ItQuasar\AtolOnline\Item; use ItQuasar\AtolOnline\Payment; use ItQuasar\AtolOnline\Receipt; use ItQuasar\AtolOnline\Sell; use ItQuasar\AtolOnline\Service; use ItQuasar\AtolOnline\SnoSystem; use ItQuasar\AtolOnline\Vat; use ItQuasar\AtolOnline\VatType; // Создадим время заказа $timestamp = new DateTime(); $timestamp ->setDate(2017, 05, 29) ->setTime(17, 56, 18); // Создадим запрос на продажу // Параметры запроса соответствуют параметрам запроса, описанным в // https://raw.githubusercontent.com/0x6368656174/atol-online/master/api/atol-online-v4.6.pdf $request = new Sell(); $request ->setExternalId('17052917561851307') ->setTimestamp($timestamp); // Создадим чек $receipt = new Receipt(); $receipt->setTotal(7612); // Установми чек для запроса $request->setReceipt($receipt); // Создадим атрибуты клиента $client = new Client(); $client->setEmail('client@example.com'); // Установим атрибуты клиента для чека $receipt->setClient($client); // Создадим атрибуты компании $company = new Company(); $company ->setEmail('shop@example.com') ->setSno(SnoSystem::OSN) ->setInn('331122667723') ->setPaymentAddress('http://example.com'); // Установим атрибуты компании для чека $receipt->setCompany($company); // Создадим атрибут налога под 20% НДС $vat20 = new Vat(); $vat20->setType(VatType::VAT20); // Создадим первую позицию $item1 = new Item('Название товара 1'); $item1 ->setPrice(5000) ->setQuantity(1) ->setSum(5000) ->setVat($vat20) ->setPaymentObject(PaymentObject::COMMODITY) ->setPaymentMethod(PaymentMethod::FULL_PAYMENT); // Добавим в чек первую позицию $receipt->addItem($item1); // Создадим вторую позицию $item2 = new Item('Название товара 2'); $item2 ->setPrice(1456.21) ->setQuantity(2) ->setVat($vat20) ->setPaymentObject(PaymentObject::COMMODITY) ->setPaymentMethod(PaymentMethod::FULL_PAYMENT) ->setMeasurementUnit('кг'); // Добавим в чек вторую позицию $receipt->addItem($item2); // Создадим оплату $payment = new Payment(); $payment ->setSum(7612) ->setType(Payment::TYPE_ELECTRONIC); // Добавим в чек оплату $receipt->addPayment($payment); // Создадим служебный раздел $service = new Service(); $service->setCallbackUrl('http://example.com/payment-result'); // Установим служебный раздел для запроса на продажу $request->setService($service); // PSR-совместимый интерфейс кеширования, см. http://www.php-cache.com // В данном случае используется Filesystem кеш, настроим его пул и получим итем для кеширования $filesystemAdapter = new Local(__DIR__.'/'); $filesystem = new Filesystem($filesystemAdapter); $pool = new FilesystemCachePool($filesystem); $cache = $pool->getItem('atol'); // PSR-совместимый логгер (опциональный параметр) $logger = null; // Логин, пароль и код группы можно найти в "Настройках интергатора", скачиваемых с // личного кабинета АТОЛ Онлайн в ноде <access> $login = 'netletest'; $passwor = 'v2AfscRjr'; $groupCode = 'netletest_8491'; // Создадим клиент $client = new AtolClient($login, $password, $groupCode, $cache, $logger); // Отравим запрос // $uuid будет содержать UUID документа в системе АТОЛ Онлайн $uuid = $client->send($request);
可用的请求
ItQuasar/AtolOnline/Sell
- 收款小票;ItQuasar/AtolOnline/SellRefund
- 收款退货小票;ItQuasar/AtolOnline/SellCorrection
- 收款更正小票;ItQuasar/AtolOnline/Buy
- 支出小票;ItQuasar/AtolOnline/BuyRefund
- 支出退货小票;ItQuasar/AtolOnline/BuyCorrection
- 支出更正小票。
要获取文档处理状态,需要执行以下代码
<?php // Классы PSR-совместимого кеша (в данном примере используется Filesystem кеш, может быть любой другой) use Cache\Adapter\Filesystem\FilesystemCachePool; use League\Flysystem\Adapter\Local; use League\Flysystem\Filesystem; use ItQuasar\AtolOnline\AtolClient; use ItQuasar\AtolOnline\Report; // PSR-совместимый интерфейс кеширования, см. http://www.php-cache.com // В данном случае используется Filesystem кеш, настроим его пул и получим итем для кеширования $filesystemAdapter = new Local(__DIR__.'/'); $filesystem = new Filesystem($filesystemAdapter); $pool = new FilesystemCachePool($filesystem); $cache = $pool->getItem('atol'); // PSR-совместимый логгер (опциональный параметр) $logger = null; // Логин, пароль и код группы можно найти в "Настройках интергатора", скачиваемых с // личного кабинета АТОЛ Онлайн в ноде <access> $login = 'netletest'; $passwor = 'v2AfscRjr'; $groupCode = 'netletest_8491'; // Создадим клиент $client = new AtolClient($login, $password, $groupCode, $cache, $logger); // UUID документа, полученный при регистрации документа в системе АТОЛ Онлайн $uuid = '...'; // Отравим запрос на получение статуса обработки. // $report будет содержать ItQuasar/AtolOnline/Report, // который соответствует структуре описанной в // https://raw.githubusercontent.com/0x6368656174/atol-online/master/api/atol-online-v4.6.pdf $report = $client->getReport($uuid);