当合作方通过智能合约查询到某用户的 KYC 状态为“待验证”时,提示用户点击合作方 APP 中的 KYC 按钮,并通过手机浏览器跳转至 CuteID KYC H5 页面完成 KYC 认证。
CuteID KYC 页面是私有的,访问该页面需要认证。请按照我们预先定义的规则,提供所有参数,并生成base64编码的RSA签名,随后将其作为查询字符串拼接到前端的 base URL 中。
- CuteID为合作平台生成了一对唯一的公私钥,该密钥对具有合作平台唯一性,并由双方共享。为了安全起见,请在收到公私钥后妥善保存。
- 请根据以下详细说明生成上述 URL 查询参数,以便合法调用页面。
- app_uuid是分配给合作平台的唯一标志id
- sign 是合作平台使用私钥对所有参数(数组)生成的签名,CuteID 平台将使用对应的公钥进行验签。
公私钥相关:
- 秘钥类型:RSA,秘钥长度:2048,命令参考如下:
> openssl genrsa -out private_key.pem 2048 > openssl rsa -in private_key.pem -pubout -out public_key.pem
- CuteID 将为合作平台生成唯一的公私钥。请将公私钥妥善存储在您的系统中,确保安全保管,避免泄露。
参数和签名生成规则:
必须参数:
app_uuid,平台的唯一标识id,由CuteID分配给合作平台
external_id,用户的唯一标志id,由合作平台提供
rand,6位随机整数,由合作平台生成
timestamp,当前时间戳
可选参数
callback_url,用户认证完成后,跳转到合作平台的url,包括web,ios或android
verified_email,合作平台传此参数,则自动注册或登录,省去手动输入email和code的流程
- 将参数以数组的形式,按ASCII升序排列,样例:
原始数据: [ 'app_uuid' => '9a0dc56a-abb8-47ca-9cf6-bb483e1b164e', 'external_id' => 'a1104ca8-96b4-49a6-8d75-432374ea34a5', 'timestamp' => 1725444342, 'rand' => 728930, 'callback_url' => 'https://web.example.com', 'verified_email' => '[email protected]' ]; 排序后的数据: [ 'app_uuid' => '9a0dc56a-abb8-47ca-9cf6-bb483e1b164e', 'callback_url' => 'https://web.example.com', 'verified_email' => '[email protected]', 'external_id' => 'a1104ca8-96b4-49a6-8d75-432374ea34a5', 'rand' => 728930, 'timestamp' => 1725444342, 'verified_email' => '[email protected]' ];
- 将排序后的数组数据进行拼接,并使用 urlencode 编码为 URL 查询字符串,例如:
app_uuid=`{app_uuid}`&external_id=`{external_id}`&rand=`{rand}`×tamp=`{timestamp}`&callback_url=`{callback_url}`&verified_email=`{verified_email}`
- 使用私钥对上述字符串进行签名,并将签名结果进行 base64 编码,最终生成的签名结果为:{sign}。
- 将各参数和 base64 编码的签名作为 URL 查询字符串,拼接到 base URL 中,例如:
https://sandbox-web.cuteid.ai?app_uuid=`{app_uuid}`&external_id=`{external_id}`&rand=`{rand}`&callback_url=`{callback_url}`×tamp=`{timestamp}`&verified_email=`{verified_email}`&sign=`{sign}`