团体标准-跨证书认证机构多证照身份认证服务应用接口标准

前 言

本标准按照 GB/T 1.1—2020《标准化工作导则第 1 部分:标准化文件的结构和起草规则》的规定起草。

请注意本标准的某些内容可能涉及专利。本标准的发布机构不承担识别专利的责任。本标准由 xxx 提出并归口。

本标准起草单位:xxx、xxx、xxxx。本标准主要起草人:xxx、xxx。

1 范围

本标准规定了跨CA机构多证照身份认证应用接口规范的通讯协议和应用接口,是为了规范满足国家标准发布的数字证书、电子证照(如:医师执业证书)等多种方式的身份认证服务。

本标准适用于应用系统接入身份认证服务,通过API接口调用身份认证服务、电子签章等基础服务。

注:本标准规定的电子签名采用代理签名模式。

2 规范性引用文件

下列文件中的内容通过文中的规范性引用而构成本标准必不可少的条款。其中,注日期的引用文件,仅该日期对应的版本适用于本标准;不注日期的引用文件,其最新版本(包括所有的修改单)适用于本标准。

GB/T 33560-2017 信息安全技术 密码应用标识规范

GB/T 25064-2010 信息安全技术 公钥基础设施 电子签名格式规范

GB/T 19713-2005 信息技术 安全技术 公钥基础设施 在线证书状态协议

GB/T 19714-2005 信息技术 安全技术 公钥基础设施 证书管理协议

GB/T 25056-2018 信息安全技术证书认证系统密码及其相关安全技术规范

GB/T 20520-2006 信息安全技术 公钥基础设施 时间戳规范

GB/T 35285-2017 信息安全技术 公钥基础设施 基于数字证书的可靠电子签名生成及验证技术要求

GB/T 20518-2018 信息安全技术 公钥基础设施 数字证书格式

GB/T 32905-2016 信息安全技术 SM3密码杂凑算法

GB/T 35275-2017 信息安全技术 SM2密码算法加密签名消息语法规范

GB/T 35276-2017 信息安全技术 SM2密码算法使用规范

GB/T 38540-2020 信息安全技术 安全电子签章密码技术规范

GM/T 0109-2021 基于云计算的电子签名服务技术要求

GM/T 0120-2022 基于云计算的电子签名服务技术实施指南

GB/Z 21716.1-2008 健康信息学 公钥基础设施(PKI) 第1部分:数字证书服务综述

GB/Z 21716.2-2008 健康信息学 公钥基础设施(PKI) 第2部分:证书轮廓

GB/Z 21716.3-2008 健康信息学 公钥基础设施(PKI) 第3部分:认证机构的策略管理

GM/Z0001-2013 密码术语

GB/T 36901-2018 电子证照 总体技术架构

GB/T 36902-2018 电子证照 目录信息规范

GB/T 36903-2018 电子证照 元数据规范

GB/T 36904-2018 电子证照 标识规范

GB/T 36905-2018 电子证照 文件技术要求

GB/T 36906-2018 电子证照 共享服务接口规范

PKCS #7 密码消息语法(Cryptographic message syntax)

PKCS #1 RSA Cryptography Specifications

3 术语和定义

下列术语和定义适用于本标准。

3.1数字证书 digital certificate

也称公钥证书,由证书认证机构(CA)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。按类别可分为个人证书、机构证书和设备证书,按用途可分为签名证书和加密证书。

[来源:GB/T 25056—2018]

3.2证书认证机构certification authority (CA)

对数字证书进行全生命周期管理的实体。也称为电子认证服务机构。

[来源:GB/T 25056—2018]

3.3数字签名digital signature

签名者使用私钥对待签名数据的杂凑值做密码运算得到的结果,该结果只能用签名者的公钥进行验证,用于确认待签名数据的完整性、签名者身份的真实性和签名行为的抗抵赖性。

[来源:GM/Z 0001-2013]

3.4证书验证certificate validation

按照验证策略确认证书有效性和真实性的过程。

[来源:GM/Z 0001-2013]

3.5证书撤销列表certificate revocation list (CRL)

由证书认证机构(CA)签发并发布的被撤销证书的列表。

[来源:GM/Z 0001-2013]

3.6时间戳 time stamp(TS)

对时间和其它待签名数据进行签名得到的数据,用于表明数据的时间属性。

[来源:GM/Z 0001-2013]

3.7电子签章digitally seal

使用电子印章签署电子文件的过程。

[来源:GM/Z 0001-2013]

3.8电子印章digital stamp

一种由制作者签名的包括持有者信息和图形化内容的数据,可用于签署电子文件。

[来源:GM/Z 0001-2013]

3.9证照certificate

由机关、团体、企事业单位颁发的、能够证明资格或权利等的凭证类文件。

注:证照包括证件和执照等。

[来源:GB/T 36901-2018]

3.10电子证照electronic certificate

由计算机等电子设备形成﹑传输和存储的证照数据文件。

[来源:GB/T 36901-2018]

3.11电子证照文件electronic certificate file

以版式文档表示的电子证照,该文件既包含照面固定版式效果,又包含证照元数据及标识,并应用密码技术保障这些内容的真实性和完整性。

[来源:GB/T 36901-2018]

3.12电子证照有效性electronic certificate validity

电子证照的凭证效力被其颁发机构继续认可的性质。

[来源:GB/T 36906-2018]

3.13电子证照文件完整性electronic certificate file integrity

电子证照文件的内容,结构和背景信息齐全且没有破坏、变异或丢失的性质。

[来源:GB/T 36906-2018]

3.14

电子证照文件真实性electronic certificate file authenticity

电子证照文件中的内容、结构和背景信息与形成时的原始状态相一致的性质。

[来源:GB/T 36906-2018]

3.15带密钥的杂凑算法 keyed-hash message authentication code (HMAC)

一种密码杂凑算法,密钥作为其输入参数参与运算。

[来源:GM/Z 0001-2013]

3.16代理签名 delegated signature mechanism

签名方将密钥托管在云服务,授权云服务完成电子签名的机制。

[来源:GM/T 0120-2022]

4 缩略语

API Application Program Interface 应用程序接口,简称应用接口

CA Certification Authority 证书认证机构

HMAC Keyed-hash message authentication code 一种密码杂凑算法。

JSON JavaScript 0bject Notation JS对象标记

HTTP Hyper Text Transfer Protocol 超文本传输协议

HTTPS Hyper Text Transfcr Protocol over SecurcSocket Layer 安全的HTTP协议

PIN Personal Identification Number 个人标识码

P7 PKCS#7 Public Key Cryptography Standards#7

P1 PKCS#1 Public Key Cryptography Standards#1

5 身份认证服务应用接口调用说明

5.1 接口调用说明

图1身份认证服务接口说明

身份认证服务为机构的应用系统提供API接口服务,其中包括身份认证服务、电子签章服务。

身份认证服务为机构的应用系统提供基于数字证书的电子签名、签名验证、时间戳、及电子证照等基础服务。

电子签章服务为机构的应用系统提供基于数字证书的电子签章服务,以确保电子文档来源真实性以及文档的完整性,防止对文档未经授权的篡改,并确保签章行为的不可否认性。

机构的应用系统在接入之前,需要提出接入申请,获取应用的app_id和app_secret,才能使用身份认证服务。

5.2 参数约束定义

参数描述
0..1可选项,可以没有,也可以有1项
0..n可选项,可以没有,也可以有多项
1..n必选项,至少有一项,也可以有多项
1必选项,且只能填1项

6 通讯协议和数据结构

6.1 通讯协议

身份认证服务和应用系统基于HTTPS协议,报文格式定义如下:

请求数据封装格式:application/json

返回数据封装格式:application/json

请求和响应参数组成结构说明如下:

接口请求和响应的均为json格式数据报文,数据报文由公共参数和业务参数两部分构成,请求报文需要由应用系统使用HMAC签名算法进行签名计算,支持的签名算法为HMAC-SM3。

