1107
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
/**
|
||||
* 百度API
|
||||
*/
|
||||
var baidu = {};
|
||||
var vk = {};
|
||||
var baiduOpenApiAccessTokenCacheName = "vk_openapi_baidu_open_token";
|
||||
baidu.init = function(util={}) {
|
||||
vk = util.vk;
|
||||
};
|
||||
|
||||
// 百度开放平台api
|
||||
baidu.open = {};
|
||||
// 文字识别
|
||||
baidu.open.ocr = {};
|
||||
|
||||
/**
|
||||
* 营业执照识别
|
||||
* 以下data参数三选一即可
|
||||
* @param {File} file 文件对象
|
||||
* @param {String} image 图像base64编码后进行urlencode
|
||||
* @param {String} url 图片完整URL
|
||||
*
|
||||
vk.openapi.baidu.open.ocr.business_license({
|
||||
title:"识别中...",
|
||||
data: {
|
||||
file: res.tempFiles[0]
|
||||
},
|
||||
success: (res) => {
|
||||
that.data = res.data;
|
||||
},
|
||||
});
|
||||
*/
|
||||
baidu.open.ocr.business_license = function(obj={}){
|
||||
obj.action = "ocr/v1/business_license";
|
||||
let file = obj.data.file;
|
||||
if(file){
|
||||
vk.pubfn.fileToBase64({ file }).then(base64 => {
|
||||
obj.data.image = base64;
|
||||
delete obj.data.file;
|
||||
baidu.request(obj);
|
||||
});
|
||||
}else{
|
||||
baidu.request(obj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 身份证识别
|
||||
* 以下data参数三选一即可
|
||||
* @param {File} file 文件对象
|
||||
* @param {String} image 图像base64编码后进行urlencode
|
||||
* @param {String} url 图片完整URL
|
||||
vk.openapi.baidu.open.ocr.idcard({
|
||||
title:"识别中...",
|
||||
data: {
|
||||
image:base64,
|
||||
id_card_side:"front", // front:身份证含照片的一面 back:身份证带国徽的一面
|
||||
},
|
||||
success: (res) => {
|
||||
that.data = res.data;
|
||||
},
|
||||
});
|
||||
*/
|
||||
baidu.open.ocr.idcard = function(obj={}){
|
||||
obj.action = "ocr/v1/idcard";
|
||||
let file = obj.data.file;
|
||||
if(!obj.data.id_card_side) obj.data.id_card_side = "front";
|
||||
if(file){
|
||||
vk.pubfn.fileToBase64({ file }).then(base64 => {
|
||||
obj.data.image = base64;
|
||||
delete obj.data.file;
|
||||
baidu.request(obj);
|
||||
});
|
||||
}else{
|
||||
baidu.request(obj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 百度开放平台通用请求接口
|
||||
* @param {String} action 接口名称
|
||||
* @param {String} actionVersion 接口版本名称 默认2.0
|
||||
* @param {String} title loading文字
|
||||
* @param {object} data 请求参数
|
||||
* @param {String} success 成功回调
|
||||
* @param {String} fail 失败回调
|
||||
* @param {String} complete 完成回调
|
||||
* 使用示例
|
||||
vk.openapi.baidu.request({
|
||||
action: 'ocr/v1/business_license',
|
||||
title:"识别中...",
|
||||
data: {
|
||||
image:base64
|
||||
},
|
||||
success: (data) => {
|
||||
that.data = data;
|
||||
},
|
||||
});
|
||||
*/
|
||||
baidu.request = function(obj={}){
|
||||
let {
|
||||
title
|
||||
} = obj;
|
||||
if(title) vk.showLoading(title);
|
||||
let baiduApiAccessToken = vk.getStorageSync(baiduOpenApiAccessTokenCacheName);
|
||||
if(baiduApiAccessToken && baiduApiAccessToken.expTime > new Date().getTime()){
|
||||
// 获取缓存中的token
|
||||
obj.accessToken = baiduApiAccessToken.accessToken;
|
||||
request(obj);
|
||||
}else{
|
||||
// 发起请求获取token
|
||||
vk.callFunction({
|
||||
url: 'plugs/baidu/client/pub/getAccessToken',
|
||||
success:function(tokenRes) {
|
||||
vk.setStorageSync(baiduOpenApiAccessTokenCacheName,{
|
||||
accessToken : tokenRes.access_token,
|
||||
expTime : 2590000000 + new Date().getTime(),
|
||||
});
|
||||
obj.accessToken = tokenRes.access_token;
|
||||
request(obj);
|
||||
},
|
||||
fail:function(res){
|
||||
if(title) vk.hideLoading();
|
||||
if(typeof obj.fail === "function") obj.fail(res);
|
||||
if(typeof obj.complete === "function") obj.complete(res);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function request(obj={}){
|
||||
let {
|
||||
action,
|
||||
actionVersion = "2.0",
|
||||
accessToken,
|
||||
header = { "content-type": "application/x-www-form-urlencoded" },
|
||||
data,
|
||||
title
|
||||
} = obj;
|
||||
vk.request({
|
||||
url: `https://aip.baidubce.com/rest/${actionVersion}/${action}?access_token=${accessToken}`,
|
||||
method:"POST",
|
||||
header:{
|
||||
"content-type": "application/x-www-form-urlencoded",
|
||||
},
|
||||
errorCodeName:"error_code",
|
||||
errorMsgName:"error_msg",
|
||||
data,
|
||||
needAlert:true,
|
||||
success: function(data){
|
||||
if(title) vk.hideLoading();
|
||||
if(data.code){
|
||||
if(typeof obj.fail === "function") obj.fail(data);
|
||||
}else{
|
||||
if(typeof obj.success === "function") obj.success(data);
|
||||
}
|
||||
},
|
||||
fail: function(data){
|
||||
if(title) vk.hideLoading();
|
||||
// 如果是因为token失效报的错误,则清空下本地token缓存
|
||||
if(data && data.code === 110) vk.removeStorageSync(baiduOpenApiAccessTokenCacheName);
|
||||
if(typeof obj.fail === "function") obj.fail(data);
|
||||
},
|
||||
complete: function(data){
|
||||
if(typeof obj.complete === "function") obj.complete(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
export default baidu;
|
||||
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* 开放API
|
||||
*/
|
||||
import baidu from './baidu'
|
||||
|
||||
var openapi = {};
|
||||
openapi.baidu = baidu;
|
||||
openapi.init = function(util){
|
||||
openapi.baidu.init(util);
|
||||
}
|
||||
// 微信小程序API
|
||||
export default openapi;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user