herald-si / verificac19-sdk-php
PHP 数字绿色证书 SDK
Requires
- php: >=7.3
- ext-zlib: *
- guzzlehttp/guzzle: ^7
- spomky-labs/cbor-php: ^2.1
- symfony/deprecation-contracts: ^2.2
- web-auth/cose-lib: ^3.3
Requires (Dev)
- phpunit/phpunit: 9.*
- dev-main
- v1.6.0
- v1.5.6
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4.0
- v1.3.0
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v0.0.2
- 0.0.1
- dev-develop
- dev-feature/remove-unused-scanmode
- dev-feature/remove-entry-italy-scan-mode
- dev-release/1.5.5
- dev-feature/entry-it-underage
- dev-release/1.5.4
- dev-feature/disable-work-scanmode
- dev-release/1.5.3
- dev-feature/sdk-user-agent-header
- dev-release/1.5.2
- dev-release/1.5.1
- dev-release/1.5.0
- dev-release/1.4.3
- dev-release/1.4.2
- dev-release/1.4.1
- dev-release/1.4.0
- dev-release/1.3.0
- dev-release/1.2.4
- dev-feature/php-unit-test
- dev-release/1.2.3
- dev-release/1.2.2
- dev-release/1.2.1
- dev-release/1.2.0
- dev-release/1.1.2
- dev-release/1.1.1
- dev-release/1.1.0
- dev-release/1.0.8
- dev-release/1.0.7
- dev-release/1.0.6
- dev-release/1.0.5
This package is auto-updated.
Last update: 2024-09-26 14:42:23 UTC
README
索引
上下文
注意,此存储库是从 ministero-salute/it-dgc-verificac19-sdk-android 的规范中派生出来的!
可用的库列表请参见此 列表。页面还包含有关接受和从列表中删除策略的信息。在将库用于生产环境之前,请参阅此页面。
此存储库包含一个软件开发工具包(SDK),该工具包允许通过读取二维码将 COVID-19 绿色证书的验证功能集成到系统中。
个人数据处理
从本 SDK 开发的应用程序解决方案中处理个人数据时,必须仅限于与验证 COVID-19 绿色证书的有效性直接相关的信息,以及严格必要的操作。此外,明确禁止保存待验证的 COVID-19 绿色证书的二维码,以及提取、查询、记录或以其他任何方式处理除验证 COVID-19 绿色证书或从二维码读取和检查中获取的信息之外的目的,如 2021 年 10 月 12 日 DPCM 所述。
要求
- PHP >= 7.3
- COSE-lib 需要 GMP 或 bcmath 扩展 查看问题 #31
- SQLite 用于管理 DCC 撤销列表
变更日志
变更日志可在 此处 查看。
安装
需要以以下方式克隆此项目
your_project_folder
|___sdk_repo_folder
此时,在 sdk_repo_folder
文件夹内运行以下命令
composer install --no-dev
assets 文件夹的权限
需要将 sdk_repo_folder\assets
文件夹的权限设置为,以便 web 服务器可以读取、创建和编辑其中的文件。
如果无法更改文件夹的权限,从版本 1.0.5
开始,可以修改文件保存路径,请参阅 缓存文件夹。
使用
验证应用程序需要导入 SDK 的 vendor
文件夹。
require __DIR__ . '/sdk_repo_folder/vendor/autoload.php';
此时可以使用任何选择的 QR Code 扫描库,在读取 EU DCC 的 QR Code 后,将提取的字符串传递给验证器 Herald\GreenPass\Utils\CertificateValidator
。
示例
... require __DIR__ . '/sdk_repo_folder/vendor/autoload.php'; use Herald\GreenPass\Utils\CertificateValidator; $gp_string = 'HC1:6BF.......'; $gp_reader = new CertificateValidator($gp_string); $gp_info = $gp_reader->getCertificateSimple(); // Mostro la struttura dell'esito validazione echo "<pre>" . print_r($gp_info, true) . "</pre>"; ...
查看方法的响应,返回一个包含验证结果的 Herald\GreenPass\Model\CertificateSimple
对象。数据模型包含个人数据、出生日期、验证时间戳和验证状态。
根据这些数据可以绘制 UI,并将 DCC 的验证状态提供给操作员。
缓存文件夹
从版本 1.0.5
开始,可以通过使用 FileUtils
类的 overrideCacheFilePath
方法来修改文件保存路径。
Herald\GreenPass\Utils\FileUtils::overrideCacheFilePath("/absolute/path/to/cache/folder");
或者在 Windows 上
Herald\GreenPass\Utils\FileUtils::overrideCacheFilePath("c:\path\to\cache\folder");
从版本 1.2.0
开始,可以使用 UpdateService
类的 update*()
方法来更新缓存中的文件
//aggiorna lo status dei certificati Herald\GreenPass\Utils\UpdateService::updateCertificatesStatus(); //aggiorna la lista dei certificati Herald\GreenPass\Utils\UpdateService::updateCertificateList(); //aggiorna le regole di validazione Herald\GreenPass\Utils\UpdateService::updateValidationRules(); //aggiorna le liste di revoca Herald\GreenPass\Utils\UpdateService::updateRevokeList();
或者更新所有列表
Herald\GreenPass\Utils\UpdateService::updateAll();
无论如何,这些列表只有在上次更新后已过24小时才会更新,不会强制更新。
因此,在应用程序中使用此 SDK 时,可以创建一个定期调用的 cron job(每小时/每6小时/每日)来下载规则。
这样,在验证 GreenPass 字符串时,很可能这些规则已经更新,从而减少了验证时间。
代理
(感谢 @darpins)
从版本 1.2.3
开始,可以使用代理来调用下载规则/证书列表的端点,通过使用 EndpointService
类的 setProxy
方法。
Herald\GreenPass\Utils\EndpointService::setProxy("https://username:password@192.168.0.1:8000");
扫描模式
遗留功能。
要选择类型,可以将 Herald\GreenPass\Validation\Covid19\ValidationScanMode
类型的参数传递给验证器的构造函数。
如果没有选择,则默认设置为 BASE
类型。
从版本 1.6.0
开始,只能使用 BASE
类型。
// set scan mode to BASE $scanMode = ValidationScanMode::CLASSIC_DGP; $gp_reader = new CertificateValidator($gp_string, $scanMode);
调试模式
为了帮助实现此 SDK,引入了调试功能。可以使用 EnvConfig
类的 enableDebugMode
方法来启用调试模式,并使用 disableDebugMode
方法来禁用。
Herald\GreenPass\Utils\EnvConfig::enableDebugMode(); ... do some test ... Herald\GreenPass\Utils\EnvConfig::disableDebugMode();
强制更新缓存
只有当调试模式处于活动状态时,才可以通过将可选参数 force_update
设置为 true
来强制更新缓存中的文件。示例操作
//non viene forzato l'aggiornamento, manca debug mode Herald\GreenPass\Utils\UpdateService::updateCertificatesStatus(true); --- //non viene forzato l'aggiornamento, parametro force update a false Herald\GreenPass\Utils\EnvConfig::enableDebugMode(); Herald\GreenPass\Utils\UpdateService::updateCertificatesStatus(); --- //viene forzato l'aggiornamento, non usare in produzione! Herald\GreenPass\Utils\EnvConfig::enableDebugMode(); Herald\GreenPass\Utils\UpdateService::updateCertificatesStatus(true);
显示扫描错误
启用调试模式
- 在所有情况下,如果扫描的响应会产生一个
NOT_EU_DCC
的结果,则会显示导致该结果错误堆栈。 - 在其他所有情况下,会显示验证结果,但将返回字符串
DISABLE-DEBUG-MODE-IN-PRODUCTION
而不是绿色通行证中的姓名和姓氏(以防止在生产中保持启用调试模式)。
许可证
许可证详情
此存储库的许可证是 Apache License 2.0
。具体信息请参阅 LICENSE 文件。
贡献者
这里有一份贡献者列表。感谢大家每天为项目的改进做出的贡献!