# ● 回调接口
# (一) 接口概述
1. 本接口通常集成在交易平台提供的服务或前置机中,用于接收App扫码后共享给交易平台的所有数据。
2. 本接口专门供给APP服务端调用,交易平台内部不调用。对于交易平台本地来说本接口仅仅被调用,通过解析接口传入的参数,并存储在本地数据库或缓存,实现交易平台在对外数据交互过程中的接收功能。
# (二) 参数,返回值
# 方法url: receiveAppLogController/receiveScanData
# 入参(中招互连——>平台前置机服务):
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
type | varchar(2) | 是 | 回调数据状态码,标记回调数据所代表的业务含义,如'01'代表扫码状态 |
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
platformCode | varhcar(11) | 平台编码,数据所属平台 |
# 返回值:(平台前置机服务——>中招互连)
参数名 | 类型 | 说明 |
---|---|---|
header | ||
└ ret | String | 0成功/1失败 |
└ msg | String | 结果说明 |
data | Null | 为空即可 |
# (三) 回调数据类型
回调接口的逻辑流程
1. 读取本接口的入参type和data;
2. 以type为判断条件,进入逻辑分支,调用不同 SDK接口方法(取决于type);
3. SDK接口内,解析data,提取data.encrypt数据,并解密;
4. SDK接口内,将data.encrypt的解密结果转化成不同 Json结构(取决于type) 的对象,作为SDK接口方法的返回结果;
5. 将SDK接口方法的返回结果存储在不同 数据库表(取决于type) 中(也可以是缓存,根据实际需要),交易平台通过其他接口(tid做参数)查询使用。
关注点(下面正文为详细说明):
SDK接口方法
SDK接口方法返回的Json结构
存储的数据库表
:::
# type=01, 接收扫码状态
# (1)调用SDK方法:HttpSweepCodeUtil.getScanstatusReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
# (3)返回Json结构:ScanstatusReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
tId | varchar(50) | 事件ID |
unifiedTransactionCode | varchar(50) | 机构交易码 |
personalTransactionCode | varchar(50) | 个人交易码 |
isScaned | varchar(50) | 扫码状态:01已扫00未扫 |
qRCodeType | varchar(2) | 二维码类型 |
{
"isScaned": "01",
"qRCodeType": "06",
"tId": "E110000028511fdc64608c640c591e6806a10b3c62a"
}
1
2
3
4
5
2
3
4
5
# (4)存入数据库表:t_b_scanstatus_receive_log
# type=02, 接收用户信息(共享登录)
# (1)调用SDK方法:HttpSweepCodeUtil.getUserInfoReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
# (3)返回Json结构:ScanningUserInfoReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
TId | varchar(50) | 事件ID |
personName | varchar(50) | 用户姓名 |
telephoneNum | varchar(20) | 手机号码 |
idCard | varchar(18) | 身份证号 |
unifiedTransactionCode | varchar(50) | 电子交易全国共享码 |
sharedCodeStatus | varchar(2) | 电子交易全国共享码状态 正常01、作废02、冻结03 |
legalCode | varchar(18) | 组织机构代码 |
legalName | varchar(100) | 机构名称 |
legalRepresent | varchar(50) | 法定代表人姓名 |
legalIDCard | varchar(18) | 注册机构法人身份证 |
managerTelephoneNum | varchar(20) | 管理员手机号 |
certSn | varchar(40) | CA证书Id/序列号 |
caType | varchar(2) | CA类型 |
caOrgType | varchar(10) | CA机构类型编码 |
signOriVal | varchar(50) | 签名原值 |
signatureValue | text | CA签名值 |
pubCert | text | 公钥证书 |
algorithm | varchar(10) | 加密算法 |
accessToken | text | 授权码(用于调用app服务端其他接口) |
loginUserType | varchar(2) | 登录类型01个人/02机构 |
{
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI5OWE0ZTFhZDIwOGI0......",
"caOrgType": "010002",
"certSn": "59E28B2B1B5946A429F453ED865E55B3B7777B6B",
"idCard": "23022419770620132X",
"legalCode": "123456789008794651",
"legalIDCard": "431121199110282221",
"legalName": "斗鱼网咖",
"legalRepresent": "王倩倩",
"loginUserType": "02",
"managerTelephoneNum": "13581782409",
"personName": "王伟彤",
"personalTransactionCode": "0592A2BE39AE47A08BA36624225676B1",
"pubCert": "MIIESTCCAzGgAwIBAgIUWeKLKxtZRqQp9FPthl5Vs7d3e2swDQYJK......",
"sharedCodeStatus": "01",
"signOriVal": "05d60e032b574f69af4c7671174552e4",
"signatureValue": "MIIGNgYJKoZIhvcNAQcCoIIGJzCCBiMCAQExDzANBglgh......",
"tId": "E110000028511fdc64608c640c591e6806a10b3c62a",
"telephoneNum": "15804609746",
"unifiedTransactionCode": "76A0E64FFA9B45D083CB17B650310972"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# (4)存入数据库表:t_b_logininfo_receive_log
数据入库后,由本平台的工具或web页面通过本次二维码里的tId查询。
用户信息绑定: 机构登录使用机构交易码绑定。
如果账号已被绑定过再次绑定可以提醒:账号已被其他手机号绑定,确认要更新吗。
# type=03, 接收签名值(除签章外)
# (1)调用SDK方法:HttpSweepCodeUtil.getSignatureReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
# (3)返回Json结构:ScanningSignatureReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
TId | varchar(50) | 事件ID |
useStatus | varchar(2) | 使用状态00未使用01已使用 |
personalTransactionCode | varchar(50) | 个人交易码 |
unifiedTransactionCode | varchar(50) | 电子交易全国共享码 |
certSn | varchar(40) | CA证书Id/序列号 |
caOrgType | varchar(10) | CA机构类型编码 |
signOriVal | varchar(50) | 签名原值 |
signatureValue | text | CA签名值 |
pubCert | text | 公钥证书 |
algorithm | varchar(10) | 加密算法 |
{
"algorithm": "RSA",
"caOrgType": "010002",
"certSn": "59E28B2B1B5946A429F453ED865E55B3B7777B6B",
"personalTransactionCode": "0592A2BE39AE47A08BA36624225676B1",
"pubCert": "MIIESTCCAzGgAwIBAgIUWeKLKxtZRqQp9FPthl5Vs7d......",
"signOriVal": "eea67edab300461d8e0e0be2ee051523",
"signatureValue": "MIIGCgYJKoZIhvcNAQcCoIIF+zCCBfcCAQEx......",
"tId": "E11000002857030a416d86548b1beae369ef9fb717a",
"unifiedTransactionCode": "76A0E64FFA9B45D083CB17B650310972"
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# (4)存入数据库表:t_b_signature_receive_log
# type=05, 接收加密证书信息
# (1)调用SDK方法:HttpSweepCodeUtil.getEncryptCertReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
# (3)返回Json结构:EncryptCertReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
TId | varchar(50) | 事件ID |
personalTransactionCode | varchar(50) | 个人交易码 |
caOrgType | varchar(10) | CA机构类型编码 |
signOriVal | varchar(50) | 签名原值 |
signatureValue | text | CA签名值 |
encPubCert | text | 加密的公钥证书 |
signCertSn | varchar(50) | 签名证书的序列号 |
encCertSn | varchar(50) | 加密证书的序列号 |
pubCert | varchar(50) | 签名公钥 |
algorithm | varchar(10) | 签名算法:SM2和RSA |
telephoneNum | varchar(11) | 加密人手机号码 |
{
"caOrgType": "010002",
"encCertSn": "2F8A9B614AA81CD8864B0BEDB9ECB7D21F9C1A2C",
"encPubCert": "MIIEYDCCA0igAwIBAgIUL4qbYUqoHNiGSwvtuey30h......",
"personalTransactionCode": "0592A2BE39AE47A08BA36624225676B1",
"signCertSn": "59E28B2B1B5946A429F453ED865E55B3B7777B6B",
"signOriVal": "39b967f298224d4d81d5633aa55e5d4d",
"signatureValue": "MIIGNgYJKoZIhvcNAQcCoIIGJzCCBiMCAQExDzANBgl......",
"tId": "E110000028509d42930d03f4c64bd283c774712b8e1",
"telephoneNum": "15804609746"
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# (4)存入数据库表:t_b_encryptcert_receive_log
# type=06, 接收解密结果信息
# (1)调用SDK方法:HttpSweepCodeUtil.getDecryInfoReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
# (3)返回Json结构:DecryptReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
TId | varchar(50) | 事件ID |
personalTransactionCode | varchar(50) | 个人交易码 |
decryptInfoList | List | |
└ key | varchar(50) | 主键 |
└ decryptStr | varchar(50) | 解密串 |
{
"decryptInfoList": [
{
"decryptStatus": "0",
"decryptStr": "da39e23476b9adfa6775a8763bbf9452b94037a79edfce800268a2e3dc54e93b",
"key": "AH-0001"
}
],
"personalTransactionCode": "0592A2BE39AE47A08BA36624225676B1",
"tId": "E110000028539bf043a381944578fad525e678d7831"
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# (4)存入数据库表:t_b_decryptinfo_log、t_b_decrystrset_receive_log
# type=09, 接收用户信息(谁扫谁解密)
# (1)调用SDK方法:HttpSweepCodeUtil.getUserInfoReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
# (3)返回Json结构:ScanningUserInfoReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
TId | varchar(50) | 事件ID |
personName | varchar(50) | 用户姓名 |
telephoneNum | varchar(20) | 手机号码 |
idCard | varchar(18) | 身份证号 |
personalTransactionCode | varchar(50) | 个人交易码 |
unifiedTransactionCode | varchar(50) | 电子交易全国共享码 |
sharedCodeStatus | varchar(2) | 电子交易全国共享码状态 正常01、作废02、冻结03 |
legalCode | varchar(18) | 组织机构代码 |
legalName | varchar(100) | 机构名称 |
legalRepresent | varchar(50) | 法定代表人姓名 |
legalIDCard | varchar(18) | 注册机构法人身份证 |
managerTelephoneNum | varchar(20) | 管理员手机号 |
certSn | varchar(40) | CA证书Id/序列号 |
caType | varchar(2) | CA类型 |
caOrgType | varchar(10) | CA机构类型编码 |
signOriVal | varchar(50) | 签名原值 |
signatureValue | text | CA签名值 |
pubCert | text | 公钥证书 |
algorithm | varchar(10) | 加密算法 |
accessToken | text | 授权码(用于调用app服务端其他接口) |
loginUserType | varchar(2) | 登录类型01个人/02机构 |
{
"accessToken": "eyJhbGciOiJ....",
"algorithm": "RSA",
"caOrgType": "010002",
"caType": null,
"certSn": "73231D995E4E18BA52C53A4757CB2A839F858F8A",
"idCard": "431121199110282221",
"legalCode": "123456789012345678",
"legalIDCard": "431121199110282221",
"legalName": "中招测试平台",
"legalRepresent": "王倩倩",
"loginUserType": "02",
"managerTelephoneNum": "13203833303",
"personName": "王倩倩",
"personalTransactionCode": "F1F6F42D29DC4C41A56705E5E2E711DE",
"pubCert": "MIIETzCCAzegAwIBAgIUcyM.......",
"sharedCodeStatus": "01",
"signOriVal": "f73a24e0c2454837a1b02e51ce3b5393",
"signatureValue": "MIIGPAYJKoZIhvcNAQcCo......",
"telephoneNum": "13203833303",
"tid": "A3401314520b3359292cb054b0f95f497f5e031b816",
"unifiedTransactionCode": "1151FD164597448E9058BF838DDE53F7",
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# (4)存入数据库表:t_b_logininfo_receive_log
# type=12, 接收App退出签章通知
# (1)调用SDK方法:HttpSweepCodeUtil.getExitReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
# (3)返回Json结构:ExitReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
tId | varchar(50) | 事件ID |
pid | varchar(50) | 用户姓名 |
source | varchar(10) | 指令的来源00 app端,01 交易平台 |
exitType | varchar(2) | 退出指令的类型 12:退出连续签章模式 |
{
"exit": "01",
"exitType": "12",
"pId": "E1100000285eb7350eb7255452b8f39d89c32a004da",
"platformCode": "E1100000285"
}
1
2
3
4
5
6
2
3
4
5
6
# (4)存入数据库表:t_b_exit_receive_log
# type=13, 接收用户信息(签章)
# (1)调用SDK方法:HttpSweepCodeUtil.getUserInfoReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
# (3)返回Json结构:ScanningUserInfoReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
TId | varchar(50) | 事件ID |
personName | varchar(50) | 用户姓名 |
telephoneNum | varchar(20) | 手机号码 |
idCard | varchar(18) | 身份证号 |
personalTransactionCode | varchar(50) | 个人交易码 |
unifiedTransactionCode | varchar(50) | 电子交易全国共享码 |
sharedCodeStatus | varchar(2) | 电子交易全国共享码状态 正常01、作废02、冻结03 |
legalCode | varchar(18) | 组织机构代码 |
legalName | varchar(100) | 机构名称 |
legalRepresent | varchar(50) | 法定代表人姓名 |
legalIDCard | varchar(18) | 注册机构法人身份证 |
managerTelephoneNum | varchar(20) | 管理员手机号 |
certSn | varchar(40) | CA证书Id/序列号 |
caType | varchar(2) | CA类型 |
caOrgType | varchar(10) | CA机构类型编码 |
signOriVal | varchar(50) | 签名原值 |
signatureValue | text | CA签名值 |
pubCert | text | 公钥证书 |
algorithm | varchar(10) | 加密算法 |
accessToken | text | 授权码(用于调用app服务端其他接口) |
loginUserType | varchar(2) | 登录类型01个人/02机构 |
algorithmType | varchar(2) | 证书类型, 00 sm2/01 RSA |
certBelongType | varchar(2) | 证书所属类型 01个人/02机构 |
{
"PId": "E11000002856440fafc8a6d4557bf96024d7d3666c5",
"accessToken": "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI5OWE0ZTFhZDI......,
"algorithm": "RSA",
"algorithmType": "01",
"certBelongType": "02",
"certSn": "59E28B2B1B5946A429F453ED865E55B3B7777B6B",
"flowType": "01",
"idCard": "23022419770620132X",
"legalCode": "123456789008794651",
"legalIDCard": "431121199110282221",
"legalName": "斗鱼网咖",
"legalRepresent": "王倩倩",
"loginUserType": "02",
"managerTelephoneNum": "13581782409",
"personName": "王伟彤",
"personalTransactionCode": "0592A2BE39AE47A08BA36624225676B1",
"pubCert": "MIIESTCCAzGgAwIBAgIUWeK......",
"sharedCodeStatus": "01",
"tId": "E1100000285b126f6800d424843a0fd1a10f6d2ea35",
"telephoneNum": "15804609746",
"unifiedTransactionCode": "76A0E64FFA9B45D083CB17B650310972"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# (4)存入数据库表:t_b_logininfo_receive_log
# type=14, 接收签名值(签章)
# (1)调用SDK方法:HttpSweepCodeUtil.getSignatureReceiveData(data)
# (2)入参:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
data | 参数内容(JsonString) | ||
└ encrypt | String | 是 | 携带的被加密的信息 |
└ desKey | String | 是 | 加密的对称秘钥 |
# (3)返回Json结构:ScanningSignatureReceiveVo对象
参数名 | 类型 | 说明 |
---|---|---|
TId | varchar(50) | 事件ID |
useStatus | varchar(2) | 使用状态00未使用01已使用 |
personalTransactionCode | varchar(50) | 个人交易码 |
unifiedTransactionCode | varchar(50) | 电子交易全国共享码 |
certSn | varchar(40) | CA证书Id/序列号 |
caOrgType | varchar(10) | CA机构类型编码 |
pubCert | text | 公钥证书 |
algorithm | varchar(10) | 加密算法 |
signatureValueList | text | 一组哈希值 |
{
"algorithm": "RSA",
"caOrgType": "010002",
"certSn": "59E28B2B1B5946A429F453ED865E55B3B7777B6B",
"personalTransactionCode": "0592A2BE39AE47A08BA36624225676B1",
"pubCert": "MIIESTCCAzGgAwIBAgIUWeKLKxtZRqQp9FPthl5......",
"signatureValueList":
"[{
\"signKey\":\"AH-0001\",
\"signOriVal\":\"HCQKvgSrukZ/PylrNm2hkZh8ycU\\u003d\",
\"signatureValue\":\"MIIGCgYJKoZIhvcNAQcCoIIF+zCC......"
}]",
"tId": "E11000002855a63b2adb5994ab6986d7c7eb6f62f1f",
"unifiedTransactionCode": "76A0E64FFA9B45D083CB17B650310972"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15