wx-js-sdk.js 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // 引入 jweixin-module
  2. const jweixin = require('jweixin-module')
  3. // 通过export 暴露常用的方法
  4. export default {
  5. //判断是否在微信中
  6. isWechat: function () {
  7. var ua = window.navigator.userAgent.toLowerCase();
  8. if (ua.match(/micromessenger/i) == 'micromessenger') {
  9. //console.log('是微信客户端')
  10. return true;
  11. } else {
  12. //console.log('不是微信客户端')
  13. return false;
  14. }
  15. },
  16. // 初始化WXSDK
  17. initJssdk: async function (callback) {
  18. /* ****************************************
  19. * 获取当前url然后传递给后台获取授权和签名信息
  20. # TODO: 后台返回签名
  21. *************************************** */
  22. // let uri = encodeURIComponent(window.location.href.split('#')[0]);
  23. let uri = window.location.href.split('#')[0];
  24. //返回需要的参数appId,timestamp,noncestr,signature等
  25. let timestamp = parseInt(new Date().getTime() / 1000) + '';
  26. let nonceStr = Math.random().toString(36).substr(2, 15);
  27. // 获取后台返回的签名
  28. // 这里需要换成开发者自己的接口。
  29. // 此处我对uni.request进行了封装,
  30. // 直接采用uni.request方法然后在成功的回调里面完成SDK初始化也是可行的,根据实际情况处理
  31. let res = await GetSignature(nonceStr,timestamp,uri);
  32. //注入config权限配置
  33. let wxConf = {
  34. debug: false, // 是否开启调试,第一次尝试,建议开启,后续可关闭
  35. openTagList:['wx-open-launch-weapp'], //使用的开放标签列表,目前就两,本项目只用到跳转到小程序
  36. appId:"your_appid", // 公众号或者服务号的appid,自行前往服务号管理后台查看
  37. timestamp, // 上文计算的时间戳
  38. nonceStr, // 随机字符串,注意是小驼峰式写法
  39. signature:res, // 回台返回的签名
  40. jsApiList: [ //这里是需要用到的接口名称
  41. 'checkJsApi', //判断当前客户端版本是否支持指定JS接口
  42. 'onMenuShareAppMessage', //分享接口
  43. 'getLocation', //获取位置
  44. 'openLocation', //打开位置
  45. 'scanQRCode', //扫一扫接口
  46. 'chooseWXPay', //微信支付
  47. 'chooseImage', //拍照或从手机相册中选图接口
  48. 'previewImage', //预览图片接口
  49. 'uploadImage' //上传图片
  50. ]
  51. };
  52. jweixin.config(wxConf); //完成微信配置
  53. },
  54. /* ***************************************
  55. *
  56. * 微信SDK功能实例:调用微信扫码
  57. * 若没有初始化需要先调用initJssdk完成初始化
  58. * 若当前页面已经完成initJssdk初始化,调用扫码功能是可以直接调用 jweixin.scanQRCode
  59. *
  60. * **************************************/
  61. scanCode:function(callback,needResult=1){
  62. if (!this.isWechat()) {
  63. console.log('不是微信客户端')
  64. return;
  65. }
  66. this.initJssdk(function (res) {
  67. jweixin.ready(function () {
  68. jweixin.scanQRCode({
  69. needResult: needResult, // 0扫码结果由微信处理, 1是直接返回结果,由开发者处理
  70. scanType: ["qrCode","barCode"],
  71. success: function (rs) {
  72. console.log(rs);
  73. callback(rs)
  74. }
  75. })
  76. });
  77. });
  78. }
  79. }