6.2 请求方法和URL规则

支持HTTPS GET POST方法。

——使用GET方法时,输入参数附加在请求的URL上,输出参数为JSON格式。

示例如下:

https://{ip:port}/open/{signature}?{paramkey}={paramValue}

——使用POST方法时,输入和输出参数均采用JSON格式。

示例如下:

https://{ip:port}/open/{signature}

注:*{斜体}*为可变内容域,是身份认证服务网络地址,下同。

6.3 授权类别

——当前支持的授权类别为trusted,必须经过验证签名。

6.4 认证信息

应用系统在与身份认证服务通讯时,应提供认证信息,用于鉴别其身份。可以通过验证签名的方式鉴别各个接入的应用系统的身份。

——身份认证服务向申请接入的应用系统分配的唯一app_id和app_secret。

——通过接口传输数据时,调用方应通过HMAC-SM3算法对请求数据进行加签计算。

——开放接口采用https协议。

公共参数放入请求头中进行传输,请求的Header中包含认证信息如下:

公共参数放入请求头中进行传输,请求的Header中包含认证信息如下:

参数名参数类型参数说明
app_idString接入应用系统app_id,由身份认证服务统一分配。
signatureString参数签名值,由分配app_secret和请求参数计算得出结果,采用HEX编码
timestampString请求发送的时间戳(Unix Timestamp, 毫秒)
nonceString请求随机数,每笔业务在一定时间内唯一(2分钟)

签名值生成规则:

——json提交

a)json字符串后面拼接随机数(nonce对应值,随机数在前)和时间戳(timestamp对应值)得到字符串。

b)将a得到的字符串进行HmacSM3运算,计算后将结果转换为16进制(小写),即为签名信息,放入请求头(signature)中。

6.5 状态信息

身份认证服务API返回状态信息,状态信息包含字符形式的状态码和状态描述。状态码见附录A的规定。

6.6 回调数据

因部分操作是异步操作,当异步操作完成后,身份认证服务向应用系统的回调地址发送回调数据。回调数据格式:

参数名参数类型参数说明
result_codeString结果码,0表示成功
result_msgString结果描述
successbool成功失败,成功:true,失败:false
bodyobject响应内容

回调数据样例:

 {  "result_code":"0", 
    "result_msg":"请求成功", 
    "success":true, 
    "body":{} 
 }

7 身份认证服务接口

7.1 接口列表

表格1 身份认证服务接口列表

编号接口功能接口URL对象方法授权备注
1数字证书签名https://{ip:port}/open/signature/signPOSTtrusted 
2数字证书查询https://{ip:port}/open/digitalCert/listPOSTtrusted 
3数字签名验证https://{ip:port}/open/signature/verifyPOSTtrusted 
4生成时间戳https://{ip:port}/open/timestamp/signPOSTtrusted 
5验证时间戳有效性https://{ip:port}/open/timestamp/verifyPOSTtrusted 
6二维码生成https://{ip:port}/open/qrcode/applyQrCodePOSTtrusted 
7二维码状态查询https://{ip:port}/open/qrcode/qrCodeStatusQueryPOSTtrusted 
8二维码回调由业务系统提供POSTtrusted 
9解析二维码信息https://{ip:port}/open/qrcode/qrCodAnalysisPOSTtrusted 
10电子证照信息检索(医生和护士)https://{ip:port}/open/elecCert/personRetrievalPOSTtrusted 
11电子证照信息检索(机构)https://{ip:port}/open/elecCert/orgRetrievalPOSTtrusted 
12电子证照查证https://{ip:port}/open/elecCert/queryPOSTtrusted 
13电子证照真伪验证https://{ip:port}/open/elecCert/verifySealPOSTtrusted 
14电子证照类型列表https://{ip:port}/open/elecCert/queryTypeListPOSTtrusted 
15待签署数据推送https://{ip:port}/open/sign/pushDataPOSTtrusted 
16待签署Pdf文件推送https://{ip:port}/open/sign/pushPdfPOSTtrusted 
17认证服务签署状态查询接口https://{ip:port}/open/sign/querySignStatusPOSTtrusted 
18认证服务签署状态通知{接口由业务系统提供}/pushcallbackPOSTtrusted 
19获取数据签署H5链接地址https://{ip:port}/open/signature/h5SignPOSTtrusted 
20获取pdf签署H5链接地址https://{ip:port}/open/signature/h5SignPdfPOSTtrusted 
21H5或接口签署信息查询接口https://{ip:port}/open/sign/queryApiSignInfoPOSTtrusted 
22H5签署状态通知{接口由业务系统提供}/pushcallbackPOSTtrusted 
23免密签署状态查询https://{ip:port}/open/digitalCert/pinSaveStatusPOSTtrusted 

7.2 数字证书签名

URL: https://{ip:port}/open/signature/sign
调用方法: POST
功能描述: 采用已经申请有效数字证书对签名原文进行数字签名。
 

 参数名参数类型约束参数说明
输入参数:dataTypestring1签名原文类型PLAIN|HASH
 elecCertIdstring0..1证照标识(通过证照签名时候必传)
 cardNumberstring1单位唯一标识或个人唯一标识
 signatureAlgIDstring1签名算法,此处为SM2
 hashAlgIDstring1HASH 算法,支持SM3
 userTypestring11 个人 2单位
 toSignstring1签名原文
 transIdstring1业务流水号,业务系统内保持唯一
 pinstring0..1证书PIN码(如果设置了免密,则不需要传)
 busiTypestring1业务类型:SIGN:签名;LOGIN:登录
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:signP7string1P7签名值
 signP1string1P1签名值
 certBase64string1证书base64编码
 signatureAlgIDstring1签名算法

返回内容示例:

{	"result_code":"0", 
	"result_msg":"请求成功",  
	"success":true,  
	"body":{ "signP7":" MIIE+g1JKoZIhvcNAQcCoIIE6zCCBO.....UXtTTr4dRMi7iNG2W5ZcU1BysPPM8fpwPFyfEZV2wwIhAMB7vAK1n1xIl2+LRJS1aicmGqBMRZFSOc61ZkKFRRqS ", 
		 "signP1":"QcCoIIE6zCCBO.....UXtTTr4dRW5ZcU1BysPPM8AK1n1xIl2RqS ",  
		 "certBase64":" MIIDjDCCAzCgAwIBAgIUfT7uMyQfR…..mBggrBgEFBQcCAEbHkaZ/UxN1dMAXGeda4NWJ0pqR0OVAD8NX+ii+MK4 ",  
		 "signatureAlgID":"SM2"   
	} 
} 

7.3 数字证书查询

URL: https://{ip:port}/open/digitalCert/list
调用方法: POST
功能描述: 查询主体的数字证书信息。
 

 参数名参数类型约束参数说明
输入参数:cardNumberstring1单位唯一码或个人唯一码
 userTypestring11 个人 2单位
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyarray0..n证书列表,body对象数组
body对象:digitalCertIdstring1证书id
 digitalCertCNstring1证书主体
 digitalCertSNstring1证书序列号
 notAfterstring1数字证书有效期不晚于,YYYY-MM-dd HH:mm:ss
 notBeforestring1数字证书有效期不早于,YYYY-MM-dd HH:mm:ss
 certBase64string1证书base64编码

返回内容示例:

{  "result_code":"0",  
   "result_msg":"请求成功",  
   "success":true,  
   "body":[{  "digitalCertId":" 123",  
	      "certBase64":" MIIDjDCCAzCgAwIBAgIUfT7uMyQfR…..mBggrBgEFBQcCAEbHkaZ/UxN1dMAXGeda4NWJ0pqR0OVAD8NX+ii+MK4 ",  
	      "digitalCertCN":"mnn公司" , 
	      "digitalCertSN ":" 1ddfdfasdlfksjdflj3",  
	      "notAfter":"2023-01-05 13:20:21",  
	      "notBefore ":"2022-01-06 13:20:21"  
	   }] 
}

