盛事通扫码功能逻辑:
微信或者盛事通app扫描用户盛事通“亮身份”二维码,获取字符串标识,调取盛事通接口,获取用户信息
### 获取用户信息 接口
~~~
测试环境:http://wanglanglang.tripln.top/api/uc/mobile/shopUserService/selectShopUserByEcQrCode?id=字符串
正式环境:https://shengstapi.tripln.top/api/uc/mobile/shopUserService/selectShopUserByEcQrCode?id=字符串
~~~
### 微信扫码
~~~~
微信端调用扫码 (微信官方文档)
https://developers.weixin.qq.com/miniprogram/dev/api/device/scan/wx.scanCode.html
wx.scanCode({
success (res) {
console.log(res)
}
})
~~~~
### app扫码
~~~
引用js-sdk(npm install hd-app-js-sdk -S)
详细文档:https://ihavenolimitations.xyz/star409964/hd-standard/2491762
1.H5端在需要扫码功能的时候调用此方法
2.App端识别二维码或条形码成功后会自动收回扫码界面,然后将扫码结果字符串作为参数执行接下来的回调
3.如果扫码组件出现错误或异常会走promise的resolve方法。H5根据错误码进行后续的业务,错误码对照表如下
1000 通用性失败错误码,不确定问题出在哪里,但就是所期望的结果未达成。
1001 用户主动取消操作,比如用户主动点击了返回按钮等用户主动中断业务流程的情况。
1002 用户未授权相关操作的系统权限,比如说询问是否可以使用手机相机的时候点击了“否”。
1003 接口错误,与此业务相关的接口,没有按照约定返回可以达成业务的返回值,导致业务处理失败。
1004 SDK错误,如果此业务需要调用相应的SDK来完成,在调用SDK的过程中出现SDK的错误会返回此错误码。
1005 用户操作不规范所导致的错误,比如说用户未按照人脸识别功能的要求做完相应的动作,导致业务无法继续的问题。
1006 App代码级别出现错误或异常导致业务无法进行。
this.$hdsdk.scanQrCode().then(r => console.log).catch(r => console.error)
~~~
### 例子
~~~
例子:
scanQRCodes() {
const ua = window.navigator.userAgent.toLowerCase()
//判断当前浏览器是微信,else是其他浏览器
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
// 封装微信签名方法
this.$common.wxCallBack(() => {
wx.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
success: (res) => {
const result = res.resultStr
// 获取用户信息
this.shopUserById(result)
},
error: function(res) {
alert(res)
}
})
})
} else {
console.log('调用sdk扫码')
this.$hdsdk.scanQrCode().then(ret => {
if (!!ret && ret.code == 0 && !!ret.data && !!ret.data.scanResult) {
// 获取用户信息
this.shopUserById(ret.data.scanResult)
} else {
alert(ret.codeDescription)
}
}).catch(res => {
console.log(res)
})
}
}
~~~