微信小程式專案中使用者註冊到了證件識別,獲取身份證號碼和姓名等,一開始想直接有第三方的證件識別,後面發現微信就有自帶的證件識別,免費一天100次(免費使用的也必須0元購買),註冊使用者沒有那麼頻繁使用,已經足夠,就研究了一番。
邏輯如下,先用小程式的appId和APP_SECRET獲取accesstoken,然後再用accesstoken和證件圖片獲取證件資訊。
wx.request({ url: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${APP_SECRET}`, success: (res) => { console.log('access_token') uni.setStorage({ key: "accesstoken", data: res.data.access_token }) console.log(res); console.log(cadeex); } })
// 微信小程式的證件識別呼叫事件方法,上傳圖片到微信伺服器/線上後不能直接在前端直接上傳到微信伺服器 async upload(FilePath) { return new Promise((resolve, reject) => { wx.uploadFile({ url: "https://api.weixin.qq.com/cv/ocr/idcard?access_token="+this.accesstoken+"", header: { 'content-type': 'application/json; encoding=utf-8' }, filePath: FilePath, name: 'file', success: (res) => { var data = JSON.parse(res.data) resolve(data) } }) }) },
返回的json
{ "errcode": 0, "errmsg": "ok", "type": "Front", "name": "蘇海峰", "id": "341181198809150011", "addr": "安徽省天長市千秋新村三巷10號", "gender": "男", "nationality": "漢", "birth": "1988-09-15", "card_property": 1 }
注意:微信小程式的APP_SECRET是比較私密和關鍵的,所以不會放在前端暴露。建議放後端返回。