registrucentras / onesign
GoSign OneSign API 客户端 for PHP
v1.1.2
2022-10-10 14:24 UTC
Requires
- php: ^7.2.5 || ^8.0
- ext-json: *
- fig/http-message-util: ^1.1
- gaarf/xml-to-php-array: ^1.0
- meng-tian/php-soap-interpreter: ^1.0
- php-http/cache-plugin: ^1.7.1
- php-http/client-common: ^2.3
- php-http/discovery: ^1.12
- php-http/httplug: ^2.2
- php-http/multipart-stream-builder: ^1.1.2
- psr/cache: ^1.0
- psr/http-client-implementation: ^1.0
- psr/http-factory-implementation: ^1.0
- psr/http-message: ^1.0
- spatie/array-to-xml: ^2.16
- symfony/polyfill-php80: ^1.17
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.4.1
- guzzlehttp/guzzle: ^7.2
- http-interop/http-factory-guzzle: ^1.0
- php-http/mock-client: ^1.4.1
This package is auto-updated.
Last update: 2024-09-11 10:55:19 UTC
README
需求
- PHP 7.4+ 或 8.0+
推荐
- Nginx
- php-fpm
功能
- PDF 文档签名;
- 在 PDF 文档上添加时间戳。
安装
要快速将此库集成到您的 PHP 项目中,请使用 Composer PHP 包管理工具。如果您的项目不使用基于 PSR 标准的 HTTP 客户端,则需要额外 安装一个。更多信息可以在 服务提供流程 中找到。
标准安装
$ composer require "registrucentras/onesign:^1.1.2"
使用方法
初始化 API 客户端对象。
use RegistruCentras\OneSign\Client; $client = new Client();
认证,查询和响应验证
签名服务安全性和客户端认证通过使用非对称加密来确保
- 用于对发送内容进行签名的您的私钥;
- 您的公钥(传递给 GoSign 管理员),用于用户及其发送内容的验证;
- 公开的 GoSign 密钥(由 GoSign 管理员单独提供),用于确保查询响应的完整性。
如何生成密钥在 密钥生成说明 中提供。
$client->configure( 'api_endpoint_adresas', 'jums_suteiktas_id', \file_get_contents(__DIR__ . '/../Keys/private.key'), // jūsų sugeneruotas private raktas 'private_key_passprahse', \file_get_contents(__DIR__ . '/../Keys/public.key') // jums perduotas public raktas GoSign.lt administratoriaus );
示例
文档签名
文档签名分为几个步骤
- 初始化签名事务(
$client->init()
); - 签署文档的人将被重定向到签名页面;
- 签署文档;
- 签署文档的人将被重定向到通过
$client->init()
方法指定的签名成功页面; - 获取签名的文档(
$client->result()
)。
您可以在签名开始之前取消签名($client->cancel()
)。
签名初始化
用于初始化文档签名的有四个实体对象
Signer
- 描述签署者;File
- 描述要签署的文件;SignatureConfiguration
- 描述签名配置;Configuration
- 描述签名配置。
use RegistruCentras\OneSign\Entity\Signer; use RegistruCentras\OneSign\Entity\File; use RegistruCentras\OneSign\Entity\SignatureConfiguration; use RegistruCentras\OneSign\Entity\Configuration; use RegistruCentras\OneSign\Entity\SigningType; $signer = (new Signer()) ->setPersonalCode('asmens_kodas') ; $file = (new File()) ->setName('failo_pavadinimas') ->setContent(\file_get_contents(__DIR__ . '/../Files/sample.pdf')) ; $signatureConfiguration = new SignatureConfiguration(); $configuration = (new Configuration()) ->setResponseUrl('http://example.com/backlink') ->setSigningType(SigningType::SIGNATURE_WITH_TIMESTAMP_OCSP) ; $response = $client ->init($signer, $file, $signatureConfiguration, $configuration) ; $transactionId = $response->getTransactionId(); $signingUrl = $response->getSigningUrl();
结果
transactionId
- 签名事务的唯一编号;signingUrl
- 签名页面的地址,签署者将被重定向到该地址。
更多运行示例可以在 客户端测试场景 中找到。
检查签名事务状态并获取签名文件
用于获取签名文档的有一个实体对象
Transaction
- 从签名初始化阶段获得的签名事务唯一编号。
use RegistruCentras\OneSign\Entity\Transaction; use RegistruCentras\OneSign\HttpClient\Message\Response\Status\SigningResponseStatus; $transaction = (new Transaction()) ->setTransactionId($transactionId) ; $response = $client ->result($transactionId) ; $status = $response->getStatus();
结果
status
- 签名事务的状态(SigningResponseStatus::IN_PROGRESS
- 签名已初始化,等待文档签名,SigningResponseStatus::SIGNED
- 文档已签名,SigningResponseStatus::CANCELED
- 文档签名被取消);
当 SigningResponseStatus::IN_PROGRESS
时,提供额外的参数
signerCertificate
- 签署文档的人的证书;
$signerCertificate = $response->getSignerCertificate();
当 SigningResponseStatus::SIGNED
时,提供额外的参数
file
- 文件实体对象;
获取签名的文件名
$fileName = $response->getFile()->getFileName();
获取签名的文件内容
$fileContent = $response->getFile()->getContent();
signerCertificate
- 签署文档的人的证书;
$signerCertificate = $response->getSignerCertificate();
signerCertificateTrusted
- 签署文档的人的证书的有效性(布尔值:true
- 有效,false
- 无效)。
$signerCertificateTrusted = $response->getSignerCertificateTrusted();
签名取消
用于取消签名有一个实体对象
Transaction
- 从签名初始化阶段获得的签名事务唯一编号。
use RegistruCentras\OneSign\Entity\Transaction; use RegistruCentras\OneSign\HttpClient\Message\Response\Status\CancelSigningResponseStatus; $transaction = (new Transaction()) ->setTransactionId($transactionId) ; $response = $client ->cancel($transactionId) ; $status = $response->getStatus();
结果
status
- 签署事务状态(CancelSigningResponseStatus::CANCELED
- 签署被取消,CancelSigningResponseStatus::ERROR
- 取消签署失败);
对应
- 标准PHP包骨架;
- HTTP消息接口(PSR-7);
- HTTP服务器请求处理器,中间件(PSR-15);
- HTTP工厂(PSR-17);
- 代码风格(PSR-12);
- PHPDoc标准(PSR-5,PSR-19);
- 单元和集成测试;
- 已与Github Actions测试;
- PHPStan(等级:最高);
- 支持Xdebug的Docker容器。
扩展
我们遵循开源代码政策。想要为项目做贡献?我们随时欢迎更改。如何操作?在单独的代码分支中执行更改,并向主分支发送“Pull”请求。请务必
- 遵循Symfony框架标准;
- 确保更改后现有测试正常运行;
- 确保更改被测试覆盖;
- 执行严格的代码版本控制:每个更改的描述都是清晰的;
- 使用rebase以避免冲突;
- 不要忘记文档;
- 对静态代码进行扫描时使用psalm和PHP_CodeSniffer;
- 为确保代码质量,使用phpstan;
- 使用rector进行自动化重构。
从哪里开始?
请确保您的开发环境支持Docker
和Make
命令的执行。
$ git clone $ make install
启动自动化测试和代码分析工具
$ make test