GoSign OneSign API 客户端 for PHP

v1.1.2 2022-10-10 14:24 UTC

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以避免冲突;
  • 不要忘记文档;
  • 对静态代码进行扫描时使用psalmPHP_CodeSniffer
  • 为确保代码质量,使用phpstan
  • 使用rector进行自动化重构。

从哪里开始?

请确保您的开发环境支持DockerMake命令的执行。

$ git clone
$ make install

启动自动化测试和代码分析工具

$ make test