实现步骤如下 :
1. 首先要在微信的 app.json 下面配置允许访问相机
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序位置接口的效果展示"
},
"scope.camera": {
"desc": "你的相机权限将用于扫码和拍照"
}
},
2. index.wxml
<view>
<button bindtap='chooseImageOrPhotograph'>
扫身份证
</button>
</view>
3. index.ts
chooseImageOrPhotograph() {
const that = this
wx.chooseImage({
count: 1,
// sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
// sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(e) {
console.log(e.tempFilePaths[0])
that.setData({
imageSrc: e.tempFilePaths[0]
})
wx.request({
url: "https://api.weixin.qq.com/cgi-bin/token",
data: {
grant_type: "client_credential",
appid: "wxe65af8ece0b29ec7",
secret: "855bda7dce3638d769a2140914dc1967"
},
success(res: any) {
console.error("res", res)
const access_token = res.data.access_token
wx.uploadFile({
url: `https://api.weixin.qq.com/cv/ocr/idcard?access_token=${access_token}`,
filePath: that.data.imageSrc,
name: 'img',
success(uploadRes) {
console.error("uploadRes", uploadRes)
const data = JSON.parse(uploadRes.data)
console.error("data 返回的身份数据", data)
if (data.errcode === 0) {
console.error("调用成功 返回 可以在这个里面处理你想要处理的逻辑")
} else if (data.errcode === 45002) {
messageTip('none', '图片大小超出限制')
} else if (data.errcode === 101001) {
messageTip('none', '未正确识别身份证')
} else {
console.error("data.erroMsg", data.errmsg)
messageTip('none', data.errmsg)
}
},
fail(uploadErr) {
console.error("upload failed", uploadErr)
}
})
},
fail(tokenErr) {
console.error("Token request failed", tokenErr);
}
})
},
fail(err) {
console.error("Choose image failed", err);
}
})
},