7.4 数字签名验证

URL: https://{ip:port}/open/signature/verify
调用方法: POST
功能描述: 用户进行数字签名后,调用此接口进行签名有效性验证。
 

 参数名称参数类型约束参数说明
输入参数:toSignstring1签名原文
 elecCertIdstring0..1证照标识(证照签名时候才传)
 cardNumberstring0..1单位唯一标识或个人唯一标识
 signatureAlgIDstring1签名算法,此处为SM2
 hashAlgIDstring1HASH 算法,支持SM3
 transIdstring0..1业务流水号,业务系统内保持唯一,不传则不返回CertInfo、SignInfo对象
 signaturestring1签名值,Base64编码
 signatureTypestring1签名值类型:P1或P7
 certBase64string0..1P1验签时候必传
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:isVerifybool1true成功false失败
 certInfoobject0..1证书信息(CertInfo对象)
CertInfo对象:certBase64string1t签名数字证书, Base64编码
 signatureAlgIDstring1签名算法(如SM2)
 certIssuerstring1证书颁发者
 certNostring1证书序列号
 certNotBeforestring1证书有效期起
 certNotAfterstring1证书有效期止
 certCNstring1证书主体
 signInfoobject0..1签名信息(SignInfo对象)
SignInfo对象:timeDatastring1时间戳签名值
 signTimestring1签名时间(yyyy-MM-DD HH:mm:ss)
返回内容示例:    
{
  "result_code": "200",
  "result_msg": "验签成功",
  "success": true,
  "body": {
    "isVerify": true,
    "certInfo": {
      "certBase64": "base64",
      "signatureAlgID": "3333",
      "certIssuer": "四川ca",
      "certNo": "3333",
      "certNotAfter": "2023-10-12 00:00:00",
      "certNotBefore": "2022-10-12 00:00:00",
      "certCN": "张三"
    },
    "signInfo": {
      "timeData": "dfsdsldhfsdj",
      "signTime": "2020-12-12 00:00:00"
    }
  }
}

7.5 生成时间戳

URL: https://{ip:port}/open/timestamp/sign
调用方法: POST
功能描述: 按照国家标准生成时间戳。
 

 参数名参数类型约束参数说明
输入参数:dataTypestring1签名原文类型 PLAIN|HASH
 toSignstring1签名原文
 signatureAlgIDstring1签名算法,此处为SM2
 hashAlgIDstring1HASH 算法,支持SM3
 transIdstring1业务流水号,业务系统内保持唯一
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:timeDatastring1时间戳签名值

返回内容示例:

{	"result_code":"0",
	"result_msg":"请求成功",
	"success":true,
	"body":{
		"timeData":" MIIE+g1JKoZIhvcNAQcCoIIE6zCCBO.....UXtTTr4dRMi7iNG2W5ZcU1BysPPM8fpwPFyfEZV2wwIhAMB7vAK1n1xIl2+LRJS1aicmGqBMRZFSOc61ZkKFRRqS"
	}
}

7.6 验证时间戳有效性

URL: https://{ip:port}/open/timestamp/verify
调用方法: POST
功能描述: 验证时间戳是否有效。
 

 参数名参数类型约束参数说明
输入参数:timeDatastring1时间戳签名值
 toSignstring1签名原文
 signatureAlgIDstring1签名算法,此处为SM2
 hashAlgIDstring1HASH 算法,支持SM3
 transIdstring1业务流水号,业务系统内保持唯一
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:timestring1时间戳签名签署时间,国家标准时间 (yyyy-MM-DD HH:mm:ss)

返回内容示例:

{
	"result_code":"0",
	"result_msg":"请求成功",
	"success":true,
	"body":{
		"time":"2023-01-05 13:20:21"
	}
}

7.7 二维码生成

URL: https://{ip:port}/open/qrcode/applyQrCode
调用方法: POST
功能描述: 通过二维码进行登录或签名时,通过调用此接口获取对应的二维码。
 

 参数名称参数类型约束参数说明
输入参数:busiTypestring1业务类型, SIGN:证书签名 LOGIN:证书登录 ElECSIGN:证照签名 ElECLOGIN:证照登录
 transIdstring1业务流水号,业务系统内保持唯一
 toSignstring1签名原文(Base64编码)
 busiNamestring1业务名称
 busiDescstring0..1业务描述
 callBackUrlstring1业务回调地址,扫码后业务通知
 qrTypebool0..1是否可以重复使用,默认false
 expireTimelong0..1过期时间,单位:秒,默认不过期
 extParamsstring0..1扩展参数,json格式,用于回调时返回
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:qrCodestring1二维码(Base64编码)
 qrCodeUidstring1二维码唯一标识

返回内容示例:

{  
	"result_code":"0",  
	"result_msg":"请求成功",  
	"success":true,  
	"body":{ "qrCode":"DEVDFALDKFKALSDJFJD---",  
		 "qrCodeUid":"123343546675"  
	} 
}

7.8 二维码状态查询

URL: https://{ip:port}/open/qrcode/qrCodeStatusQuery
调用方法: POST
功能描述: 用于二维码状态查询。
 

 参数名称参数类型约束参数说明
输入参数:qrCodeUidstring1二维码唯一标识
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1结果信息
body对象:statusstring1SCANING:扫码中 SCANED:已扫码 WAIT:待扫码

返回内容示例:

{  "result_code":"0",  
   "result_msg":"请求成功",  
   "success":true,  
   "body":{ "status":" SCANING "  
   } 
} 

7.9 二维码回调

URL: 由业务系统提供的回调地址。
调用方法: https://{ip:port}/{业务系统提供}
功能描述: 用于二维码扫描签名或登录完成后的应用系统回调,应用系统获取签名值和原文后进行签名验证。
 

 参数名称参数类型约束参数说明
输入参数 :busiTypestring1二维码类型, SIGN:证书签名 LOGIN:证书登录 ElECSIGN:证照签名 ElECLOGIN:证照登录
 transIdstring1业务流水号,业务系统内保持唯一,与二维码生成保持一致
 cardNumberstring1单位唯一码或个人唯一码
 userTypestring11 个人 2单位
 toSignstring1签名原文(Base64编码)
 signaturestring1签名值PKCS7(Base64编码)
 extParamsstring0..1扩展参数,json格式,用于回调时返回
输出参数 :result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
body对象:bodyobject1返回对象(具体内容由业务系统提供)

7.10 解析二维码信息

URL: https://{ip:port}/open/qrcode/qrCodAnalysis
调用方法: POST
功能描述: 用于二维码信息解析。
 

 参数名称参数类型约束参数说明
输入参数:qrCodeUidstring1二维码唯一标识
输出参数:result_codestring1正常状态码
 successbool1成功失败,成功:true,失败:false
 result_msgstring1正常响应描述
 bodyobject1结果信息
body对象:busiTypestring1业务类型, SIGN:证书签名 LOGIN:证书登录 ElECSIGN:证照签名 ElECLOGIN:证照登录
 toSignstring1签名原文
 extParamsstring1扩展参数,json格式,用于回调时返回

返回内容示例:

 {  "result_code":"0",  
    "result_msg":"请求成功",  
    "success":true,  
    "body":{  "busiType":"SIGN", 
	      " toSign ":" 签名原文"
    } 
}

7.11 电子证照检索(医生和护士)

URL: https://{ip:port}/open/elecCert/personRetrieval
调用方法: POST
功能描述: 通过电子证照标识,获取证照信息和证照二维码。
 

 参数名称参数类型约束参数说明
