Reference开发手册

V5客服发表于:2019年11月28日 22:41:33更新于:2020年01月19日 17:45:19

平台对接

V5验证前后端对接流程如下图所示:

pic-notebook-1.jpg

对接V5验证分为业务网站后台对接以及业务前端代码引入两部分。


业务网站后台

  • 获取验证Token及验证服务器(getToken)

网站后台可以通过V5控制台定义刷新获取验证需要的Token。Token是网站向Verify5请求行为验证的重要凭证。

getToken请求时,如果Token的剩余过期时间小于5分钟,则生成并返回新的Token,否则返回当前Token及剩余时间。

生成新的Token时用户可以设置过期时间(expiredIn),旧Token将在新Token生成后10分钟后自动失效。

请求方式:GET

调用示例:

curl -X GET 'https://{host}/openapi/getToken?appid=dff58e0476e34b5899d4027733f8c14b&timestamp=1564220208945&signature=6c8e8e38d11dddb08d5b5a8fc750db68'

Request入参说明:


参数名 说明 示例
appid 当前网站应用对应的App Id dff58e0476e34b5899d4027733f8c14b
timestamp 当前提交时的Unix时间戳,即北京时间1970-1-1 0:0:0到现在经过的毫秒数 1564220208945
expiredIn 可选, 网站设置的新Token有效时长(ms) 86400000(24小时)
signature 当前提交时的签名。详细见签名规则 6c8e8e38d11dddb08d5b5a8fc750db68

Response返回格式:

{
    "success": true, //请求是否成功标识
    "data": {              //请求返回的消息体,详细以下列表说明
        "expiresIn": "86400000",
        "token": "e3e3d5d1aa4445e9bdde0bdb7eac37d6"
    }
}

返回参数说明:

参数名 说明 示例
token 返回当前有效的token e3e3d5d1aa4445e9bdde0bdb7eac37d6
expiresIn

token有效时

单位: 毫秒

86400000( 24小时)
  • 获取验证结果(verify)

在前端完成验证后,业务网站后台向V5验证服务器调用接口获取验证结果。验证结果最长保留5分钟,在业务网站后台成功获取结果后立即删除。

网站也可以向V5提交验证的业务数据,使V5的验证与业务建立关联,帮助网站进行数据分析。

请求方式:GET

调用示例:

curl -X GET 'https://{host}/openapi/verify?&verifyid=ee92ede662aa43c3a68c2a369fa19c70&token=644112d89ac54bac97cee06d42e2137c&timestamp=1564220208945&signature=6c8e8e38d11dddb08d5b5a8fc750db68'

Request入参说明:

参数名 说明 示例
host 验证节点域名 xxxx.verify5.com
verifyid 前端验证时返回的票据,由前端验证后返回 ee92ede662aa43c3a68c2a369fa19c70
token 当前有效的token 644112d89ac54bac97cee06d42e2137c
timestamp 当前提交时的Unix时间戳,即北京时间1970-1-1 0:0:0到现在经过的毫秒数 1564220208945
CUSTOM_[业务代码] 网站提供的业务数据,用户可以提交不超过5个自定义数据

如 CUSTOM_userId=233422,

CUSTOM_menu=order

signature 当前提交时的签名。详细见签名规则
注:host不参与签名
6c8e8e38d11dddb08d5b5a8fc750db68

Response返回格式:

{
    "success": true, //请求是否成功或失败标识,true/false
    "data":{
        "exceeded":false // 是否超出每日防护最大次数
    }
}


签名规则

签名生成方法如下:

  1. 对所有请求参数(包括公有参数和私有参数,但不包括 signature 参数),按照参数名ASCII码表升序顺序排序。如:foo=1f, bar=2B, foo_bar=3FB, baz=4baz 排序后的顺序是 bar=2B, baz=4baz, foo=1f, foobar=3FB。

  2. 将排序好的参数名和参数值构造成字符串,格式为:key1value1key2value2… 。根据上面的示例得到的构造结果为:bar2Bbaz4bazfoo1ffoobar3FB 。

  3. 选择与 appid 配对的 appkey ,加到上一步构造好的参数字符串之后,如 app=6308afb129ea00301bd7c79621d07591 ,则最后的参数字符串为:bar2Bbaz4bazfoo1ffoobar3FB6308afb129ea00301bd7c79621d07591。

  4. 把第3步拼装好的字符串采用 utf-8 编码,使用 MD5 算法对字符串进行摘要,计算得到 signature 参数值,将其加入到接口请求参数中即可。MD5 是128位长度的摘要算法,用16进制表示,一个十六进制的字符能表示4个位,所以签名后的字符串长度固定为32位十六进制字符(小写)。

签名生成示例代码(java):

/**
* 生成签名信息
* @paramappKey产品私钥
* @param params 接口请求参数名和参数值map,不包括signature参数名
* @return
*/
public static String genSignature(String appKey, Map
 params){
    // 1. 参数名按照ASCII码表升序排序
    String[] keys = params.keySet().toArray(new String[0]);
    Arrays.sort(keys);
    // 2. 按照排序拼接参数名与参数值
    StringBuilder sb = newStringBuilder();
    for (String key : keys) {
        sb.append(key).append(params.get(key));
    }
    // 3. 将secretKey拼接到最后
    sb.append(appKey);
    // 4. MD5是128位长度的摘要算法,转换为十六进制之后长度为32字符
    return DigestUtils.md5Hex(sb.toString().getBytes("UTF-8"));
}


更多资料


V5验证官网:
https://www.verify5.com/index

V5开发文档:
http://help.verify5.com/hc/kb/category/1033356/

V5微信小程序插件:
https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx357b9368f2c408c1

V5提交工单:
https://verify5.kf5.com/hc/request/new/

V5讨论社区:
http://help.verify5.com/hc/community/topic/

uni-app插件:
https://ext.dcloud.net.cn/plugin?id=890

Github示例工程:
https://github.com/verify5

npm仓库:
https://www.npmjs.com/~zimsoft


0015e1fda6adc35b5dba7388a2320e8


    您需要登录后才可以回复