alekciy/php-ofd-sdk

该库与税务数据运营商(ОФД)API协同工作

v0.4.1 2022-10-24 20:49 UTC

This package is auto-updated.

Last update: 2024-09-26 11:18:28 UTC


README

该库提供统一接口(见ProviderInterface)用于与不同税务数据运营商(ОФД)交互,获取税务文件(发票)的数据。

主要目标是简化与不同API运营商的集成。例如,在同步收银机打印的发票数据与税务部门数据时。

Scrutinizer Code Quality Build Status

支持的税务数据运营商

安装

通过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的工作。

单元测试

要运行测试,需要

  1. 执行命令composer test-unit

集成测试

要运行测试,需要

  1. 将所需税务数据运营商的文件(例如,taxcom)tests/credentials/ОФД.example.php复制到文件tests/credentials/ОФД.php中;
  2. tests/credentials/ОФД.php中填写所需的访问凭证;
  3. 执行命令 composer test-integration-ОФД

主要术语

表中术语按照便于理解的方式排列。