alekciy/ php-ofd-sdk
该库与税务数据运营商(ОФД)API协同工作
v0.4.1
2022-10-24 20:49 UTC
Requires
- php: ^7.3|^8.0
- ext-json: *
- ext-mbstring: *
- guzzlehttp/guzzle: ^6.5
- vlucas/valitron: ^1.4
Requires (Dev)
- phpstan/phpstan: ^1.2
- phpunit/phpunit: ^9.5
README
该库提供统一接口(见ProviderInterface)用于与不同税务数据运营商(ОФД)交互,获取税务文件(发票)的数据。
主要目标是简化与不同API运营商的集成。例如,在同步收银机打印的发票数据与税务部门数据时。
支持的税务数据运营商
安装
通过composer命令: composer require alekciy/php-ofd-sdk
示例
以下为Takcom和Yandex.OFD的工作示例。
<?php include_once __DIR__ . '/vendor/autoload.php'; use alekciy\ofd\providers\taxcom\Client as TaxcomClient; use alekciy\ofd\providers\taxcom\Credentials as TaxcomCredentials; use alekciy\ofd\providers\taxcom\Taxcom; use alekciy\ofd\providers\yandex\Client as YandexClient; use alekciy\ofd\providers\yandex\Credentials as YandexCredentials; use alekciy\ofd\providers\yandex\Yandex; // ============ Инициализация клиента ============ // У каждого провайдера свои требование при работе через API поэтому инициализация клиента // зависит от используемого провайдера. // Инициализируем Такском API клиент $credentials = new TaxcomCredentials( 'api-lk-ofd.taxcom.ru', 'логин', 'пароль', 'токен' ); $agreementNumber = 'Номер договора'; $client = new TaxcomClient($credentials, $agreementNumber); $taxcom = new Taxcom($client); // Инициализация Яндекс.ОФД клиент $credentials = new YandexCredentials( 'api.ofd.yandex.net', 'аутентификационный ключ', 'авторизационный ключ' ); $client = new YandexClient($credentials); $yandex = new Yandex($client); // ============ Получение данных ============ // Получаем список точек продаж с Такском... $outletList = $taxcom->getOutletList(); $outlet = current($outletList); // ...список касс с первой точки... $cashDeskList = $taxcom->getCashDeskList($outlet); $cashDesk = current($cashDeskList); // ...и список смен с первой кассы $shiftList = $taxcom->getShiftList($cashDesk); // Получение смен через Яндекс.ОФД выглядит точно так же $outletList = $yandex->getOutletList(); $outlet = current($outletList); $cashDeskList = $taxcom->getCashDeskList($outlet); $cashDesk = current($cashDeskList); $shiftList = $taxcom->getShiftList($cashDesk);
测试
库中使用了两种类型的测试
- 单元测试,用于检查库本身的正确性;
- 集成测试,用于检查指定税务数据运营商API的工作。
单元测试
要运行测试,需要
- 执行命令
composer test-unit
。
集成测试
要运行测试,需要
- 将所需税务数据运营商的文件(例如,taxcom)
tests/credentials/ОФД.example.php
复制到文件tests/credentials/ОФД.php
中; - 在
tests/credentials/ОФД.php
中填写所需的访问凭证; - 执行命令
composer test-integration-ОФД
。
主要术语
表中术语按照便于理解的方式排列。