极验提供标准的server接口拼接方法,同时提供各版本语言的demo示例。
/gt_verify
该接口用于业务方服务器查询极验模型识别的结果,接口地址为:api.geetest.com/gt_verify
传入参数
参数名称 |
是否必须 |
类型 |
描述 |
idType |
必传 |
int |
用户标识符的类型:1:手机号,2:邮箱,3:昵称4:UID,用户站内编号0:其他 |
idValue |
必传 |
string |
idType 对应的值 |
seccode |
必传 |
string |
私钥+challenge md5的签名 |
challenge |
必传 |
string |
查询结果的凭证, 极验会在客户端的请求中返回该参数。 |
user_ip |
必传 |
string |
用户真实访问网站的ip |
timestamp |
必传 |
int |
用户发起对应事件交互行为时的时间戳 |
注意:
challenge
是极验返回给客户端的流水号,需要你的客户端传回。
seccode
是 私钥+challenge
整体md5的字符串。
私钥
是在极验管理后台创建部署id时自动生成的密钥,目前为了方便部署,不同id对应的key是统一的,表明server端可以使用一个接口处理不同id过来的请求。
返回参数
极验返回的参数为JSON格式:
参数名称 |
是否必须 |
类型 |
描述 |
status |
必传 |
string |
接口请求的状态是否成功:”success” / “error”/“crash” |
captcha |
必传 |
string |
说明模型判断的流程是否正常 |
risk_code |
必传 |
list |
风险码(可能会有多个) |
risk_level |
必传 |
int |
风险等级(只返回最高风险等级) |
注意:
因业务方需求不同,验证和风险标识依据对应的id设置返回。
- 只有一次流水正常的完成,
status
才会返回success
,否则status
会返回error
,具体异常原因请参考api文档–> server错误码;
- 如果请求流程正常,所有字段均会返回;
- 如果账户到期,或者权限异常,所有字段也均会返回统一值”0”。
demo
完整demo下载
极验提供完整的demo部署示例:
- Java示例demo下载
- Python示例demo下载
- Node示例demo下载
java demo
String challenge = request.getParameter("challenge"); String userName = request.getParameter("username");
Date date = new Date(); long timestamp = date.getTime()/1000; String privateKey = "4f1c085290bec5afdc54df73535fc361"; String seccode = ""; try { seccode = getMD5(privateKey + challenge); } catch (Exception e) { e.printStackTrace(); }
HashMap<String, Object> params = new HashMap<>(); params.put("seccode", seccode); params.put("idType", 1); params.put("idValue", userName); params.put("challenge", challenge); params.put("user_ip", "1.2.3.4"); params.put("timestamp", "" + timestamp); post(params);
|
php demo
<?php $challenge = $_POST['challenge']; $username = $_POST['username']; $privateKey = "4f1c085290bec5afdc54df73535fc361"; $seccode = md5($privateKey . $challenge); $data = array( "idType"=>1, # 用户标识符的类型:1:手机号2:邮箱3:昵称4:UID,用户站内编号0:其他 "idValue"=>$username, # string idType 对应的值 "seccode"=>$seccode, # 必传 string 私钥+challenge md5的签名 "challenge"=>$challenge, # 必传 string 查询结果的凭证, 从前一个接口返回 "user_ip"=>"127.0.0.1", # 必传 string 用户真实访问网站的ip "timestamp"=>(int)time() # 必传 int 用户发起对应事件交互行为时的时间戳 ); // var_dump($data); $data = http_build_query($data); $url = "http://api.geetest.com/gt_verify"; $opts = array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n", 'content' => $data, 'timeout' => 2 ) ); $context = stream_context_create($opts); $res = file_get_contents($url, false, $context); echo $res; ?>
|
极验提供标准的server接口拼接方法,同时提供各版本语言的demo示例。
/gt_verify
该接口用于业务方服务器查询极验模型识别的结果,接口地址为:api.geetest.com/gt_verify
传入参数
参数名称 |
是否必须 |
类型 |
描述 |
idType |
必传 |
int |
用户标识符的类型:1:手机号,2:邮箱,3:昵称4:UID,用户站内编号0:其他 |
idValue |
必传 |
string |
idType 对应的值 |
seccode |
必传 |
string |
私钥+challenge md5的签名 |
challenge |
必传 |
string |
查询结果的凭证, 极验会在客户端的请求中返回该参数。 |
user_ip |
必传 |
string |
用户真实访问网站的ip |
timestamp |
必传 |
int |
用户发起对应事件交互行为时的时间戳 |
注意:
challenge
是极验返回给客户端的流水号,需要你的客户端传回。
seccode
是 私钥+challenge
整体md5的字符串。
私钥
是在极验管理后台创建部署id时自动生成的密钥,目前为了方便部署,不同id对应的key是统一的,表明server端可以使用一个接口处理不同id过来的请求。
返回参数
极验返回的参数为JSON格式:
参数名称 |
是否必须 |
类型 |
描述 |
status |
必传 |
string |
接口请求的状态是否成功:”success” / “error”/“crash” |
captcha |
必传 |
string |
说明模型判断的流程是否正常 |
risk_code |
必传 |
list |
风险码(可能会有多个) |
risk_level |
必传 |
int |
风险等级(只返回最高风险等级) |
注意:
因业务方需求不同,验证和风险标识依据对应的id设置返回。
- 只有一次流水正常的完成,
status
才会返回success
,否则status
会返回error
,具体异常原因请参考api文档–> server错误码;
- 如果请求流程正常,所有字段均会返回;
- 如果账户到期,或者权限异常,所有字段也均会返回统一值”0”。
demo
完整demo下载
极验提供完整的demo部署示例:
- Java示例demo下载
- Python示例demo下载
- Node示例demo下载
java demo
String challenge = request.getParameter("challenge"); String userName = request.getParameter("username");
Date date = new Date(); long timestamp = date.getTime()/1000; String privateKey = "4f1c085290bec5afdc54df73535fc361"; String seccode = ""; try { seccode = getMD5(privateKey + challenge); } catch (Exception e) { e.printStackTrace(); }
HashMap<String, Object> params = new HashMap<>(); params.put("seccode", seccode); params.put("idType", 1); params.put("idValue", userName); params.put("challenge", challenge); params.put("user_ip", "1.2.3.4"); params.put("timestamp", "" + timestamp); post(params);
|
php demo
<?php $challenge = $_POST['challenge']; $username = $_POST['username']; $privateKey = "4f1c085290bec5afdc54df73535fc361"; $seccode = md5($privateKey . $challenge); $data = array( "idType"=>1, # 用户标识符的类型:1:手机号2:邮箱3:昵称4:UID,用户站内编号0:其他 "idValue"=>$username, # string idType 对应的值 "seccode"=>$seccode, # 必传 string 私钥+challenge md5的签名 "challenge"=>$challenge, # 必传 string 查询结果的凭证, 从前一个接口返回 "user_ip"=>"127.0.0.1", # 必传 string 用户真实访问网站的ip "timestamp"=>(int)time() # 必传 int 用户发起对应事件交互行为时的时间戳 ); // var_dump($data); $data = http_build_query($data); $url = "http://api.geetest.com/gt_verify"; $opts = array( 'http' => array( 'method' => 'POST', 'header' => "Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n", 'content' => $data, 'timeout' => 2 ) ); $context = stream_context_create($opts); $res = file_get_contents($url, false, $context); echo $res; ?>
|