optigov/optigov-api-php

此包已被废弃,不再维护。没有建议的替代包。
关于此包最新版本(v3.0.8)没有可用的许可证信息。

optiGov API PHP 客户端库,用于 V1 版本的 API

v3.0.8 2022-07-12 21:46 UTC

This package is auto-updated.

Last update: 2023-08-12 23:59:01 UTC


README

有关更多信息,请参阅 optiGov 文档

安装

composer require optigov/optigov-api-php

快速入门

实例化

optiGov 客户端可以通过 Client 类进行实例化。在此过程中需要 API 端点 URL、OAuth2.0 认证端点 URL 和 OAuth2.0 令牌端点 URL。

$optiGov = new \OptiGov\Client(API_ENDPUNKT, OAUTH_AUTH_ENDPUNKT, OAUTH_TOKEN_ENDPUNKT);

查询

库内的查询分为所谓的 Responsibilities。这些包含各种责任 - 例如,GlobalResponsibility 负责所有与管理部门无关的通用查询。而 VerwaltungResponsibility 负责处理所有关于管理部门条目的查询,而 BuergerResponsibility 承担所有需要公民授权的功能。

全局责任

查询一个服务,或仅查询其名称

$optiGov->dienstleistung($id);
$optiGov->dienstleistungName($id);

查询一个机构,或仅查询其名称

$optiGov->einrichtung($id);
$optiGov->einrichtungName($id);

查询一个员工,或仅查询其/她的名称

$optiGov->mitarbeiter($id);
$optiGov->mitarbeiterName($id);

为了登录公民,此库使用 optiGov 提供的带有 PKCE 的 OAuth2.0 授权流程。这分为两个步骤。首先生成一个用于重定向的授权 URL

// get data needed for OAuth2.0 authorization
$oauthInformation = $optiGov->oauthAuthorize(
    OPTIGOV_OAUTH_CLIENT_ID,
    OPTIGOV_OAUTH_CLIEBNT_REDIRECT_URL,
);

// get state and code verifier and authorization url
$state = $oauthInformation["state"];
$codeVerifier = $oauthInformation["code_verifier"];
$url = $oauthInformation["url"];

公民登录后,将授权码发送到 OPTIGOV_OAUTH_CLIENT_REDIRECT_URL,然后可以按照以下方式查询 Access 和 Refresh 令牌

// get tokens form oauth token endpoint
$tokens = $optiGov->oauthGetTokens(
    $codeVerifier, // code verifier from step one
    $_GET["code"], // code from the get parameters
    OPTIGOV_OAUTH_CLIENT_ID,
    OPTIGOV_OAUTH_CLIEBNT_REDIRECT_URL,
);

管理部门责任

查询所有服务

$optiGov->verwaltung($id)->alleDienstleistungen();

查询所有主题领域

$optiGov->verwaltung($id)->alleThemenfelder();

查询所有机构

$optiGov->verwaltung($id)->alleEinrichtungen();

查询所有员工

$optiGov->verwaltung($id)->alleMitarbeiter();

公民责任

查询公民的所有申请

$optiGov->buerger(REFRESH_TOKEN)->alleAntraege();

查询公民的所有预约

$optiGov->buerger(REFRESH_TOKEN)->alleTermine();

查询公民的所有聊天

$optiGov->buerger(REFRESH_TOKEN)->alleChats();

查询公民的一个聊天

$optiGov->buerger(REFRESH_TOKEN)->chat($id);

查询公民的所有数据

$optiGov->buerger(REFRESH_TOKEN)->daten();

提交一个预填充数据的申请

$optiGov->buerger(REFRESH_TOKEN)->stelleAntrag(
    FORMULAR_ID,
    SUCCESS_REDIRECT_URL,
    [
        "AS.Daten.Parkzone" => "Zone F",
        "cancelUrl" => CANCEL_REDIRECT_URL,
    ]
);

上传一个文件

$optiGov->buerger(REFRESH_TOKEN)->dateiHochladen($pfad, $name, $bezeichner);

删除公民的所有数据

$optiGov->buerger(REFRESH_TOKEN)->loescheBuerger();

创建一个新的聊天

$optiGov->buerger(REFRESH_TOKEN)->erstelleChat($name, $mitarbeiterId);

发送一条新消息

$optiGov->buerger(REFRESH_TOKEN)->sendeNachricht($inhalt, $chatId, dateien: []);

测试和参与

单元测试

注意:单元测试需要文件 tests/bootstrap.php,它定义了以下必要的常量

const BACKEND_URL = "https://..."; // API-Endpunkt
const REFRESH_TOKEN = "..."; // Refresh-Token eines Bürgers
const TEST_CHAT_ID = -1; // ID eines Chats, welcher dem Bürger gehört
const TEST_ANTRAG_FORMULAR_ID = -1; // ID eines Antrags, welcher im Namen des Bürgers gestellt wird
const TEST_ANTRAG_WEITERLEITUNG_URL = "https://..."; // Ziel-URL für erfolgreiche Weiterleitung nach Antragdurchführung
const TEST_ANTRAG_PARAMETER = []; // Parameter, welche dem Antrag übergeben werden

执行所有测试

composer run-script test

参与

如有兴趣参与库的开发,请联系 hallo@optigov.de