vassepov/diadoc-php

Diadoc API 实现

dev-master 2024-06-14 04:33 UTC

This package is not auto-updated.

Last update: 2024-09-21 04:03:52 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 来实现上述所有功能。

生成测试证书

https://losst.pro/sozdanie-sertifikata-openssl