it-recht-kanzlei/itrk-plugin-sdk

IT-Recht Kanzlei 法文插件 SDK。

dev-main 2024-06-24 09:58 UTC

This package is auto-updated.

Last update: 2024-09-24 10:28:21 UTC


README

数据以 POST 的形式通过 XML 格式推送到您的界面。文档以 UTF-8 编码。默认的 POST 参数是 "xml"($_POST['xml']),其他协议也是可能的。

PHP SDK 的实现和使用

我们为 IT-Recht Kanzlei 界面的用户提供 PHP SDK。SDK 设计易于使用。首先,必须重写 LTIHandler 类的两个抽象方法之一。

创建自己的 LTI 处理器

认证方法

为确保法律文本的传输来自 IT-Recht Kanzlei 系统,您可以实施以下两种方法之一。

isTokenValid(string $token): bool

如果系统应使用令牌,则必须在此处检查传输的令牌的有效性。令牌由您手动生成或由您的系统自动生成,并在用户通过配置界面设置 IT-Recht Kanzlei 客户端门户时存储。这是首选的认证方法。要生成随机令牌,请参阅 LTI::generateToken()

validateUserPass(string $username, string $password): bool

必须在此处检查传输的用户名和密码的正确性。用户名和密码可以由用户自己分配到您的插件中或由您的插件创建。然后,必须在设置界面时将用户名和密码存储在客户端门户中。

handleActionGetAccountList(): LTIAccountListResult

此函数应返回系统中的所有销售渠道列表。每个销售渠道必须指定一个 ID(accountid)和名称(accountname)。此外,还可以为每个销售渠道传输可用的目标语言和国家/地区列表。

即使您的系统不是多店系统,也建议实现此功能以宣布系统支持的目标语言和国家/地区。对于此用例,只需指定一个销售渠道,其中 ID 指定为 0。账户名称可以保持为空。

重要提示:请确保将这些 5 个特殊 XML 字符替换为相应的实体,存储在销售渠道(accountname)名称中

& => &
< => &lt;
> => &gt;
" => &quot;
' => &apos;

handleActionPush(LTIPushData $data): LTIPushResult

一旦插件收到请求,就必须将文档集成到相应的目标页面中。文档在此进行处理。LTIPushData 对象具有获取文档所有属性的getter方法,可以查询并随后处理。

使用 LTI 类和您已实现的 LTI 处理器

LTI 类(LTI.php)负责处理传入的 XML 数据,评估要执行的操作并执行大多数错误处理。应确保 SDK 完全功能,不应更改此文件。

LTI 类的构造函数需要三个参数。

  1. 您重写的 LTIHandler 类的实例
  2. 您实现针对的系统版本
  3. SDK 在其中使用的您的实现版本

最后一步是调用 LTI 类对象的 handleRequest() 方法。为此,可以直接使用 $_POST['xml'] 作为参数。

SDK 内部错误处理以及为 IT-Recht Kanzlei 服务器准备响应都由 SDK 自动处理。开发者可以忽略这些方面。

SDK 的一个示例实现包含在提供的 example.php 文件中。

通用

版本控制

客户端门户对版本号处理的要求

  • meta_modulversion:在首次创建实现以及每次后续更新时,为您的实现分配递增的版本号。
  • meta_shopversion:如果可能,请也传输一个可以通过比较运算符进行比较的系统版本号(例如“2.0”而不是“XY2” - 否则请请求)。请告知我们您的版本控制方案的结构(例如“major.minor”),以便我们可以正确地内部处理。

多商店系统

如果您的系统是所谓的多商店系统,即在一个管理界面下存在多个销售渠道/服务,那么在您的实现中向用户提供一个列表是必要的,这些销售渠道/服务需要在 IT-Recht Kanzlei 的客户端门户中传输法律文本。

销售渠道列表通过函数 handleActionGetAccountList() 获取。

随后的“推送”操作中,在多商店系统中,用户选择的 accountid 将通过 XML 元素 user_account_id 传输。

最佳实践

  • 在模块首次创建以及每次后续更新时,为您的模块分配合适的递增数字版本号(例如“1.0”、“1.1”、“1.2”……)。除了经典版本号外,还可以使用数字形式的发布日期(例如“20230827”,格式为 YYYYMMDD)。始终在模块的文档/安装说明以及在主要程序文件中至少声明当前版本号。
  • 在模块下载或下载页面上包含易于理解的安装说明。在描述中包含特殊情况(例如针对旧版商店版本)。
  • 在您的实现(更新)的新版本中包含用户说明,说明如何更新到最新版本(这通常与经典安装说明不同),除非更新是自动进行的(例如通过在商店的模块存储中单击“更新”进行)。
  • 在您的实现(更新)的新版本中包含 changelog.txt 或类似的文件,以告知用户新功能和错误修复。

