微信小程式身份證識別

蓬鹏發表於2024-09-18

微信小程式專案中使用者註冊到了證件識別,獲取身份證號碼和姓名等,一開始想直接有第三方的證件識別,後面發現微信就有自帶的證件識別,免費一天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是比較私密和關鍵的,所以不會放在前端暴露。建議放後端返回。

相關文章