概述

行为验证 C# SDK目前提供基于.net框架的demo。

开发环境

条目
兼容性 兼容多版本Visual stuidio, 但是建议使用VS2012+
依赖 .net

资源导航

条目
产品结构流程 通讯流程
SDK项目地址 gt3-dotnet-sdk

安装 C# SDK

下载SDK

使用命令从Github导入完整项目

git clone https://github.com/GeeTeam/gt3-dotnet-sdk.git

手动下载压缩包文件

Github: gt3-python-sdk下载.zip文件

引入SDK

使用VS打开项目中SDK的.sln文件即可引入SDK。

在您的项目中使用以下代码即可导入SDK

using GeetestSDK;

配置密钥,修改请求参数

配置密钥

极验管理后台获取您的公钥(id)和私钥(key), 并在代码中配置。配置文件路径如下:

/demo/GeetestConfig.cs

修改请求参数(可选)

名称 说明
user_id 用户标识,若担心用户信息风险,可作预处理(如哈希处理)再提供
client_type 客户端类型,web(pc浏览器),h5(手机浏览器,包括webview),native(原生app),unknown(未知)
ip_address 客户端请求您服务器的ip地址,unknnow表示未知

接口示例

初始化(API1),获取流水标识并设置状态码)

namespace demo
{
public partial class GetCaptcha : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/json";
Response.Write(getCaptcha());
Response.End();
}
private String getCaptcha()
{
GeetestLib geetest = new GeetestLib(GeetestConfig.publicKey, GeetestConfig.privateKey);
String userID = "test";
Byte gtServerStatus = geetest.preProcess(userID,"web","127.0.0.1");
Session[GeetestLib.gtServerStatusSessionKey] = gtServerStatus;
Session["userID"] = userID;
return geetest.getResponseStr();
}
}
}

注意:初始化结果标识status(status=1表示初始化成功,status=0表示宕机状态)需要用户保存,在后续二次验证时会取出并进行逻辑判断。本SDK demo中使用session来存取status。

二次验证(API2),包括正常流程和宕机情况

namespace demo
{
public partial class Validate : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void submitBtn_Click(object sender, EventArgs e)
{
GeetestLib geetest = new GeetestLib(GeetestConfig.publicKey, GeetestConfig.privateKey);
Byte gt_server_status_code = (Byte) Session[GeetestLib.gtServerStatusSessionKey];
String userID = (String) Session["userID"];
int result = 0;
String challenge = Request.Form.Get(GeetestLib.fnGeetestChallenge);
String validate = Request.Form.Get(GeetestLib.fnGeetestValidate);
String seccode = Request.Form.Get(GeetestLib.fnGeetestSeccode);

if (gt_server_status_code == 1)
result = geetest.enhencedValidateRequest(challenge, validate, seccode, userID);
else
result = geetest.failbackValidateRequest(challenge, validate, seccode);
if (result == 1)
Response.Write("<div id='sb'>success</div>");
else
Response.Write(" ");
}
}
}

注意:当取出status=0时表示极验宕机,此时流程进入failback模式,后续逻辑都是在您的服务器完成,不会再向极验服务器发送网络请求。本SDK demo中,对于failback模式,只对请求参数做了简单的校验,您也可以自行设计。

运行demo

右击解决方案资源管理器,右击demo,生成解决方案并运行。

在浏览器中访问http://localhost:2343/index.aspx即可看到demo界面。