输入参数:elecCertHolderCodestring1持证主体代码(身份证)
 elecCertTypestring0..1证照类型编码,多个编码间以英文逗号“,”分隔(护士执业证:NURSE ,医师执业证:DOCTOR)
 elecCertTypeNamestring0..1证照类型名称(护士执业证,医师执业证)
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyarray0..n证照列表
body数组:elecCertIdstring1证照唯一标识
 elecCertNamestring1证照名称
 elecCertHolderstring1持证主体(姓名)
 elecCertHolderCodestring1持证主体代码(身份证)
 techPoststring1技术职称(医生为空)
 elecCertTypestring1证照类型编码 (护士执业证:NURSE ,医师执业证:DOCTOR)
 elecCertTypeNamestring1持有者证件类型名称
 sexstring1性别 (男 |女)
 brithdaystring1出生年月
 elecCertNumberstring1证照编号
 elecCpetCodestring1执业证书编码
 practiceScopestring1执业范围
 practiceLevelstring1证照级别(护士执业证为空)
 practiceClassstring1执业类别
 practiceAreaNamestring1执业地点
 practiceOrgNamestring1主要执业机构名称
 practiceOrgIdstring1主要执业机构代码
 issueDeptstring1证照颁发机构
 workOfficestring1工作科室(医师执业证为空)
 issueDeptCodestring1证照颁发机构代码
 issueDatestring1证照颁发日期
 validityStartstring1证照有效期起始(如果为空则为长期有效)
 validityEndstring1证照有效期截止(如果为空则为长期有效)
 statestring1证照状态:1-有效, 0-证照已注销

返回内容示例:

{
	"result_code":"0",
	"result_msg":"请求成功",
	"success":true,
	"body":[
		{        "elecCertId": "1234567890",
			 "elecCertName":"医师执业证",
			 "elecCertHolder": "张医生",
			 "elecCertHolderCode": "522228199612100611",
			 "techPost":"",
			 "elecCertType": "DOCTOR",
			 "elecCertTypeName":"医师执业证",
			  "sex":"男",
			 "brithday":"1999-10-01",
			 "elecCertNumber": "1262235241",
			 "elecCpetCode":"200151110130203197607131511",
			 "practiceScope":"外科专业",
			 "practiceLevel":"执业医师",
			 "practiceClass":"临床",
			 "practiceAreaName":"青羊区",
			 "practiceOrgId":"88EFE14F-119A-406E-8967-3D33E7D2B93E",
			 "issueDept": "成都市青羊区卫生和计划生育局",
			 "issueDeptCode": "370100004188602",
			 "issueDate": "2019-10-14",
			 "validityStart": "2019-10-14",
			 "validityEnd": "2019-10-14",
			 "state": "1"
		}	
		]
}

7.12 电子证照检索(机构)

URL: https://{ip:port}/open/elecCert/orgRetrieval
调用方法: POST
功能描述: 通过单位唯一标识获取单位证照信息。
 

 参数名称参数类型约束参数说明
输入参数:elecCertHolderCodestring1持证主体代码(单位唯一编码)
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyarray0..n证照列表
body数组:elecCertIdstring1证照唯一标识
 elecCertNamestring1证照名称
 elecCertHolderstring1持证主体(单位名称)
 elecCertHolderCodestring1持证主体代码(单位唯一编码)
 elecCertNumberstring1证照编号
 specialtiesNamestring1诊疗科目
 areaNamestring1行政区域
 legalPersonstring1法定代表人
 holderCardNumberstring1持证者证件号
 adressstring1地址
 chargeRepresentativestring1主要负责人
 natureBusinessstring1经营性质
 setFormedNamestring1组建负责人
 telNumstring1电话
 categorystring1机构类别
 secondNamestring1机构第二名称
 levelstring1医院级别
 rankNamestring1医院等次
 adminOrgNamestring1主管单位名称
 issueDeptstring1证照颁发机构
 issueDeptCodestring1证照颁发机构代码
 issueDatestring1证照颁发日期
 validityStartstring0..1证照有效期起始(如果为空则为长期有效)
 validityEndstring0..1证照有效期截止(如果为空则为长期有效)
 statestring1证照状态:1-有效, 0-证照已注销

返回内容示例:

{
	"result_code":"0",
	"result_msg":"请求成功",
	"success":true,
	"body":[{         "elecCertId": "1234567890",
			  "elecCertName":"xxx医疗机构执业许可证",
			  "elecCertHolder": "xx医疗机构",
			  "elecCertHolderCode": "12323232",
			  "elecCertNumber": "1262235241",
			  "specialtiesName":"内科、外科",
			  "areaName":"锦江区",
			  "legalPerson":"张三",
			  "holderCardNumber":"23434324334343343",
			  "adress":"四川省成都市锦江区xxx路xxx号",
			  "chargeRepresentative":"xxx",
			  "natureBusiness":"",
			  "setFormedName":"xxx",
			  "telNum":"028-xxx",
			  "category":"",
			  "secondName":"",
			  "level":"三甲",
			  "rankName":"",
			  "adminOrgName":"",
			  "issueDept": "成都市青羊区卫生和计划生育局",
			  "issueDeptCode": "370100004188602",
			  "issueDate": "2019-10-14",
			  "validityStart": "2019-10-14",
			  "validityEnd": "2019-10-14",
			  "state": "1"
		}]
}

7.13 电子证照查证

URL: https://{ip:port}/open/elecCert/query
调用方法: POST
功能描述: 通过电子证照标识,获取证照pdf文件。
 

 参数名称参数类型约束参数说明
输入参数:elecCertIdstring1电子证照标识
 userTypestring1用户类型(1个人或2单位)
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1证照对象
body数组:elecPdfBase64string1电子证照文件pdf base64 编码

返回内容示例:

{
	"result_code":"0",
	"result_msg":"请求成功",
	"success":true,
	"body":{
		 " elecPdfBase64": "DFDFSDDFS***="
	}	
}

7.14 电子证照真伪验证

URL: https://{ip:port}/open/elecCert/verifySeal
调用方法: POST
功能描述: 电子证照签章验证,验证章的有效性。
 

 参数名称参数类型约束参数说明
输入参数:elecCertIdstring1电子证照标识
 fileEntitystring1电子证照文件base64编码
 userTypestring1用户类型(1个人或2单位)
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1结果信息
body对象:verifyResultbool1文件整体验证结果 ture或false
 fileNamestring1验证文件名称
 verifyListarray0..n签章验证列表
verifyList 数组:signIndexint1签名或签章序号,标识文档中出现的第几个 签名或签章,从 1 开始编号。
 signStdstring1“es.GBT38540”GB/T 3854标准 “es.GMT0031” GM/T 0031 标准 “ds.GBT35275”GB/T 35275 标准 “ds.PKCS7” PKCS#7 数字签名 “unknown” 未识别的签名标准
 verifystring1单个印章或签名验证结果 “true/false”, 当 signStd 类型为es.GMT0031或 ds.PKCS7 时,不做验证,该值为“unknown”
 errorCodestring1错误码
 errorMsgstring1错误原因
 certInfoobject0..1证书信息(CertInfo对象)
CertInfo对象:certBase64string1签名数字证书, Base64编码
 signatureAlgIDstring1签名算法(如SM2)
 certIssuerstring1证书颁发者
 certNostring1证书序列号
 certNotBeforestring1证书有效期起
 certNotAfterstring1证书有效期止
 certCNstring1证书主体
 signInfoobject0..1签名信息(SignInfo对象)
SignInfo对象:timeDatastring1时间戳签名值
 signTimestring1签名时间(yyyy-MM-DD HH:mm:ss)

返回内容示例:

{
	"result_code":"0",
	"result_msg":"请求成功",
	"success":true,
	"body":{
	     " verifyResult ":"true",
		 "fileName ":"ddd.pdf",
		 "verifyList":[{
			 "signIndex":1,
			 "signStd":"ds.PKCS7",
			 "verify":"unknown",
			 "errorCode":"c803302",
			 "errorMsg":"该数字签名为rsa签名",
			 "certInfo":{
				   "certBase64":"base64",
				   "signatureAlgID":"3333",
				   "certIssuer":"四川ca", 
				   "certNo":"3333",
				   "certNotAfter":"2023-10-12 00:00:00",
				   " certNotBefore ":"2022-10-12 00:00:00",",
				   "certCN":"张三",
			 },
			 "signInfo":{
				   "timeData":"dfsdsldhfsdj",
				    "signTime":"2020-12-12 00:00:00"
			 }
	       
		 }]
	}
}

