globalis/universign-service 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

globalis/universign-service

Composer 安装命令:

composer require globalis/universign-service

包简介

PHP library for universign service

README 文档

README

Latest Stable Version Latest Unstable Version License

Example

Scénario suivi

2 documents à signer :

  • Template_1.pdf
  • Template_2.pdf

2 signataires

Plan de signature, composé de 6 signatures :

  • Signature Cachet serveur sur le 1 er document,
  • Signature Cachet serveur sur le 2 ième document,
  • Le 1 er signataire signe le 1 er document,
  • Le 1 er signataire signe le 2 ième document,
  • Le 2 ième signataire signe le 1 er document,
  • Le 2 ième signataire signe le 2 ième document.
  1. Déclaration des signataires
<?php
$signer1 = new \Globalis\Universign\Request\TransactionSigner();
$signer1
    ->setFirstname('Jean')
    ->setLastname('Dupond')
    ->setPhoneNum('0999999999')
    ->setEmailAddress('jean.dupond@example.com')
    ->setSuccessURL('https://www.universign.eu/fr/sign/success/')
    ->setCancelURL('https://www.universign.eu/fr/sign/cancel/')
    ->setFailURL('https://www.universign.eu/fr/sign/failed/')
    ->setProfile('profil_vendeur');

$signer2 = new \Globalis\Universign\Request\TransactionSigner();
$signer2
    ->setFirstname('Pierre')
    ->setLastname('Martin')
    ->setPhoneNum('0888888888')
    ->setEmailAddress('pierre.martin@example.com')
    ->setSuccessURL('https://www.universign.eu/fr/sign/success/')
    ->setCancelURL('https://www.universign.eu/fr/sign/cancel/')
    ->setFailURL('https://www.universign.eu/fr/sign/failed/')
    ->setProfile('profil_client');

$signers = [$signer1, $signer2];
  1. Déclaration des documents à signer
<?php

// Signature fields
$signatureField1 = new \Globalis\Universign\Request\DocSignatureField();
$signatureField1->setPage(1)
    ->setX(100)
    ->setY(200)
    ->setSignerIndex(0)
    ->setPatternName('default')
    ->setLabel("Sur l'ensemble du template 1");

$signatureField2 = new \Globalis\Universign\Request\DocSignatureField();
$signatureField2->setPage(1)
    ->setX(350)
    ->setY(200)
    ->setSignerIndex(1)
    ->setPatternName('default')
    ->setLabel("Sur l'ensemble du template 2");

$signatureField3 = new \Globalis\Universign\Request\DocSignatureField();
$signatureField3->setPage(1)
    ->setX(100)
    ->setY(200)
    ->setSignerIndex(0)
    ->setPatternName('patternVendeur');

$signatureField4 = new \Globalis\Universign\Request\DocSignatureField();
$signatureField4->setPage(1)
    ->setX(350)
    ->setY(200)
    ->setSignerIndex(1)
    ->setPatternName('patternClient');

$signatureFieldsDoc1 = [$signatureField1, $signatureField2];
$signatureFieldsDoc2 = [$signatureField3, $signatureField4];

// Documents
$doc1 = new \Globalis\Universign\Request\TransactionDocument();
$doc1->setPath('doc/Template_2.pdf')
    ->setSignatureFields($signatureFieldsDoc1);

$doc2 = new \Globalis\Universign\Request\TransactionDocument();
$docs2->setPath('doc/Template_2.pdf')
    ->setSignatureFields($signatureFieldsDoc2);
  1. Création de la requête et envoie de la requête
<?php

$request = new \Globalis\Universign\Request\TransactionRequest();
$request->addDocument($doc1)
    ->addDocument($doc2)
    ->setSigners($signers)
    ->setHandwrittenSignatureMode(
        \Globalis\Universign\Request\TransactionRequest::HANDWRITTEN_SIGNATURE_MODE_DIGITAL
    )
    ->setMustContactFirstSigner(false)
    ->setFinalDocRequesterSent(true)
    ->setChainingMode(
        \Globalis\Universign\Request\TransactionRequest::CHAINING_MODE_WEB
    )
    ->setDescription("Demonstration de la signature Universign")
    ->setProfile("profile_demo")
    ->setCertificateTypes('simple')
    ->setLanguage('fr');

// Create XmlRpc Client
$client = new \PhpXmlRpc\Client('https://url.to.universign/end_point/');

$client->setCredentials(
    'UNIVERSIGN_USER',
    'UNIVERSIGN_PASSWORD'
);

$requester = new \Globalis\Universign\Requester($client);
// Return a \Globalis\Universign\Response\TransactionResponse (with transaction url and id)
$response = $req->requestTransaction($request);

$signatureUrl = $response->url;
$transactionId = $response->id;
  1. Récupération des documents
<?php

$response = $requester->getTransaction($transactionId);
if ($response->status === \Globalis\UniversitransactionIdgn\Response\TransactionInfo::STATUS_COMPLETED) {
    $docs = $requester->getDocuments($transactionId);
    foreach ($docs as $doc) {
        // Doc content
        $doc->content;
        // Doc file_name
        $doc->name;
    }
}

globalis/universign-service 适用场景与选型建议

globalis/universign-service 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 128.93k 次下载、GitHub Stars 达 7, 最近一次更新时间为 2017 年 07 月 21 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 globalis/universign-service 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 globalis/universign-service 我们能提供哪些服务?
定制开发 / 二次开发

基于 globalis/universign-service 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 128.93k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 14
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 7
  • Watchers: 4
  • Forks: 13
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-07-21