# (三) 查询用户信息和加密证书信息

# 1. 接收加密回调信息

前置条件:接收App服务端推送的加密证书信息回调数据后,平台才能使用证书公钥进行加密

  平台接收回调数据,由手机App进行扫码并输入密码操作后,触发App服务端主动通过回调接口推送,成功接收后可查询到加密证书信息。回调过程见【回调接口】【回调接口:type=03】【回调接口:type=05】

# 2. 查询加密用户和证书信息的接口

#   (1) 接口方法url:sweepcodeController/getEncryptUserAndCertInfo

#   (2) 请求参数:

参数名称 类型 是否必填 值示例 描述
tId String 事件ID

  请求示例:

http://123.121.159.112:8866/sweepcodeController/getEncryptUserAndCertInfo?tId=A3401314520c8ee5d8b0261496f8897cd35aa91f106
1

#   (3) 返回值:SweepCodeResult<TBAuthorizationEncryptionEntity>

参数名称 类型 描述
header 响应头
└ returnCode String 0成功;1失败
└ msg String 状态结果说明
└ size Null Null
data 对象
└ tid String 事件ID
└ personName String 用户姓名
└ telephoneNum String 加密人手机号码
└ idCard String 身份证号
└ unifiedTransactionCode String 机构交易码
└ personalTransactionCode String 个人交易码
└ legalCode String 组织机构代码
└ legalName String 机构名称
└ loginUserType String 登录类型 01个人/02机构
└ algorithm String 加密算法:SM2 和 RSA
└ caOrgType String CA机构类型编码
└ encCertSn String 加密证书的序列号
└ encPubCert String 加密的公钥证书
└ pubCert String 公钥证书
└ certSn String 签名证书的序列号
└ signatureValue String CA签名值
└ signOriVal String 签名原值
└ createTime Date 创建时间

  响应示例:

{
    "header":{
        "returnCode":"0",
        "msg":"成功",
        "size":null
    },
    "data":{
        "personName": "李倩倩", 
        "telephoneNum": "15937510685", 
        "idCard": "410481199401101046", 
        "personalTransactionCode":"972433F2A90141BEA65AA64DE0ECF7CF", 
        "legalCode": "911101087433182395", 
        "legalName": "北京蒙树生态环境工程有限公司17", 
        "unifiedTransactionCode": "E77C276AB1F54933BC28F6AE7A81A0C8", 
        "loginUserType": "02", 
        "caOrgType": "010001", 
        "encCertSn": "3300000008207965", 
        "encPubCert": "MIIEQzCCAyugAwIBAgII......", 
        "certSn": "3300000008208340", 
        "pubCert": "MIIEQzCCAyugAwIBAgIIMw......", 
        "signOriVal": "a983e3b91259475db7103586343e8fcf", 
        "signatureValue": "MIIGOwYJKoZIhvcNAQcC......", 
        "algorithm": "RSA", 
        "createTime": "2021-08-11T01:26:15.000+0000", 
        "tid": "M110000001548cbea2c36a449888cb27e2e5b7dd836"
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 3. 使用加密控件加密及记录

加密后续:

  平台查询到加密证书公钥encPubCert后,使用我司提供的加密控件,如CryptoKit.SDEG.(x86/x64).cab等,调用控件方法setEncryptCert()、encryptMsgCMSEnvelope()进行设置加密公钥并加密字符串(此步骤仅通过前端脚本实现,无需后台服务接口);

  加密完成后需要保存加密信息以备解密时使用,包括CA机构类型编码、组织机构代码或个人身份证号、加密密文等。在提供的demo中提供了服务接口encryptionController/recordEnvelopeInfo,将信息保存在数据库表t_b_envelopeinfo_record中。交易平台可根据自身需要选择保存数据库或保存解密文件包的方式进行记录,以备解密使用。