7.15 电子证照类型列表

URL: https://{ip:port}/open/ elecCert/queryTypeList
调用方法: POST
功能描述: 获取电子证照类型列表。
 

 参数名称参数类型约束参数说明
输入参数:
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyarray0..n证照类型列表
body数组:elecCertTypestring1证照类型(护士执业证:NURSE ,医师执业证:DOCTOR,机构执业证:ORG)
 elecCertTypeNamestring1证照类型名称(护士执业证,医师执业证,机构执业证)

返回内容示例:

{
	"result_code":"0",
	"result_msg":"请求成功",
	"success":true,
	"body":[{
		    "elecCertType": "NURSE",
		    " elecCertTypeName ": "护士执业证"
	}]	  
}

7.16 待签署数据推送

URL: https://{ip:port}/open/sign/pushData
调用方法: POST
功能描述: 机构的应用系统可以将数据同步到身份认证服务,在移动设备上完成签署(移动设备上的移动APP、小程序为身份认证服务提供)。
 

 参数名称参数类型约束参数说明
输入参数:signTypestring1签署类型,1仅签署人(如医生)签2仅患者签 3签署人和患者签(医生和患者)
 isSignOrderstring1签署顺序(1 有序 2 无序)
 isQrSignstring0..1是否返回签署二维码,通过扫码来签署(1 返回,0或空不返回)
 dataCatalogCodestring1签署数据种类编码(见表格A.2)
 patientInfoobject1患者信息
patientInfo对象namestring1患者姓名
 agestring1患者年龄
 sexstring1患者性别(1男 2女)
 nostring1患者就诊卡号
 personCardstring1患者身份证号码
 doctorSignInfoobject1签署人(如医生)对象数组
doctorSignInfo对象personCardstring1签署人(如医生)身份证号
 signOrderstring1签署顺序
 dataSourceobject1签署数据源
dataSource对象:dataNamestring1数据名称
 dataarray1..n签署数据数组
data对象keystring1名称
 valuestring1key对应值
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:qrCodestring0..1二维码base64 扫码签才返回
 dataIdstring1数据id

输入参数示例:

{
	"patientInfo":{
		"name":"张三",
		"age":"100",
		"sex":"1",
		"no":"patient_no_001",
		"personCard":"333---"
	},
	"signType":"1",
	"isSignOrder":"0",
	"doctorSignInfo":[{
		"personCard":"333--",
		"signOrder":"1"
	}],
	"dataCatalogCode":" recipe",
	"datasource":{
		"dataName":"处方",
		"data":[
			{
				"key":"症状",
				"value":"发热"
			},
			{
				"key":"体温",
				"value":"39度"
			}
		]
	}
}

返回内容示例:

{  "result_code":"0",
   "result_msg":"请求成功",
   "success":true,
   "body":{
	   "dataId":"12344",
	   "qrCode ":"base64"
   }
}

7.17 待签署Pdf文件推送

URL: https://{ip:port}/open/sign/pushPdf
调用方法: POST
功能描述: 机构的应用系统pdf版式文件同步到身份认证服务,签署人在移动设备上完成签署(移动设备上的移动APP、小程序为身份认证服务提供)。
 

 参数名称参数类型约束参数说明
输入参数:signTypestring1签署类型,1仅签署人(如医生)签2患者签 3签署人和患者签(医生和患者)
 isSignOrderstring1签署顺序(1 有序 2 无序)
 isQrSignstring0..1是否返回签署二维码,通过扫码来签署(1 返回,0或空 不返回)
 docCatalogCodestring1签署文件种类编码(见表格A.2)
 patientInfoobject1患者信息
patientInfo对象namestring1患者姓名
 agestring1患者年龄
 sexstring1患者性别(1男 2女)
 nostring1患者卡号(如患者就诊卡号)
 personCardstring1患者身份证号码
 doctorSignInfoobject1签署人医生对象数组
doctorSignInfo对象personCardstring1签署人医生身份证号
 signOrderstring1签署顺序
 signInfoobject1签名坐标信息
signInfo对象:fillStylestring1填充类型(2图片,目前医生只支持2)
 keywordstring0..1关键字(关键字和坐标二选一)
 keywordIndexstring0..1关键字索引(关键字和坐标二选一)
 xstring0..1坐标x(关键字和坐标二选一)
 ystring0..1坐标y(关键字和坐标二选一)
 pageNumberint0..1坐标签署比传
 patientSignInfoobject1患者对象数组
patientSignInfo对象:fillStylestring1填充类型(//1 文本 2图片 3语音)
 keywordstring0..1关键字(关键字和坐标二选一)
 keywordIndexstring0..1关键字索引(关键字和坐标二选一)
 xstring0..1坐标x(关键字和坐标二选一)
 ystring0..1坐标y(关键字和坐标二选一)
 pageNumberint0..1坐标签署比传
 signContentTitlestring1签署内容标题
 pdfInfoobject1pdf信息对象
pdfInfo对象:fileNamestring1文件名称
 pdfBase64string1pdfbase64
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:qrCodestring0..1二维码base64,扫码签才返回
 dataIdstring1数据id

输入参数示例:

{
	"patientInfo":{
		"name":"张三",
		"age":"100",
		"sex":"1",
		"no":"patient_no_001",
		"personCard":"333---"
	},
	"signType":"1",
	"isSignOrder":"0",
	"doctorSignInfo":[
	{
	    "personCard":"333--",
	    "signOrder":"1"
	  }
	],
	"patientSignInfo":[
		{
		    "keyword":"患者签名",
		    "keywordIndex":1,
		    "x":40,
		    "y":0,
		    "fillStyle":"1"
		}
	],
	"pdfInfo":{
	    "fileName":"afc.pdf",
	    "pdfBase64":"base64"
	}
}

返回内容示例:

{
	"result_code":"0",
	"result_msg":"请求成功",
	"success":true,
	"body":{
		"dataId":"12344 ",
		"qrCode":"base64"
	}
}

7.18 认证服务签署状态查询接口

URL: https://{ip:port}/open/sign/querySignStatus
调用方法: POST
功能描述: 业务系统把数据/文件推送到身份认证服务,在移动设备上签署时的状态查询(移动设备上的移动APP、小程序为身份认证服务提供), 返回签署信息。
 

 参数名称参数类型约束参数说明
输入参数:dataIdstring1签署数据id
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1对象
body对象:dataIdstring1签署数据id
 docContentBase64string0..1pdf文档内容, Base64编码数据(数据签署时候为空)
 signStatusstring1当前文档状态,1: 医生签署, 2: 患者签署, 3已完成, 4: 作废}
 patientSignInfoobject1患者签署信息
patientSignInfo对象nostring1患者就诊卡号
 namestring1患者姓名
 sealstring0..1患者签章图片(可以为空)
 signTimelong1患者签署时间戳
 timeDatalong1时间戳签名值
 signedbool1患者是否已经签署此文档
 signChannelstring1医生签署此文档的方式,微信小程序: MINI, 平板电脑: PAD、app:APP、自动签署:AUTO
 signerNamestring1签署人姓名
 signaturestring0..1签名值,数据签才返回
 holdersarray0..n解析出来的动态占位符列表, 数据格式为{Key:Value}形式, key为动态占位符的名称, value为患者填充的值,PDF签署才有
 doctorSignInfoobject1..n医生签署对象
doctorSignInfo对象cardNumberstring1医生身份证
 namestring1医生姓名
 sealstring1医生签章图片
 signTimelong1医生签署时间
 timeDatalong1时间戳签名值
 signedbool1医生是否已经签署此文档
 signaturestring0..1签名值,数据签才返回
 signChannelstring1医生签署此文档的方式,微信小程序: MINI, 平板电脑: PAD、app:APP、自动签署:AUTO