测试

为了测试您的接口实现,请阅读 testSuite 目录下的 README.md。

您可以使用的一个额外测试工具是 LTI 测试工具。在那里,您可以输入测试系统的 API URL 和认证数据,并使用 IT-Recht Kanzlei 的法律文本接口执行请求。

SDK 内部实现的详细信息

如果您无法或不想使用 SDK,下面提供的一些细节可能对您的实现有所帮助。

XML 元素,[数据类型] 和(可能的值)

  • api_version [字符串]

    接口版本号(例如“1.0”)

  • user_auth_token [字符串]

    由您的系统生成,也可以在那里找到。用于认证。

  • action [字符串] (push | getaccountlist | version

    version”仅返回商店版本、模块版本和系统上安装的 PHP 版本。

    getaccountlist”列出所有销售渠道及其支持的语言。

    push”是传输法律文本的命令。

  • user_account_id [字符串]

    仅在通过使用 getaccountlist 动作检索销售渠道列表并客户端已做出选择的情况下,才为多店系统设置。

  • rechtstext_type [字符串] (impressum | agb | datenschutz | widerruf )

    传输的法定文本类型

    • impressum = 版权信息
    • agb = 一般条款和条件
    • datenschutz = 隐私政策
    • widerruf = 取消政策
  • rechtstext_title [字符串]

    原始语言中翻译的法定文本标题

  • rechtstext_text [文本]

    法定文本的文本变体

  • rechtstext_pdf [文本]

    法定文本的PDF版本

  • rechtstext_html [文本]

    法定文本的HTML版本

  • rechtstext_country [字符串]

    ISO 3166-1-alpha-2,国家,例如“DE”代表德国,以大写形式传输

  • rechtstext_language [字符串]

    ISO 639-1,法定文本的语言,例如“de”代表德语,以小写形式传输

  • rechtstext_language_iso639_2b [字符串]

    ISO 639-2文献代码(B代码),法定文本的语言,例如“ger”代表德语,以小写形式传输

状态代码

  • 成功:一切顺利。您确认,
    • 查询版本时没有发生错误
    • 查询账户列表时没有发生错误
    • 当推送法定文本时,它已在用户的账户/商店中成功发布
  • 错误:无论错误代码如何,错误响应的状态始终为“错误”。

错误代码

错误代码在 LTIError.php 文件中有记录。如果可能,请只使用文件中定义的错误代码。尽可能避免使用错误代码 99。您可以定义自己的错误代码,范围大于等于 100。请通知 IT-Recht Kanzlei 错误代码及其含义。其他通用错误的错误代码也可以通过协议添加到小于 100 的范围。

示例XML响应输出

如果成功,则输出“version”

<?xml version="1.0" ?>
<response>
    <status>success</status>
    <meta_shopversion>1.0</meta_shopversion>
    <meta_modulversion>1.1.0</meta_modulversion>
    <meta_phpversion>7.4</meta_phpversion>
</response>

如果成功,则输出“getaccountlist”

<?xml version="1.0" ?>
<response>
    <status>success</status>
    <meta_shopversion>1.0</meta_shopversion>
    <meta_modulversion>1.1.0</meta_modulversion>
    <meta_phpversion>7.4</meta_phpversion>
    <account>
        <accountid>12345</accountid>
        <accountname>Shop 1</accountname>
        <locales>
            <locale>de</locale>
            <locale>en</locale>
            <locale>fr</locale>
        </locales>
        <countries>
          <country>DE</country>
          <country>AT</country>
          <country>GB</country>
          <country>FR</country>
        </countries>
    </account>
    <account>
        <accountid>23456</accountid>
        <accountname>Shop 2</accountname>
        <locales>
            <locale>de</locale>
        </locales>
        <countries>
          <country>DE</country>
        </countries>
    </account>
</response>

如果成功,则输出“push”

<?xml version="1.0" ?>
<response>
    <status>success</status>
    <meta_shopversion>1.0</meta_shopversion>
    <meta_modulversion>1.1.0</meta_modulversion>
    <meta_phpversion>7.4</meta_phpversion>
    <target_url>https://example.org/imprint</target_url>
</response>

发生错误时

<?xml version="1.0" ?>
<response>
    <status>error</status>
    <meta_shopversion>1.0</meta_shopversion>
    <meta_modulversion>1.1.0</meta_modulversion>
    <meta_phpversion>7.4</meta_phpversion>
    <error>12</error>
    <error_message>Something was not found!</error_message>
</response>

联系

Max-Lion Keller,LL.M.
IT-Recht Kanzlei,Alter Messeplatz 2,80339 慕尼黑
电话:+49 89 1301433-0
传真:+49 89 1301433-60
电子邮件:m.keller@it-recht-kanzlei.de