在使用wx.serviceMarket.invokeService进行身份证识别时,在开发工具和android手机上一切正常,但是在ios手机上会报错,错误日志如下:
nvokeService fail Error: invokeService:fail operateWXData:fail data no response(err_code 0)
at eval (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:534470)
at eval (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:230341)
at Object.eval [as throw] (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:230446)
at o (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:229240)
at t (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:65618)
at eval (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:65740)
at e (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:68193)
at e.exports (eval at n.call.document (runtime.js?devtools_ignore=true:1), <anonymous>:2:27006)
参数类型使用的是base64,先拿到图片,然后转换成base64传参,核心代码:
wx.getFileSystemManager().readFile({
filePath: filePath, //选择图片返回的相对路径
encoding: 'base64', //编码格式
success: res => { //成功的回调
console.log('data:image/png;base64,' + res.data)
wx.showLoading({
title: '检验照片是否合法'
})
wx.serviceMarket.invokeService({
service: 'wx79ac3de8be320b71', // 'wx_mp_appid',
api: 'OcrAllInOne',
data: {
img_data: res.data,
data_type: 2,
ocr_type: 1
},
}).then(res => {
曾想到的解决方案:以为是ios手机图片过大导致的错误,于是把图片进行压缩,然后再把图片转换成base64上传,这时再用真机测试,发现android和ios都会报以上的错误。
小弟实在是束手无策了,烦请各位大哥大姐帮帮忙,万分感谢。