This commit is contained in:
2023-11-07 17:15:33 +08:00
commit fe37e2e1df
418 changed files with 53012 additions and 0 deletions
@@ -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;