对微一个微信扫码识别图书的几个知识及解决办法!
2022-12-10 08:00:15 欢乐点

前言,近期对微信云开发来了兴趣,上手一个微信扫码识别图书,并上传保存到云数据库中微信扫码点单,涉及到以下几个方面的知识:小程序注册账号、小程序扫码API的使用、小程序云开发等

注册小程序账号

首先,通过手机号或邮箱注册一个小程序账号,拿到AppID,开通云开发权限,需要注意的是每⼀个⼩程序/公众号/⼩游戏都需要⼀个email,同⼀个⼿机号只能注册5个,同⼀个身份证也只能注册5个

云开发实战扫码识别图书

1、使用小程序API-wx.()方法扫码图书背面的条形码获得版号ISBN

wx.scanCode({
    success: (res)=>{
        console.log(res.result) // 图书的版号ISBN
    }
})
复制代码

2、拿到版号后,新建一个云函数,其实就是微信扫码点单,通过一个方法把ISBN作为参数再利用这个npm包函数解码得到图书的封面和标题title

async function getBookInfo(isbn) {
  const url = 'https://search.douban.com/book/subject_search?search_text=' + isbn;
  const res = await axios.get(url)
  const reg = /window\.__DATA__ = "(.*)"/
  if (reg.test(res.data)) {
    const bookData = RegExp.$1
    const decryptedData = doubanbook(bookData)
    console.log(decryptedData);
    return decryptedData[0]
  }
  return res
}
复制代码

3、把图书信息保存到云数据库中,在云函数的main方法里连接云数据库books,保存图书的isbn、title、,其中isbn设置为主键,这样就不会重复上传图书

// 云函数入口函数

微信扫码点单_手机微信扫码扫不了怎么回事_微信公众号注册扫码显示不是扫一扫

exports.main = async (event, context) => { // 获取图书的ISBN const { isbn } = event // 云函数数据库 const db = cloud.database() const res = await getBookInfo(isbn) db.collection('books').add({ data: { isbn, title: res.title, cover_url: res.cover_url } }) // 获取数据库的全部图书 const booksData = await db.collection('books').get() return { booksData: booksData.data, title: res.title, cover_url: res.cover_url } } 复制代码

4、最后,在app端调用云函数方法,做下图片的优化处理和展示即可,非常简单

// 扫码识别图书
  btnScan() {
    wx.scanCode({
      success: res1 => {

微信扫码点单_手机微信扫码扫不了怎么回事_微信公众号注册扫码显示不是扫一扫

// res.result是版号ISBN wx.cloud.callFunction({ name: 'getbook', data: { isbn: res1.result }, success: async res2 => { const booksData = res2.result.booksData; const isbn = res1.result // 重复上传则提示 const isRepeat = booksData.every(item => item.isbn !== isbn) if (!isRepeat) { wx.showToast({ title: '数据库中已存在', icon: "error" }) } this.setData({ title: res2.result.title, cover_url: res2.result.cover_url }) } }) } }) }, 复制代码

完整的代码,到我的下载扫码识书

免责声明:部分文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快为您处理。

欢乐点

留言咨询

×