调用 GenerateAliyunBidCertWaysUrl 为虚商客户添加实名认证信息。
接入说明
调用 GenerateAliyunBidCertWaysUrl 时,公共请求参数中的 AccessKeyId 必须为虚商主账号的密钥 ID。
pop接口 GenerateAliyunBidCertWaysUrl,调用方式通过HTTP接口调用,必须为post方法。请求示例(使用post方法)
https://aas.aliyuncs.com/?Action=GenerateAliyunBidCertWaysUrl&Platform=pc&BidType=LIGHTWEIGHT&Timestamp=2021-09-28T09%3A35%3A30Z&Source=BID&Format=JSON&SubjectType=all&SignatureNonce=a193d4b3-e54b-40f7-9d22-62107514cedd&IsOpenApp=true&AliyunPk=10****4893&IsMobile=true&<公共请求参数>
获取到接口返回的结果,是一个URL,此URL3小时有效,业务可以直接在URL中操作完成实名认证
参数说明
公共参数
字段名称 | 字段类型 | 是否必填 | 描述 |
---|---|---|---|
Format | String | 是 | 返回值的类型,支持 JSON 与 XML。默认为 XML。 |
Version | String | 是 | 这里固定传2015-07-01 |
AccessKeyId | String | 是 | 访问服务使用的密钥ID在调用其他接口时该参数为虚商伙伴主账号的密钥 ID。 |
Signature | String | 是 | 签名结果串,关于签名的计算方法,请参见签名机制。 |
SignatureMethod | String | 是 | 签名方式,目前支持 HMAC-SHA1 |
Timestamp | String | 是 | 请求的时间戳。日期格式按照 ISO8601 标准表示,并需要使用 UTC 时间。格式为:YYYY-MM-DDTHH:MM:SSZ。例如,2016-05-23T12:00:00Z(北京时间2016年5月23日20点0分0秒) |
SignatureVersion | String | 是 | 签名算法版本,目前版本是1.0 |
SignatureNonce | String | 是 | 唯一随机数,用于防止网络重放攻击。用户在不同请求间要使用不同的随机数值 |
业务参数
字段名称 | 字段类型 | 是否必填 | 字段说明 | 示意 | 字段描述 |
---|---|---|---|---|---|
action | String | 必填 | 接口名称 | GenerateAliyunBidCertWaysUrl | 接口名称,默认传GenerateAliyunBidCertWaysUrl |
AliyunPk | String | 必填 | 阿里云主账号uid | 123*******789 | 被实名认证的账号的阿里云数字 ID |
BidType | String | 必填 | 虚商类型 | LIGHTWEIGHT | 虚商类型NORMAL:普通虚商(默认值)LIGHTWEIGHT:轻量级虚商 |
Platform | String | 必填 | 业务方所在的平台类型 | pc | 这里有3个可选值pc (表示URL需要在电脑pc中打开)h5 (表示URL需要在h5中打开)app (表示URL需要在app中打开) |
SubjectType | String | 必填 | 认证类型 | all | 这里有3个可选值all : 可以选择个人实名认证和企业实名认证personal 只可以选择个人实名认证enterprise 只可以选择企业实名认证 |
Source | String | 必填 | 业务来源 | BID | 固定传BID |
IsOpenApp | Boolean | 必填 | 选择支付宝快速认证的时候是否需要唤醒支付宝app。一般在移动端都需要填true | true | true或者false |
IsMobile | Boolean | 必填 | 选择支付宝快速认证的时候,支付宝授权的页面是否需要移动端样式。一般在移动端都需要填true | true | true或者false |
返回值
字段 | 说明 |
---|---|
RequestId | requestId,用来追踪请求 |
Data | 返回的实名认证的URL,客户需要在自己的虚商系统展示开。 |
Success | 请求成功或者失败,Success=true表示成功否则表示失败 |
Code | 错误代码 |
Message | Success=false或者为空的时候返回的错误信息 |
//请求成功的示意
{
"RequestId":"7A4326A9-5B17-5BB2-B95D-4CE1EAAD55B9",
// 此url直接在业务方对应的平台打开
"Data":"https://account.aliyun.com/cert/listCertWays.html?token=YWxpeXVuSWxxxxxxxxxxdXRQa2RGY0R4Q3BoVjZ5M3ZuemdHRQ==",
"Success":true
}
// 请求失败的示意
{
"RequestId":"382AD1A2-0641-55EB-A113-395A45AC80C7",
"Message":"Specified signature is not matched with our calculation. server string to sign is:POST&%2F&AccessKeyId%3DLTxxxxxxg0N7cz5%26Action%3DGenerateAliyunBidCertWaysUrl%26AliyunPk%3D1039740447764893%26BidType%3DLIGHTWEIGHT%26Format%3Djson%26IsMobile%3Dtrue%26IsOpenApp%3Dtrue%26Platform%3Dpc%26SignatureMethod%3DHmac-SHA1%26SignatureNonce%3Dcac135a3-a3f3-4b11-9cc8-2479bd2c4fb2%26SignatureVersion%3D1.0%26Source%3Decs%26SubjectType%3Dall%26Timestamp%3D2021-09-28T09%253A37%253A17Z%26Version%3D2015-07-01",
"Code":"SignatureDoesNotMatch"
}
错误信息
HttpCode | 错误代码 | 错误提示 | 错误描述 |
---|---|---|---|
400 | Empty PK | The input parameter 'PK' mandatory for processing this request is not supplied. | PK 不能为空 |
403 | Not Bid | The interface can not be called by a non-bid account | 调用方不是一个虚商用户 |
403 | Bid Mismatch | Pk is not belong to the Bid. | 被调用方不属于此虚商用户(即被调用的阿里云 PK 并非由此虚商创建) |
404 | Invalid PK | The specified parameter 'PK' does not exist in our records. | 此 PK 对应的账号不存在 |
400 | Already Certified | Account is already certified | 此账号已实名认证,旧信息不会覆盖 |
404 | InvalidApi.NotFound | InvalidApi.NotFound | 虚商平台需要通过CBM联系阿里云主账号接口提供方根据虚商主账号uid开通接口权限,否则出现 InvalidApi.NotFound 错误 |
404 | InvalidAccessKeyId.NotFound | InvalidAccessKeyId.NotFound | AccessKeyId 不存在 |
400 | SignatureNonceUsed | SignatureNonceUsed | 15分钟内使用相同的SignatureNonce发送请求,则会返回该错误。如果您是自己封装请求,请确保每次请求使用的SignatureNonce不一样,建议使用uuid作为SignatureNonce |
400 | SignatureDoesNotMatch | SignatureDoesNotMatch | 签名计算错误,请确认签名算法 |
前端接入
嵌入 FastAuthc
// src 是你通过接口获取的链接
<iframe src={src} />
监听 FastAuthc
//由于 FastAuthc 是通过 IFrame 的形式接入到你的应用中,需要用 Event 来进行双边通信
window.addEventListener("message", (e) => {
const { data } = e;
console.log(data);
})
数据结构
// Data 为 FastAuthc 发送出的消息 data 的数据结构如下
// data 的数据结构如下
{
success: boolean;
type: MessageType;
data: any; // (额外附加信息)
}
//MessageType 为 FastAuthc 发送消息的时机
export enum MessageType {
INIT = "aliyun_fast_auth_init", // 页面初始化
LATER = "aliyun_fast_auth_later", // 暂不认证
ANOTHER_AUTHC_WAY = "aliyun_fast_auth_another_authc_way", // 选择其他认证方式
AUTHC_SUCCESS = "aliyun_fast_auth_success", // 认证成功
AUTHC_FAIL = "aliyun_fast_auth_fail", // 认证失败
RE_AUTHC = "aliyun_fast_auth_re_authc", // 重新认证
OPEN_ALIPAY = "aliyun_fast_auth_open_alipay", // 打开支付宝认证页
}
//认证失败的例子
{
success: true,
type: "fail",
data: {
reason: "认证失败的原因",
},
}
//其他情况
{
success: true,
type: 对应情况的 MessageType,
data: {},
}
附录
签名 https://help.aliyun.com/document_detail/91847.htm#concept-2041363