返回内容示例:

{
  "id": "1303172585906810882",
  "signStatus": 0,
  "docContentBase64": "…",
  "doctorSignInfo": [
    {
      "cardNumber": "007",
      "name": "张三医生",
      "seal": "...",
      "signTime": 1597225333000,
      "timeData": "MIIE+gYJKoZIhvcNAQcCoIIE6zCCBO.....UXtTTr4dRMi7iNG2W5ZcUYBysPPM8fpwPFyfEZV2wwIhAMB7vAK1n1xIl2+LRJSYaicmGqBMRZFSOc6YZkKFRRqS",
      "siend": true,
      "signChannel": "APP",
      "signature": "MIIFBgYJKoZIhvc……8BC75zXwc0PZGLNIsrUtj2tm2"
    }
  ],
  "patientSignInfo": {
    "no": "123456",
    "name": "李四患者",
    "signerName": "李四亲属",
    "seal": "...",
    "signature": "MIIFBgYJKoZIhvc……8BC75zXwc0PZGLNIsrUtj2tm2",
    "signTime": 1597225833000,
    "timeData": "MIIE+gYJKoZIhvcNAQcCoIIE6zCCBO.....UXtTTr4dRMi7iNG2W5ZcUYBysPPM8fpwPFyfEZV2wwIhAMB7vAK1n1xIl2+LRJSYaicmGqBMRZFSOc6YZkKFRRqS",
    "signed": true,
    "signChannel": "WX",
    "holders": {
      "双方关系": "朋友",
      "联系电话": "19090909090"
    }
  }
}

7.19 认证服务签署状态通知

URL: {接口由业务系统提供}/pushcallback
调用方法: POST
**功能描述:**业务系统把数据/文件推送到身份认证服务,用户在移动设备上签署/废弃数据后, 身份认证服务通过此接口通知第三方系统,返回数据格式遵循“6.6 回调数据”格式标准.
 

 参数名称参数类型约束参数说明
输入参数:dataIdstring1签署数据id
 docContentBase64string0..1pdf文档内容, Base64编码数据,数据签署时候为空
 signStatusstring1当前文档状态,1: 医生签署, 2: 患者签署, 3已完成, 4: 作废
 patientSignInfoobject1患者签署信息
patientSignInfo对象nostring1患者就诊卡号
 namestring1患者姓名
 sealstring0..1患者签章图片(可以为空)
 signTimelong1患者签署时间戳
 timeDatalong1时间戳签名值
 signedbool1患者是否已经签署此文档
 signChannelstring1医生签署此文档的方式,微信小程序: MINI, 平板电脑: PAD、app:APP、自动签署:AUTO
 signerNamestring1签署人姓名
 signaturestring0..1签名值(数据签才返回)
 holdersarray0..n解析出来的动态占位符列表, 数据格式为{Key:Value}形式, key为动态占位符的名称, value为患者填充的值(PDF签署才有)
 doctorSignInfoobject1医生签署对象
doctorSignInfo对象cardNumberstring1医生身份证
 namestring1医生姓名
 sealstring1医生签章图片
 signTimelong1医生签署时间
 timeDatalong1时间戳签名值
 signedbool1医生是否已经签署此文档
 signaturestring0..1签名值(数据签才返回)
 signChannelstring1医生签署此文档的方式,微信小程序: MINI, 平板电脑: PAD、app:APP、自动签署:AUTO
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
body对象:bodyobject0..1返回对象(具体内容由业务系统提供)

输入参数示例:

{
  "id": "1303172585906810882",
  "signStatus": 0,
  "docContentBase64": "...",
  "doctorSignInfo": [
    {
      "cardNumber": "007",
      "name": "张三医生",
      "seal": "...",
      "signTime": 1597225333000,
      "timeData": "MIIE+gYJKoZIhvcNAQcCoIIE6zCCBO.....UXtTTr4dRMi7iNG2W5ZcUYBysPPM8fpwPFyfEZV2wwIhAMB7vAK1n1xIl2+LRJSYaicmGqBMRZFSOc6YZkKFRRqS",
      "siend": true,
      "signChannel": "APP",
      "signature": "MIIFBgYJKoZIhvc……8BC75zXwc0PZGLNIsrUtj2tm2"
    }
  ],
  "patientSignInfo": {
    "no": "123456",
    "name": "李四患者",
    "signerName": "李四亲属",
    "seal": "...",
    "signature": "MIIFBgYJKoZIhvc……8BC75zXwc0PZGLNIsrUtj2tm2",
    "signTime": 1597225833000,
    "timeData": "MIIE+gYJKoZIhvcNAQcCoIIE6zCCBO.....UXtTTr4dRMi7iNG2W5ZcUYBysPPM8fpwPFyfEZV2wwIhAMB7vAK1n1xIl2+LRJSYaicmGqBMRZFSOc6YZkKFRRqS",
    "signed": true,
    "signChannel": "WX",
    "saveType": 2,
    "holders": {
      "双方关系": "朋友",
      "联系电话": "19090909090"
    }
  }
}

7.20 获取数据签署H5链接地址

URL: https://{ip:port}/open/signature/h5Sign
调用方法: POST
功能描述: 应用系统调用此接口,返回一个签署界面url链接地址,用户在url对应界面上对数据进行签署。
 

 参数名参数类型约束参数说明
输入参数:dataTypestring1签名原文类型PLAIN|HASH
 elecCertIdstring0..1证照标识(通过证照签名时候必传)
 cardNumberstring1单位唯一标识或个人唯一标识
 signatureAlgIDstring1签名算法,此处为SM2
 hashAlgIDstring1HASH算法,支持SM3
 userTypestring11 个人 2单位
 toSignstring1签名原文
 transIdstring1业务流水号,业务系统内保持唯一
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:htmlUrlstring1h5链接地址

返回内容示例:

{
     "result_code":"0",
     "result_msg":"请求成功",
     "success":true,
     "body":{
       " htmlUrl ": "https://www.{....}.com",

     }
}

7.21 获取pdf签署H5链接地址

URL: https://{ip:port}/open/signature/h5SignPdf

调用方法: POST
功能描述: 应用系统调用此接口,返回一个签署界面url,用户在url对应界面上对PDF文件进行签署。
 

 参数名称参数类型约束参数说明
输入参数:userTypestring1用户类型(1个人或2单位)
 personCardstring0..1个人唯一码(如身份证,当用户类型1时,personCard必填)
 orgCodestring0..1单位唯一码(用户类型为2时,orgCode必填)
 sealIdstring1印章标识
 orgNamestring0..1单位名称
 filestring1文件base64编码(5M以内)
 digitalCertIdstring1数字证书唯一标识
 isQfstring0..1是否盖骑缝章
 qfPossitionstring0..1骑缝章盖章位置
 sealTypestring1关键字或者坐标
 sealInfoobject1签章参数对象
 transIdstring1业务流水号,业务系统内保持唯一
sealInfo对象:keywordstring0..1关键字sealType为:关键字时必传
 pageConfigListarray0..n关键字位置sealType为:关键字时必传
pageConfigList 数组:pageNostring0..1签章页码,用”,”隔开(英文状态) sealType为:关键字时必传
 keyWordIndexstring0..1当前页面第几个sealType为:关键字时必传
sealInfo数组xstring1sealType为:坐标时必传
 ystring1sealType为:坐标时必传
 pageNostring0..1签章页码,用”,”隔开(英文状态)
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:htmlUrlstring1h5链接地址

关键字输入参数示例:

