mpp / universign-bundle
Symfony Universign Bundle
v4.0.3
2024-05-31 10:17 UTC
Requires
- php: >=7.4
- ext-json: *
- phpxmlrpc/phpxmlrpc: ^4.9
- symfony/dependency-injection: ^4.0 | ^5.0 | ^6.0
- symfony/event-dispatcher: *
- symfony/framework-bundle: ^4.0 | ^5.0 | ^6.0
- symfony/monolog-bundle: *
- symfony/options-resolver: ^6.3
Requires (Dev)
- phpunit/phpunit: ^9.5
- dev-master
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.1.0
- v3.0.7
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.1.1
- v2.1.0
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.0
- v1.0.0
- dev-fix/use-attribute-for-route-declaration
- dev-425-handle-errors-when-sending
- dev-fix/request-transaction-flatten
- dev-fix/allowed-values
- dev-feat/change-xmlrpc-bundle
- dev-refacto/laminas
- dev-fix/id-documents
- dev-feature/awaiting-certification
- dev-improve-result
- dev-fix/match-account
- dev-log_callback
- dev-feat/ra-service
- dev-refact/document-parameter
- dev-feat/server-signer
This package is auto-updated.
Last update: 2024-08-31 00:32:17 UTC
README
安装
要安装此包,请运行以下命令
$ composer require mpp/universign-bundle
如何运行
运行之前,您需要在项目的 .env
文件中添加 UNIVERSIGN_ENTRYPOINT_SIGN
和 UNIVERSIGN_ENTRYPOINT_RA
变量,并使用 Universign 账户的 URL 和凭据。
###> mpp/unviversign-bundle ###
UNIVERSIGN_ENTRYPOINT_SIGN=https://<LOGIN>:<PASSWORD>@sign.test.cryptolog.com/sign/rpc/
UNIVERSIGN_ENTRYPOINT_RA=https://<LOGIN>:<PASSWORD>@sign.test.cryptolog.com/ra/rpc/
###< mpp/unviversign-bundle ###
之后,您就可以在您的 Symfony 项目中使用此包。
如何使用
以下是 Universign 工作流程的介绍
请求签名
首先,您需要将交易发送到 Universign 服务。
交易请求
以下是一个示例
... use Mpp\UniversignBundle\Requester\SignerInterface; ... /** * @var SignerInterface; */ private $requester; public function __construct(SignerInterface $requester) { $this->requester = $requester; } ... $transactionRequest = $this->requester->initiateTransactionRequest([ 'signers' => [ [ 'firstname' => 'john', 'lastname' => 'doe', 'organization' => 'dummy company', 'emailAddress' => 'john.doe@dummy-company.com', 'phoneNum' => '+0122334455', 'language' => 'fr', 'birthDate' => new \DateTime::createFromFormat('Y-m-d', '2000-01-01'), ], ], 'documents' => [ 'mpp_contract' => [ 'fileName' => $document->getFileName(), 'content' => $this->storage->resolvePath($document), 'signatureFields' => [ [ 'name' => 'Signature:', 'page' => 18, 'signerIndex' => 0, ], ], ], ], 'finalDocSent' => true, ]); $transactionResponse = $this->requester->requestTransaction($transactionRequest);
一旦发送了交易请求,您将得到一个 TransactionResponse
对象,其中您将找到交易 ID 和一个 URL。
交易响应
以下是一个 TransactionResponse
对象的示例
{ 'id' => "bde1e661-a217-4d2b-a3ec-160c2e266ff4" 'url' => "https://sign.test.universign.eu/sig/#/?id=7d161638-9fb7-42c9-bb56-c902ea491404" }
id
值用于标识交易,它允许您获取有关交易的更多信息,检索已签名的文档。 url
值用于签名人签署文档。
请求已签名的文档
在发送交易请求并签署之后,使用之前的交易 ID 发送请求以获取已签名的文档
$documents = $this->requester->getDocuments($transactionId);
您将得到一个包含 Document
对象的数组
[ 0 => [ 'id' => 'http.example.com', 'documentType' => 'pdf', 'content' => "JVBERi0xLj[...]UKJb4", 'fileName' => 'contract_test', 'signatureFields' => [ [ 'name' => 'Client:', 'page' => 1, 'x' => 100, 'y' => 200, 'signerIndex' => 0, ], ] 'checkBoxTexts' => null, 'metaData' => null, 'title' => null, 'sepaData' => [ 'rum' => '87654345678765' 'ics' => 'FR12ZZZ123456' 'iban' => 'FR7630006000011234567890189' 'bic' => 'BREDFRPPXXX' 'recuring' => false 'debtor' => [ 'name' => 'Victor Vidal' 'address' => '805, boulevard Richard' 'postalCode' => '32 082' 'city' => 'Ruiz-sur-Dos Santos' 'country' => 'Christmas (Île)' ] ] 'creditor' => [ 'name' => 'Marie Pierre' 'address' => 'rue Roger Marie' 'postalCode' => '71 625' 'city' => 'Deschamps-sur-Dupre' 'country' => 'Bosnie-Herzégovine' ] ] ]
content
参数是您的已签名文档 base64 编码。只需解码它即可获取文件。