# 滑塊驗證碼
## 接入說明
### 步驟1:動態引入驗證碼 JS
Web 頁面需動態引入驗證碼 JS,在業務需要驗證時,喚起驗證碼進行驗證。
```
<!-- 動態引入驗證碼JS示例 -->
<script src="http://libs.kis6.com/js/capter/stable.js"></script>
```
>[info] 注意:必須動態引入驗證碼 JS。如使用本地緩存,或通過其他手段規避動態加載,會導致驗證碼無法正常更新,對抗能力無法保證,甚至引起誤攔截。
### 步驟2:設置發起驗證碼的按鈕ID
```
<!--不可修改按鈕id-->
<button id="CaptchaId" type="button" class="btn btn-primary">發起驗證按鈕</button>
```
### 步驟3:在回調函數中發起后端驗證
~~~
<script src="http://libs.kis6.com/js/jquery/1.8.3.min.js"></script>
<script>
// 定義回調函數
function callback(res) {
// 第一個參數傳入回調結果,結果如下:
// ret Int 驗證結果,0:驗證成功。2:用戶主動關閉驗證碼。
// ticket String 驗證成功的票據,當且僅當 ret = 0 時 ticket 有值。
// randstr String 本次驗證的隨機串,后續票據校驗時需傳遞該參數。
console.log('callback:', res);
// res(用戶主動關閉驗證碼)= {ret: 2, ticket: null}
// res(驗證成功) = {ret: 0, ticket: "String", randstr: "String"}
// res(請求驗證碼發生錯誤) = {ret: 0, ticket: "String", randstr: "String", errorCode: Number, errorMessage: "String"}
// 此處代碼僅為驗證結果的展示示例,真實業務接入,建議基于ticket和errorCode情況做不同的業務處理
if (res.ret === 0) {
// 復制結果至剪切板
var str = '【randstr】->【' + res.randstr + '】 【ticket】->【' + res.ticket + '】';
var ipt = document.createElement('input');
ipt.value = str;
document.body.appendChild(ipt);
ipt.select();
document.execCommand("Copy");
document.body.removeChild(ipt);
alert('1. 返回結果(randstr、ticket)已復制到剪切板,ctrl+v 查看。\n2. 打開瀏覽器控制臺,查看完整返回結果。');
if($('#appcode').val().length!=32){
alert('APPCODE不正確,請重新輸入');
return false;
}
//前端用戶滑動成功,傳入后端進行安全驗證
$.ajax({
type: "GET",
url:"http://capter.market.alicloudapi.com/",
dataType: "json",
data: {"Randstr":res.randstr,"Ticket":res.ticket},//接口的參數
headers : {'Authorization':'APPCODE '+$('#appcode').val() },
success: function(data){
//獲取到數據,打印到控制臺
console.log(data);
if(data.response===1){
alert('后端驗證成功');
}else{
alert('后端驗證失敗,原因為:'+data.err_msg);
}
},
error: function(data){ console.log(data); } ,
});
}
}
</script>
~~~
## 代碼示例
以下代碼示例,單擊**驗證**,激活驗證碼,并彈窗展示驗證結果。
```
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>滑動驗證碼前端接入示例</title>
<link rel="stylesheet" href="http://libs.kis6.com/css/bootstrap/3.3.4.min.css">
<!--核心js必須頭部加載-->
<script src="http://libs.kis6.com/js/capter/stable.js"></script>
</head>
<body>
<div class="container" style="margin-top:9%;">
<div class="jumbotron">
<div class="panel panel-success">
<div class="panel-heading">
<h2>滑動驗證碼前端接入示例</h2>
<p>可直接使用本頁源代碼</p>
<p>
填入appcode<input name="appcode" id="appcode" type="text" style="min-width:320px;" class=input>
<a href="https://market.aliyun.com/products/57124001/cmapi00056930.html" target="_blank">如何獲取?</a>
</p>
<!--不可修改按鈕id-->
<button id="CaptchaId" type="button" class="btn btn-primary">發起驗證按鈕</button>
<p id="output" name="Word" ></p>
</div>
</div>
</body>
<script src="http://libs.kis6.com/js/jquery/1.8.3.min.js"></script>
<script>
// 定義回調函數
function callback(res) {
// 第一個參數傳入回調結果,結果如下:
// ret Int 驗證結果,0:驗證成功。2:用戶主動關閉驗證碼。
// ticket String 驗證成功的票據,當且僅當 ret = 0 時 ticket 有值。
// randstr String 本次驗證的隨機串,后續票據校驗時需傳遞該參數。
console.log('callback:', res);
// res(用戶主動關閉驗證碼)= {ret: 2, ticket: null}
// res(驗證成功) = {ret: 0, ticket: "String", randstr: "String"}
// res(請求驗證碼發生錯誤) = {ret: 0, ticket: "String", randstr: "String", errorCode: Number, errorMessage: "String"}
// 此處代碼僅為驗證結果的展示示例,真實業務接入,建議基于ticket和errorCode情況做不同的業務處理
if (res.ret === 0) {
// 復制結果至剪切板
var str = '【randstr】->【' + res.randstr + '】 【ticket】->【' + res.ticket + '】';
var ipt = document.createElement('input');
ipt.value = str;
document.body.appendChild(ipt);
ipt.select();
document.execCommand("Copy");
document.body.removeChild(ipt);
alert('1. 返回結果(randstr、ticket)已復制到剪切板,ctrl+v 查看。\n2. 打開瀏覽器控制臺,查看完整返回結果。');
if($('#appcode').val().length!=32){
alert('APPCODE不正確,請重新輸入');
return false;
}
//前端用戶滑動成功,傳入后端進行安全驗證
$.ajax({
type: "GET",
url:"http://capter.market.alicloudapi.com/",
dataType: "json",
data: {"Randstr":res.randstr,"Ticket":res.ticket},//接口的參數
headers : {'Authorization':'APPCODE '+$('#appcode').val() },
success: function(data){
//獲取到數據,打印到控制臺
console.log(data);
if(data.response===1){
alert('后端驗證成功');
}else{
alert('后端驗證失敗,原因為:'+data.err_msg);
}
},
error: function(data){ console.log(data); } ,
});
}
}
</script>
</html>
```
- API無憂介紹
- 短信驗證碼接口
- 簽名模板審核標準
- 短信簽名審核規則
- 短信模板審核規則
- 普通短信
- 營銷短信
- 申請簽名的常見問題
- 接口說明
- 單發接口
- 群發接口
- 無參數單發接口
- 代碼示例
- 【測試推薦】純前端ajax代碼
- Python代碼示例
- php代碼示例
- java代碼示例
- curl代碼示例
- ObjectC代碼示例
- C#代碼示例
- 錯誤碼
- 常用模板
- 返回說明
- 頻率限制
- 國際短信價格表
- 在阿里云市場購買的短信接口說明
- 短信調用demo(ajax版)
- 前端代碼
- ajaxsms.php
- php post示例代碼
- 短信計費說明
- 阿里云市場說明
- 阿里云調用次數的說明
- 阿里云市場GET/POST方法
- php版本
- java版本
- python3版本
- ajax版本
- 阿里云店鋪
- 身份證識別接口
- 身份證識別購買說明
- 身份證識別接口請求說明
- 簡道云集成身份證識別接口
- 基金數據接口
- 當前數據查詢
- 歷史數據查詢
- 基金接口存檔
- 金融數據接口
- 產品說明
- 產品代碼表
- 股票代碼
- 股指代碼
- 股指期貨代碼
- 數字貨幣代碼
- 外匯代碼
- 國內期貨代碼
- 國際期貨代碼
- v1產品留檔
- ETF代碼表
- 大宗商品代碼表
- 股指期貨代碼表
- 債券代碼表
- 股指代碼表
- 數字貨幣數據
- 外匯代碼表
- 貴金屬代碼表
- 金融數據圖表代碼下載
- 金融數據返回結果說明
- 金融數據調用代碼(java)
- 金融數據調用代碼(php)
- V2產品留檔
- V3外匯高頻
- 在線調試
- 金融數據報價查詢
- 下線接口留檔
- 新獨立數據平臺
- 報價real
- 分筆tick
- 分時trend
- K線kline
- 資料info
- 個股資料
- 股東資料
- 財務信息
- 所屬板塊
- 資金流fundflow
- 排序sort
- 各市場排序
- 指數排序
- 資金流排序
- 板塊列表排序
- 板塊內個股排序
- 檢索search
- 新聞news
- 新聞列表
- 新聞詳情
- 高速多產品查詢
- 港美股數據接口
- 報價查詢
- 分時圖查詢
- 舊股票數據接口(已下線)
- 股票接口說明
- 實時數據
- K線數據
- 分時數據
- 5日分時
- F10數據查詢
- 公司概況
- 行情_排序
- 滬深股票列表
- 香港股票列表
- 美國股票列表
- 板塊查詢說明
- 期貨列表查詢
- 行情_分筆
- 板塊_關系
- 查詢_除息除權
- 新股日歷
- 滬深資訊簡報
- 股票代碼說明
- 股票常見問題
- 交易狀態
- 股票demo說明
- 支持外匯品種
- 支持期貨品種
- 財經日歷
- 快遞查詢接口
- 快遞公司代碼表
- 快遞查詢代碼(php)
- 快遞查詢返回結果
- 圖形驗證碼識別接口
- 滑塊驗證碼