# gt-wxminiapp-demo
**Repository Path**: frank.chan/gt-wxminiapp-demo
## Basic Information
- **Project Name**: gt-wxminiapp-demo
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-02-13
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 极验小程序插件接入指南
---
#### 搜索申请:
1. 首先在小程序管理后台的"设置-第三方服务-插件管理"中添加插件,通过AppID查找所需的插件,等待极验通过申请。
2. 在项目app.json文件中声明所需要使用的插件 (最低可使用版本为1.0.9,为使体验最佳,请及时更新到最高版本)
```
{
"plugins": {
"myPlugin": {
"version": "1.1.5",
"provider": "wxxxxxxxxxxxxxxxxx"
}
}
}
```
3. 在页面配置文件中(.json)使用我们的captcha插件
```
{
"usingComponents": {
"captcha": "plugin://myPlugin/captcha"
}
}
```
4. 页面wxml中插入captcha
```
```
5. onLoad时期在页面初始化插件,this.setData中为必传参数
```
onLoad: function() {
wx.request({
url: "API1接口(详见服务端部署)",
type: "get",
dataType: "json",
success: function (data) {
that.setData({ loadCaptcha:true,gt: res.data.gt, challenge: res.data.challenge, offline: !res.data.success})
}
})
}
```
6. 使用极验提供的onSuccess获取验证结果,准备二次验证
```
captchaSuccess:function(result){
console.log("captcha-Success!");
this.setData({
result: result.detail
})
},
```
7. 二次验证
```
btnSubmit: function(){
var that = this;
var data = that.data.result;
if(typeof data !== 'object'){
console.log("请先完成验证!")
return
}
wx.request({
url: "API2接口(详见服务端部署)",
method: 'POST',
dataType: 'json',
data: {
geetest_challenge: data.geetest_challenge,
geetest_validate: data.geetest_validate,
geetest_seccode: data.geetest_seccode
},
success: function (res) {
wx.showToast({
title: res.data.status
})
},
fail: function () {
console.log('error')
}
})
}
```
#### 提供的api接口
* onReady 监听验证按钮的 DOM 生成完毕事件,用户可点击
* onSuccess 监听验证成功事件,参数为验证结果(用于二次验证)
* onError 监听验证出错事件
* onClose 插件关闭时
* toReset 用户主动调用,对二次验证的情况去重置验证码
```
// 调用toReset接口需要在模版中多加一个属性
// js
data:{
styleConfig: {
color: '#00aa90', // 必须是完整的6位
btnWidth: '210px' // minwidth: 210px, maxwidth:320px
}
}
```
### 多语言国际化支持
使用方式为在组件传参,不传默认为中文
```
// wxml
```
* zh-cn默认 中文
* zh-tw 繁体中文
* en 英文
* ja 日文
* id 印尼
#### Tips&Bug
* toReset 由于小程序的限制,实际无法直接去调用插件内部组件的方法,这里是hack的方式,通过改变组件的公有属性(properties),触发observer调用内部方法
* captcha插件的父容器大小会影响插件的显示,请参照demo设置一个合适的大小
* 为了防止challenge9分钟过期无法reset,需要在error中对code:21,tips:not proof做一个监控,以便重置插件
* 安卓下滑动模式进行滑动时可能会有卡顿
#### 帮助
| 问题 | 参考解答|
| :------ | :----- |
| 小程序插件支持web的无按钮bind模式吗?| 不支持,由于微信小程序插件对于安全方面的限制,致使外部无法调用插件内方法。|
| 大图模式支持哪几种验证形式?如何使用? | click、icon、phrase、space、nine。极验后台申请相应id即可|
| 插件放置时间过长或者出错了怎么办? | 在onError做监听,reset验证插件 |
| 服务端接口如何部署与使用? | 参考pc端的部署方式,详细见官网文档https://docs.geetest.com/install/deploy/server/csharp|