rommea/diadoc-php

Diadoc API 实现

dev-master 2023-11-28 09:55 UTC

This package is auto-updated.

Last update: 2024-09-28 11:52:05 UTC


README

diadoc.ru API 客户端。

基于另一个客户端进行开发。 https://github.com/agentsib/diadoc-php

项目开发已久停滞不前,不得不添加新方法以使其工作。

示例

<?php

declare(strict_types=1);

use Diadoc\Proto\GetOrganizationsByInnListRequest;

require __DIR__ . '/vendor/autoload.php';
$api = new \MagDv\Diadoc\DiadocApi(
    '111111111111111111111111111111111',
    'https://diadoc-api.kontur.ru/'
);

$token = $api->authenticateLogin('ddddddddddd@google.com', 'vvllvlvlv');

// это место использовать только если уже есть токен, когда не надо повторно логиниться
$api->setToken($token);


// выводим список контрагентов нашей организации
$orgId = 'ламлвоалоывлолыовлаоыловалоыва';
$contragents = $api->getCountragentsV2($orgId);

// количество контрагентов
var_dump($contragents->getTotalCount());

/** @var Diadoc\Proto\Counteragent $item */
foreach ($contragents->getCounteragents() as $item) {
    $org = $item->getOrganization();
    // пример вывода данных из ответа
    if ($org) {
        $d = [];
        $d['konturId'] = $org->getOrgId();
        $d['inn'] = $org->getInn();
        $d['fullName'] = $org->getFullName();
        $d['shortName'] = $org->getShortName();
        $d['kpp'] = $org->getKpp();
        $d['ogrn'] = $org->getOgrn();
        $d['isRoaming'] = $org->getIsRoaming();
    }
    var_dump($d);
}

测试

 Тест не дает полной картины работоспособности апи. 
 Мы не можем быть уверены, что нам всегда возвращают нужные данные, т.к. стенд тестовый.
 Тут я скорее проверяют, что обращаюсь куда надо и что плюс-минус все работает.

如何进行开发

在 Compose 中我连接了脚本

  • 用于代码风格 composer fix-style
  • 从 proto 文件生成 php 类 composer generate-proto. 要使生成工作,系统中必须已安装 protobuf
  • 运行 Recto composer rector(一次性连接帮助,但决定保留)

也可以使用 Makefile 来实现上述所有功能。

从 proto 文件生成 php 类

所有关于选择 proto 文件的逻辑都位于 testAuth.php 文件中。如果 Diadoc API 的描述中出现了新内容或者直接不足,则首先需要更改 proto 文件。

  • 进入目录 proto,在此处查找所需内容或添加新内容。
  • 运行 composer generate-proto
  • 查看在 phpProto 文件夹中生成的内容
  • 现在需要在我们的代码中使用新字段。

也可以使用 Makefile 来实现上述所有功能。