{
    "requestId": "requestId",
    "userType": 1,
    "personCard": "",
    "orgCode": "",
    "sealId": "1673983799422935041",
    "digitalCertId": "",
    "orgName": "测试医疗机构",
    "sealType": "关键字",
    "isQf": true,
    "qfPossition": 0.8,
    "sealInfo": [
        {
            "keyword": "医生签名",
            "pageConfigList": [
                {
                    "pageNo": 1,
                    "keyWordIndex": 1
                }
            ]
        },
        {
            "keyword": "患者意见",
            "pageConfigList": [
                {
                    "pageNo": 1,
                    "keyWordIndex": 1
                }
            ]
        }
    ],
    "file": ""
}

坐标输入参数示例:

{
    "requestId": "requestId",
    "userType": 1,
    "personCard": "",
    "orgCode": "",
    "sealId": "1673983799422935041",
    "digitalCertId": "",
    "pin": "123456",
    "orgName": "测试医疗机构",
    "signType": "坐标",
    "entityName": "程",
    "isqf": true,
    "qfPossition": 0.5,
    "sealInfo": [
        {
            "pageNo": 1,
            "x": 0.4,
            "y": 0.1
        }
    ],
    "file": "2Jq/F3CpS"
}

返回内容示例:

{
     "result_code":"0",
     "result_msg":"请求成功",
     "success":true,
     "body":{
       "htmlUrl ": "https://www.{....}.com",
     }
}

7.22 H5或接口签署信息查询接口

URL: https://{ip:port}/open/sign/queryApiSignInfo
调用方法: POST
功能描述: 业务系统通过“7.21 获取pdf签署H5链接地址、7.20 获取数据签署H5链接地址、7.2数字证书签名、 8.3电子签章”进行签署时,签署信息查询, 返回签署信息。
 

 参数名参数类型约束参数说明
输入参数:transIdstring1业务流水号,业务系统内保持唯一
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:signStatusstring1当前状态,1:已签署 0 未签署
 certInfoobject0..1证书信息(CertInfo对象)
CertInfo对象:certBase64string1t签名数字证书, Base64编码
 signatureAlgIDstring1签名算法(如SM2)
 certIssuerstring1证书颁发者
 certNostring1证书序列号
 certNotBeforestring1证书有效期起
 certNotAfterstring1证书有效期止
 certCNstring1证书主体
 signInfoobject0..1签名信息(SignInfo对象)
SignInfo对象:timeDatastring1时间戳签名值
 signTimestring1签名时间(yyyy-MM-DD HH:mm:ss)
 signP7string0..1P7签名值(数据签署时候才返回)
 sealstring0..1签章图片
 toSignstring0..1签名原文(pdf签署时候为空)
 docContentBase64string0..1pdf文档内容, Base64编码数据(数据签署时候为空)

返回内容示例:

{
     "result_code":"0",
     "result_msg":"请求成功",
     "success":true,
     "body":{
              "signStatus": 0,
              "certInfo":{
                   "certBase64":"base64",
                   "signatureAlgID":"3333",
                   "certIssuer":"四川ca", 
                   "certNo":"3333",
                   "certNotAfter":"2023-10-12 00:00:00",
                   " certNotBefore ":"2022-10-12 00:00:00",
                   "certCN":"张三",
              },
              "signInfo":{
                   "timeData":"dfsdsldhfsdj",
                    "signTime":"2020-12-12 00:00:00",
                    "signP7":"dddfdf",
                    "seal":"base64",
                    "docContentBase64": "base64",
                    "toSign": "签名原文"
               } 
        }
}

7.23 H5签署状态通知

URL: {接口由业务系统提供}/pushcallback
调用方法: POST
功能描述: h5签署数据或pdf时,返回的状态通知,数据格式遵循“6.6 回调数据”数据标准。
 

 参数名参数类型约束参数说明
输入参数signStatusString1当前状态,1:已签署 0 未签署
 signInfoobject0..1签名信息(SignInfo对象)
SignInfo对象:sealstring0..1签章图片
 signTimestring1签署时间戳
 timeDatastring1时间戳签名值
 signP7string0..1P7签名值(数据签署时候才返回)
 toSignstring0..1签名原文(pdf签署时候为空)
 docContentBase64string0..1pdf文档内容, Base64编码数据(数据签署时候为空)
 certInfoobject0..1证书信息(CertInfo对象)
CertInfo对象:certBase64string1签名数字证书, Base64编码
 signatureAlgIDstring1签名算法(如SM2)
 certIssuerstring1证书颁发者
 certNostring1证书序列号
 certNotBeforestring1证书有效期起
 certNotAfterstring1证书有效期止
 certCNstring1证书主体

输入参数示例:

{
  "docContentBase64": "base64",
  "signStatus": 0,
  "signInfo": {
    "timeData": "dfsdsldhfsdj",
    "signTime": "2020-12-12 00:00:00",
    "signP7": "dddfdf",
    "seal": "base64",
    "docContentBase64": "base64",
    "toSign": "签名原文"
  },
  "certInfo": {
    "certBase64": "base64",
    "signatureAlgID": "3333",
    "certIssuer": "四川ca",
    "certNo": "3333",
    "certNotAfter": "2023-10-12 00:00:00",
    "certNotBefore": "2022-10-12 00:00:00",
    "certCN": "张三"
  }
}

7.24 免密签署状态查询

URL: https://{ip:port}/open/digitalCert/pinSaveStatus
调用方法: POST
功能描述: 查询免密签署是否开启,用户免密操作,如果开启,在“7.2 数字证书签名”和“8.3 电子签章”接口则可以不传入pin码。
 

 参数名参数类型约束参数说明
输入参数cardNumberstring1个人唯一标识
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
 pinStatusint11开启 0未开启

返回内容示例:

{
     "result_code":"200",
     "result_msg":"成功",
     "success":true,
     "body":{ pinStatus:1 }
}

8 电子签章服务接口

8.1 接口列表

表格2 电子签章服务接口列表

编号接口功能接口URL对象方法授权备注
1电子印章查询https://{ip:port}/open/signature/sealQuerysealQuePOSTtrusted 
2电子签章https://{ip:port}/open/signature/signPdfPOSTtrusted 
3电子印章pdf验证接口https://{ip:port}/open/signature/verifyPdfPOSTtrusted 

8.2 电子印章查询

URL: https://{ip:port}/open/signature/sealQuerysealQue
调用方法: POST
功能描述: 查询单位或个人电子印章。
 

 参数名称参数类型约束参数说明
输入参数:userTypestring1用户类型(1个人或2单位)
 personCardstring0..1个人唯标识(如身份证, 当用户类型1时,必填)
 orgCodestring0..1单位唯标识(用户类型为2时,orgCode必填)
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyarray0..n结果信息
body数组:sealIdstring1印章标识
 sealDatastring1印章数据Base64编码,遵循GB/T 38540
 makeEsealTimestring1制章时间
 defaultSealstring1是否默认,1-是,0-否

返回内容示例:

{
     "result_code":"0",
     "result_msg":"请求成功",
     "success":true,
     "body":{[
            "sealId":"12343243",
            "sealData":"DEF****==",
            "makeEsealTime":"2022-10-20 12:00:00" ,
           " defaultSeal ":"1"
     ]}
}

8.3 电子签章

URL: https://{ip:port}/open/signature/signPdf

调用方法: POST
功能描述: 应用系统调用此签章接口完成PDF文件的文件签署。
 

 参数名称参数类型约束参数说明
输入参数:userTypestring1用户类型(1个人或2单位)
 transIdstring1业务流水号,业务系统内保持唯一
 personCardstring0..1个人唯一码(如身份证,当用户类型1时必填)
 orgCodestring0..1单位唯一码(用户类型为2时必填)
 sealIdstring1印章标识
 orgNamestring0..1单位名称
 filestring1文件base64编码(5M以内)
 digitalCertIdstring1数字证书唯一标识
 pinstring0..1数字证书pin码(个人如果设置了免密,则不需要传,否则必传)
 isQfstring0..1是否盖骑缝章
 qfPossitionstring0..1骑缝章盖章位置
 sealTypestring1关键字或者坐标
 sealInfoobject1签章参数对象
