SignatureAPI(Deprecated) - infoplus/docs GitHub Wiki

Abstract/概述

  • 最新:本API规范由2020/07编写,2021/06废弃。未实现。参见新版SignatureAPI
  • 签章功能由InfoPlus引擎及其依赖的 Signature Service(签章服务)两方面配合完成
  • InfoPlus 作为签章服务的客户端,提供 SignatureAPI,供 Signature Service 回调
  • Signature Service 需实现与不同第三方签章提供商的对接

Signature Type(签章类型)

// TYPE: Signature
{
  // 继承自 File 类型的属性 
  id: {uuid},         // FileAPI的文件Id
  name: {string},     // 文件名
  size: {int},        // 文件大小
  uri: {uri},         // 文件访问地址 
  mime: {string},     // 文件类型,仅支持 "application/pdf"
  createTime: {long}, // 文件创建时间 

  // 签章所需信息 
  seals: [ { 
    x: {int},              // 盖章位置横坐标
    y: {int},              // 盖章位置纵坐标 
    placeHolder: {string}, // 盖章位置占位符 
    signer: {
      account: {string},   // 签署人账号  
      name: {string},      // 签署人姓名
    }, 
    permission: {
      sealTypes: [{string}],   // 允许使用的签章类型列表
      sealIds: [{string}],     // 允许使用的签章Id列表
      signers: [{string}],   // 允许签名的用户账号列表
    }
    template: {uri},        // 签章Word模版链接
    image: {uri},           // 印章图片
    description: {string},  // 印章描述 
    algorithm: {string},    // 印章的签名算法
    signature: {string},    // 印章的签名
    privateKey: {string},   // 印章的公钥
  } ]
}

Signature Control(签章控件)

  • Signature 控件承载签章类型的数据结构,并且有以下状态:

未盖章状态

  • 判定条件为:uri 为空,或某个 seals[i].signature 为空
  • 此控件的界面将引导用户完成盖章过程
  • 如有 seals 有多个,则每个印章具有独立的已签/未签状态;用户需逐个触发点击盖章

已签章状态

  • 显示已盖的章的信息(seals[i].image & description)
  • 用户可删除盖章、验证盖章有效性(验证签名)

Signature API(签章接口)

[S1] GET "/signature/{id}" @returns Response<Signature>
  • 根据要签章的文件id,获取Signature数据结构
[S2] POST "/signature/{id}" @returns Response<Signature>
  • 签章完成之后,回填签章信息给引擎,引擎再将签章信息推送到表单

Signature Logic(盖章逻辑)

  • 未签章状态下,签章控件会提示用户点击对表单进行盖章
  • 用户点击盖章后,调用引擎接口,引擎通过ExportAPI根据表单数据和Word模版,生成PDF文件并存入FileAPI得到要盖章的文件信息存回控件
  • 签章控件将用户导向到 SignatureService(签章服务,参考后续章节)的签名地址,并传递要盖章的文件id
  • 签章服务调用API S1,获取要签章的信息后,将这些信息传递给真正的第三方签章工具进行盖章
  • 签章服务在第三方签章服务盖章成功后,调用 API S2,回填盖章信息到InfoPlus引擎
  • InfoPlus引擎将信息推送给签章控件,签章控件完成盖章过程,状态变为“已盖章”

其他说明:

  • 流程开发这需设法通过代码或公式,填充Signature结构所需的permission和模版等信息
  • 如果 Signature整个结构为空,则默认为只需要盖一个章,盖章的Word模版为该步骤导出的Word模版
⚠️ **GitHub.com Fallback** ⚠️