业务请求流程
验证码请求流程涉及业务客户端(前端)、业务服务端(后端)、验证码服务端三端交互。调用时序图如下:
为保障验证码服务端异常时不阻塞客户正常业务流程,提供验证码业务容灾方案如下。
注意:
容灾方案中生成的所有容灾票据,在请求后端票据校验时,均不会产生计费。
业务客户端(前端)容灾
1. 定义 JS 加载错误处理函数。
function loadErrorCallback() {
var appid = 'CaptchaAppId';
var ticket = 'terror_1001_' + appid + '_' + Math.floor(new Date().getTime() / 1000);
callback({
ret: 0,
randstr: '@'+ Math.random().toString(36).substr(2),
ticket,
errorCode: 1001,
errorMessage: 'jsload_error',
});
}
2. 调用验证码实例 catch 到错误时,调用 JS 加载错误处理函数。
try {
var captcha = new TencentCaptcha(document.getElementById('cap_iframe'), '你的验证码CaptchaAppId', callback, {});
captcha.show();
} catch (error) {
loadErrorCallback();
}
3. 定义验证码 callback 回调函数时,根据 ticket 和 errorCode (而非 ret)的情况做处理。errorCode 的定义参考文档 Web 前端接入 。 function callback(res) {
if (res.ticket){
if(res.errorCode === xxxxx){
}
}
}
业务服务端(后端)容灾
当请求验证码票据校验接口发生异常时,客户服务端需做出相应的业务异常处理(例如跳过这次验证),保证不会因为接口返回结构异常,请求超时或服务未响应而阻碍业务流程。如下为几种异常返回的情况,需要客户侧进行容灾。
请求超时或服务未响应。
返回异常,Code为InternalError,接口返回举例如下:
{
"Response": {
"Error": {
"Code": "InternalError",
"Message": "An internal error has occurred. Retry your request, but if the problem persists, contact us."
},
"RequestId": "xxxxxxxxxxx"
}
}
服务内部错误,CaptchaCode 为26,接口返回举例如下:
{
"Response": {
"CaptchaCode": 26,
"CaptchaMsg": "system busy 详情请参考:腾讯云-天御验证码-产品文档,搜索关键字“DescribeCaptchaResult”,查看输出参数中CaptchaCode字段的具体描述",
"EvilLevel": 0,
"GetCaptchaTime": 0,
"RequestId": "xxxxxxxxxxx"
},
"retcode": 0,
"retmsg": "ok"
}
更多信息
您可以登录 验证码控制台,在页面右上角单击快速咨询,了解更多详细信息。
本页内容是否解决了您的问题?