sealInfo对象:keywordstring0..1关键字sealType为:关键字时必传
 pageConfigListarray0..n关键字位置sealType为:关键字时必传
pageConfigList 数组:pageNostring0..1签章页码,用”,”隔开(英文状态) sealType为:关键字时必传
 keyWordIndexstring0..1当前页面第几个sealType为:关键字时必传
sealInfo数组xstring1sealType为:坐标时必传
 ystring1sealType为:坐标时必传
 pageNostring0..1签章页码,用”,”隔开(英文状态)
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1返回对象
body对象:sealIdstring1印章标识
 signDatastring1签章文件base64编码
 sealTimestring1签章时间(yyyy-MM-DD HH:mm:ss)
 timeDatastring1时间戳签名值

关键字输入参数示例:

{
	"userType": 1,
	"personCard": "",
	"orgCode": "",
	"sealId": "1673983799422935041",
	"digitalCertId": "",
	"pin": "123456",
	"orgName": "测试医疗机构",
	"signType": "关键字",
	"entityName": "程",
	"isqf": true,
	"qfPossition": 0.8,
	"sealInfo": [
		{
		"keyword": "医生签名",
		"pageConfigList": [
			{
			"pageNo": 1,
			"keyWordIndex": 1
			}
		]
		},
		{
			"keyword": "患者意见",
			"pageConfigList": [
			{
				"pageNo": 1,
				"keyWordIndex": 1
			}
			]
		}
	],
	"file": ""
}

坐标输入参数示例:

{
	"requestId": "requestId",
	"userType": 1,
	"personCard": "",
	"orgCode": "",
	"sealId": "1673983799422935041",
	"digitalCertId": "",
	"pin": "123456",
	"orgName": "测试医疗机构",
	"signType": "坐标",
	"entityName": "程",
	"isqf": true,
	"qfPossition": 0.5,
	"sealInfo": [
		{
			"pageNo": 1,
			"x": 0.4,
			"y": 0.1
		}
	],
	"file": "2Jq/F3CpS"
}

返回内容示例:

{
     "result_code":"0",
     "result_msg":"请求成功",
     "success":true,
     "body":{
                "sealId ":"12344 ",
                "requestId":"12345",
                "signData":"DFDF***===",
                "sealTime":"2022-12-09 10:00:00"   ,
                "timeData":"MIIE+gYJKoZIhvcNAQcCoIIE6zCCBO.....UXtTTr4dRMi7iNG2W5ZcUYBysPPM8fpwPFyfEZV2wwIhAMB7vAK1n1xIl2+LRJSYaicmGqBMRZFSOc6YZkKFRRqS",
       
     }
}

8.4 电子签章pdf验证接口

URL: https://{ip:port}/open/signature/verifyPdf
调用方法: POST
功能描述: 电子签章pdf验证,验证pdf签章的有效性,并获取签章签署信息。
 

 参数名称参数类型约束参数说明
输入参数:filestring1电子签章文件base64编码
 transIdstring0..1业务流水号,业务系统内保持唯一,不传则不返回CertInfo、SignInfo 对象
输出参数:result_codestring1正常状态码
 result_msgstring1正常响应描述
 successbool1成功失败,成功:true,失败:false
 bodyobject1结果信息
body对象:verifyResultbool1文件整体验证结果 ture或false
 verifyListarray0..n签章验证列表
verifyList 数组:signIndexint1签名或签章序号,标识文档中出现的第几个 签名或签章,从 1 开始编号。
 signStdstring1“es.GBT38540”GB/T 3854标准 “es.GMT0031” GM/T 0031 标准 “ds.GBT35275”GB/T 35275 标准 “ds.PKCS7” PKCS#7 数字签名 “unknown” 未识别的签名标准
 verifystring1单个印章或签名验证结果 “true/false”, 当 signStd 类型为es.GMT0031或 ds.PKCS7 时,不做验证,该值为“unknown”
 errorCodestring1错误码
 errorMsgstring1错误原因
 certInfoobject0..1证书信息(CertInfo对象)
CertInfo对象:certBase64string1签名数字证书, Base64编码
 signatureAlgIDstring1签名算法(如SM2)
 certIssuerstring1证书颁发者
 certNostring1证书序列号
 certNotBeforestring1证书有效期起
 certNotAfterstring1证书有效期止
 certCNstring1证书主体
 signInfoobject0..1签名信息(SignInfo对象)
SignInfo对象:timeDatastring1时间戳签名值
 signTimestring1签名时间(yyyy-MM-DD HH:mm:ss)

返回内容示例:

 {
  "result_code": "0",
  "result_msg": "请求成功",
  "success": true,
  "body": {
    "verifyResult": "true",
    "fileName": "ddd.pdf",
    "verifyList": [
      {
        "signIndex": 1,
        "signStd": "ds.PKCS7",
        "verify": "unknown",
        "errorCode": "c803302",
        "errorMsg": "该数字签名为rsa签名",
        "certInfo": {
          "certBase64": "base64",
          "signatureAlgID": "3333",
          "certIssuer": "四川ca",
          "certNo": "3333",
          "certNotAfter": "2023-10-12 00:00:00",
          "certNotBefore": "2022-10-12 00:00:00",
          "certCN": "张三"
        },
        "signInfo": {
          "timeData": "dfsdsldhfsdj",
          "signTime": "2020-12-12 00:00:00"
        }
      }
    ]
  }
}

附录A

表格A.1 接口返回状态码定义

消息代码消息描述
0成功
1000应用ID为空
1001应用ID未匹配任何应用
1002参数签名为空
1003参数签名值错误
1103参数错误
1104数据重复
1105权限验证错误
1107二维码生成失败
1299应用负载超过设定值
1202调用内部服务出错
1205非法IP调用
2001用户不存在
2003签名验证失败
2006二维码登录失败
3001网络错误
9001重复提交
9998操作失败
9999其它错误

表格A.2签署数据种类编码/签署文件种类编码

签署数据种类编码/签署文件种类编码描述信息
recipe 处方
viewport 影像
diagnosis 诊断报告
medicalRecord 病历
consultation 会诊意见书
laboratory 检验模板参数
docCode_001 病历概要
docCode_002 门(急)诊病历
docCode_003 急诊留观病历
docCode_004 西药处方
docCode_005 中药处方
docCode_006 检查报告
docCode_007 检验报告
docCode_008 治疗记录
docCode_009 一般手术记录
docCode_010 麻醉术前访视记录
docCode_011 麻醉记录
docCode_012 麻醉术后访视记录
docCode_013 输血记录
docCode_014 待产记录
docCode_015 阴道分娩记录
docCode_016 剖宫产记录
docCode_017 一般护理记录
docCode_018 病重(病危)护理记录
docCode_019 手术护理记录
docCode_020 生命体征测量记录
docCode_021 出入量记录
docCode_022 高值耗材使用记录
docCode_023 入院评估
docCode_024 护理计划
docCode_025 出院评估与指导
docCode_026 手术知情同意书
docCode_027 麻醉知情同意书
docCode_028 输血治疗同意书
docCode_029 特殊检查及特殊治疗同意书
docCode_030 病危(重)同意书
docCode_031 其他知情同意书
docCode_032 住院病案首页
docCode_033 中医住院病案首页
docCode_034 入院记录
docCode_035 24 小时内入出院记录
docCode_036 24 小时内入院死亡记录
docCode_037 首次病程记录
docCode_038 日常病程记录
docCode_039 上级医师查房记录
docCode_040 疑难病例讨论记录
docCode_041 交接班记录
docCode_042 转科记录
docCode_043 阶段小结
docCode_044 抢救记录
docCode_045 会诊记录
docCode_046 术前小结
docCode_047 术前讨论
docCode_048 术后首次病程记录
docCode_049 出院记录
docCode_050 死亡记录
docCode_051 死亡病例讨论记录
docCode_052 住院医嘱
docCode_053 出院小结