当前位置:   article > 正文

公众号开发-移动端h5页面调用微信扫一扫_h5 扫一扫sdk除了微信外

h5 扫一扫sdk除了微信外

前言:

大家好,我是前端小陈.今天为大家讲一下微信公众号开发,调用微信的JSSDK的案例.

前不久,接到这么一个需求:在H5网页实现扫一扫功能.  要求:微信端以及浏览器均可以实现扫一扫功能,而且不能用原生相机

第一次做这种需求,那肯定是很乐意的啦.能学到东西嘛.于是开始了我漫长的百度百度百度,导入试用.就这样过了一天~第二天经过多方问人之后,得到的结论是:三个解决方案.

  1. 调用微信扫一扫

  2. 用百度的sdk(收费)

  3. 调用原生相机

经过跟老大以及产品一番讨论后,决定使用微信扫一扫来实现这个扫码的功能,下面我就开始就我在实现这个功能过程中遇到的问题,进行记录讲解

调用微信的东西,那必须的看官方文档必然! 

快捷通道:微信开发文档

按照说明文档的使用方法:

第一步:绑定域名---登录公众号---设置与开发--功能设置--JS接口安全域名

第二步:引入js文件---自行百度

注意:引入的时候.遇到这么个问题.mian.js里面引入打印的方法,与页面引入打印出来的方法,有些有有些没有,百度得到的是有冲突.所以我使用的当前页面引入.

第三步:wx.config权限校验.

  1. wx.config({
  2. debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  3. appId: '', // 必填,公众号的唯一标识
  4. timestamp: , // 必填,生成签名的时间戳
  5. nonceStr: '', // 必填,生成签名的随机串
  6. signature: '',// 必填,签名
  7. jsApiList: [] // 必填,需要使用的JS接口列表
  8. });

注意:这一步,里面的参数通过后端写的接口返回给你.切记:后端返回的数据一定要记得去微信提供的校验网站核验!!!    后端返回的签名必须与校验网站生成的签名一致才可以,切记!

附上代码:

  1. _config() {
  2. var pageUrl = location.href.split('#')[0] // 页面地址
  3. this.$myRequest({
  4. url: 'getSignPackage',
  5. methods: 'get',
  6. header: {
  7. token: uni.getStorageSync('token')
  8. },
  9. data: {
  10. url: pageUrl
  11. }
  12. }).then(res => {
  13. let config = res.data.data
  14. wx.config({
  15. // debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  16. appId: config.appId, // 必填,公众号的唯一标识
  17. timestamp: config.timestamp, // 必填,生成签名的时间戳
  18. nonceStr: config.nonceStr, // 必填,生成签名的随机串
  19. signature: config.signature, // 必填,签名
  20. jsApiList: ['checkJsApi', 'scanQRCode'] // 必填,需要使用的JS接口列表
  21. });
  22. wx.error(function(res) {
  23. alert('出错啦====' + res.errMsg)
  24. })
  25. wx.ready(function() {
  26. wx.checkJsApi({
  27. jsApiList: ['scanQRCode'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
  28. success: function(res) {}
  29. })
  30. })
  31. })
  32. }

解释一下: 

pageUrl:当前页面地址,是需要做参数传回给后台的

config :是请求第三方接口(后端写的接口)用config 来接收这个返回的对象

--记得校验签名~~~

wx.config里面的参数拿到之后,调用wx.ready这个方法去校验, wx.checkJsApi 这个是做检验上面所需要调用微信的js接口检测的

第四步:调用微信扫一扫

  1. wx.scanQRCode({
  2. needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  3. scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  4. success: function (res) {
  5. var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
  6. }
  7. });

直接通过点击事件去唤起这个扫一扫,附上我的代码

  1. //点击调起微信扫一扫
  2. openCaream() {
  3. this.userData = JSON.parse(uni.getStorageSync('userData'))
  4. const screener_id = this.userData.parent_id
  5. wx.scanQRCode({
  6. needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  7. scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  8. success: function(res) {
  9. var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
  10. console.log('返回的参数===',result)
  11. var arr = result.split('?')
  12. const data = arr[1].split('&')
  13. const student_id = data[0].split('=')[1]
  14. const plan_id = data[1].split('=')[1]
  15. getApp().globalData.student_id =student_id
  16. getApp().globalData.plan_id = plan_id
  17. uni.navigateTo({
  18. url: '/pages/screening/screeningDetails'
  19. })
  20. getApp().globalData.flag = true
  21. },
  22. error: function() {
  23. console.log('123')
  24. }
  25. })
  26. }

附上个视频有视频有真相

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/274367
推荐阅读
相关标签
  

闽ICP备14008679号