阿里云的官方文档:https://help.aliyun.com/document_detail/122071.html?spm=a2c4g.11186623.6.565.40d726afynSQtu
官方提供了demo,我在这里直接写一下我的集成
首先引入阿里云js
<script src="https://g.alicdn.com/AWSC/AWSC/awsc.js"></script>
前端是jsp页面,部分代码如下
<!-- 验证 -->
<div id="_nc" style="margin-left:auto;margin-right:auto;width: 91%;height: 48px;padding-top: 24px; display: none">
<div id="nc"></div>
</div>
<!-- 验证 -->
<div class="iformbtnd mainmlr mrbtm"><a class="btna" id="btna" href="javascript:;">查询</a></div>
然后是js代码
var btn = document.getElementById("btna");
AWSC.use("nvc", function (state, module) {
// 初始化 调用module.init进行初始化
window.nvc = module.init({
appkey: "CF_APP_1", // 大家根据自己真实的填写
scene: "nvc_register",// 大家根据自己真实的填写
success: function (data) {
window.console && console.log(data)
findParking(data);
},
fail: function (failCode) {
window.console && console.log(failCode)
},
error: function (errorCode) {
window.console && console.log(errorCode)
}
});
// 绑定事件
btn.onclick = onclick;
});
// 发送业务请求:点击按钮时触发,主动获取人机信息串,并发送给业务服务端
function onclick() {
window.nvc.getNVCValAsync(function (nvcVal) {
findParking(nvcVal);
});
}
function yourRegisterRequest(data) {
if (data.code === "100" || data.code === "200") {
// alert("register success!")
} else if (data.code === "800" || data.code === "900") {
// alert("重新刷新页面!")
} else if (data.code === "400") {
// 二次验证
$("#_nc").show();
var ncoption = {
renderTo: "nc",
}
window.nvc.getNC(ncoption);
}
}
// 查询车辆信息
function findParking (nvcVal){
// 得到车牌号码
var plateNum=getPlateipDIDVal();
$.tenetAjax({
url: PATH + "/punitWS/findParkingCarInfoByPlate",
data: {"data":nvcVal, "plateNum":encodeURIComponent(plateNum)},
async: false,
success: function(data){
yourRegisterRequest(data);
}
});
}
前端代码集成完毕,以下是后台集成,首先下载sdk,引入jar文件(点击下载)。
String data;
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
/**
* 根据车牌号码查询在场车辆信息--无痕验证
*
* @return
*/
public String findParkingCarInfoByPlate() {
if (StringUtils.isEmpty(data)) {
this.setPass(false);
this.setMsg("请求失败,请刷新重试");
return SUCCESS;
}
// 调用阿里云API接口所需参数
String regionid = "regionid ";
String accessKeyId = "accessKeyId ";
String accessKeySecret = "accessKeySecret ";
IClientProfile profile = DefaultProfile.getProfile(regionid, accessKeyId, accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
try {
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");
} catch (ClientException e) {
}
AnalyzeNvcRequest request = new AnalyzeNvcRequest();
request.setData(data);// 必填参数,由前端获取getNVCVal方法获得的值。
// 通过setScoreJsonStr方法声明"服务端调用人机验证服务接口得到的返回结果"与"前端执行操作"间的映射关系,并通知验证码服务端进行二次验证授权。
// 注意:前端页面必须严格按照该映射关系执行相应操作,否则将导致调用异常。
// 例如,在setScoreJsonStr方法中声明"400":"NC",则当服务端返回400时,您的前端必须唤醒滑动验证(NC),如果唤醒其他验证,则将导致失败。
request.setScoreJsonStr("{\"200\":\"PASS\",\"400\":\"NC\",\"800\":\"BLOCK\"}");// 根据业务需求设置各返回结果对应的客户端处置方式。
try {
AnalyzeNvcResponse response = client.getAcsResponse(request);
code = response.getBizCode();
} catch (Exception e) {
e.printStackTrace();
}
if (!StringUtils.isEmpty(code) && (code.equals("200") || code.equals("100"))) {
punitMap = this.toMap(wxService.findParkingCarInfoByPlate(plateNum));
}
return SUCCESS;
}