合作平台通过智能合约读取某一个externalID的KYC结果和附加信息。
接口
function getStatusAndExtraInfo(
bytes32 id
) public view returns (AccessStatus status, string memory extraInfo)
enum AccessStatus {
VERIFY,
SUCCESS,
REJECTED,
SANCTIONED
}参数说明:
- bytes32 id: externalID的SHA256 hash,16进制字符串,例如
0x3bb78535cc9555ff19fe3556aaa41c78a0a45c64d49ba2bc564507648a8e77a1
返回值说明:
- AccessStatus status
- 0:VERIFY,对应两种场景,一是该externalID的链上KYC状态为初始状态,即从来没有在链上写入过该externalID的状态,二是该externalID的RFI(Request For Information)正在进行中,有待用户提供进一步的资料。这两种状态都说明需要用户继续验证自己的身份,那么合作方APP需要引导用户打开CuteID的KYC页面做KYC。
- 1:SUCCESS, 表示该用户已经通过了KYC,该externalID有权限访问合作方APP。合作方APP引导用户继续做相应业务操作即可,不需要再做KYC。
- 2:REJECTED,表示该用户没有通过KYC,该externalID没有权限访问合作方APP。合作方APP禁止用户做相应的业务操作。
- 3:SANCTIONED, 表示该钱包地址是被美国/欧盟/联合国制裁的地址。制裁地址只对使用钱包地址的合作方有效,对使用externalID的合作方无效,可忽略。
- string memory extraInfo
- 合作方要求的一些附加信息,比如externalID的国家信息、国籍信息、openID信息。
- 附加信息是用分配给合作方的RSA公钥加密后的base64编码的密文,合作方在获取后需要用RSA私钥解密。
- 附加信息解密后的明文格式如下
country和nationality遵循ISO2Code国家或地区的两字母缩写标准。{ "country":"CN", "nationality":"CN", "openID":"16ce723216e1cc726521892162577f91a54972fc1536150d7983fba5a92e6deb" }
ABI
[
{
"inputs":[
{
"internalType":"bytes32",
"name":"id",
"type":"bytes32"
}
],
"name":"getStatusAndExtraInfo",
"outputs":[
{
"internalType":"enum CuteIDKYC.AccessStatus",
"name":"status",
"type":"uint8"
},
{
"internalType":"string",
"name":"extraInfo",
"type":"string"
}
],
"stateMutability":"view",
"type":"function"
},
{
"type":"event",
"name":"KYCStatusChanged",
"inputs":[
{
"name":"id",
"type":"bytes32",
"indexed":true,
"internalType":"bytes32"
},
{
"name":"accessStatus",
"type":"uint8",
"indexed":false,
"internalType":"enum CuteIDKYC.AccessStatus"
}
],
"anonymous":false
}
]合约地址
| 环境 | 合约地址 | 所在链 | 备注 |
|---|---|---|---|
| sandbox | 0x3a0CAF713Acc4fB2B391Ad048409Cab0b005f579 | Arbitrum Sepolia | 用于集成验证 |
| production | Arbitrum One主网 | 用于真实生产环境 |