uniapp微信js-sdk使用封装

下载依赖包 微信js-sdk

1、因为uni-app如果没有使用npm的方法,根目录就没有package.json,首先在项目根目录运行

npm init

如果已经有package.json,直接进入下一步

2、安装jweixin-module

npm i jweixin-module -S

此外,您也可以直接下载:https://unpkg.com/jweixin-module@1.4.1/out/index.js

使用

  1. 在您的js公共文件夹下创建wechat.js
import { params  as PARAMS,appurl as APPURL,appid as APPID
} from "./params.js"; // 公共域名 AppID
import {getConf
} from "@/common/http.api.js";
let jweixin = require('jweixin-module'); // 微信开放接口
let params = window.location.href;
export default {//判断是否在微信中isWechat: function() {var ua = window.navigator.userAgent.toLowerCase();if (ua.match(/micromessenger/i) == 'micromessenger') {return true;} else {return false;}},//初始化sdk配置initJssdk: function(callback) {let url = window.location.href.split('#')[0];//服务端进行签名 ,可使用uni.request替换。 签名算法请看文档uni.$u.api.getConf({url: url,appid:APPID}).then(res=>{ if(res.flag ===  'Success'){jweixin.config({debug: false,appId: res.data.appId,nonceStr: res.data.nonceStr,timestamp: res.data.timestamp,signature: res.data.signature,url:res.data.url,jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData','scanQRCode']})if (callback) {callback(res.data);}}else{console.log('没进来');}}).catch((e) => {console.log('网络请求错误捕捉',e);});},//在需要定位页面调用getlocation: function(callback) {if (!this.isWechat()) {return;}this.initJssdk(function(res) {jweixin.ready(function() {jweixin.getLocation({type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'success: function(res) {callback(res)},fail: function(res) {},});});});},//获取微信收货地址openAddress: function(callback) {if (!this.isWechat()) {return;}this.initJssdk(function(res) {jweixin.ready(function() {jweixin.openAddress({success: function(res) {callback(res)},fail: function(res) {},});});});},// 微信扫码scanQRCode: function(callback) {const that = this;if (!this.isWechat()) {return;}this.initJssdk(function(res) {console.log('扫码了',res);jweixin.ready(function() {jweixin.scanQRCode({needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有success: function(res) {let durl=/https:\/\/([^\/]+)\//i;let domain;res.resultStr.replace(durl, (e)=>{domain = e});//判断是否扫码后获取的链接,为后台的链接if(domain != APPURL){alert('该码有误,无法识别!');return false;}callback(res)console.log('扫码',res);},fail: function(err) {console.log('失败',err);},});});});},// 微信分享share: function(data, callback) {if (!this.isWechat()) {return;}this.initJssdk(function(res) {jweixin.ready(function() {var shareData = {title: data.title,desc: data.desc,link: data.path,imgUrl: data.imageUrl,success: function(res) {callback(res)// 分享后的一些操作,比如分享统计等等},cancel: function(res) {}};console.info(shareData);jweixin.updateAppMessageShareData(shareData);jweixin.updateTimelineShareData(shareData);});});},// 微信定位openLocation: function(data, callback) { //打开位置if (!this.isWechat()) {return;}this.initJssdk(function(res) {jweixin.ready(function() {jweixin.openLocation({ //根据传入的坐标打开地图latitude: data.latitude,longitude: data.longitude});});});},// 选择图片chooseImage: function(callback) { //选择图片if (!this.isWechat()) {return;}this.initJssdk(function(res) {jweixin.ready(function() {jweixin.chooseImage({count: 1,sizeType: ['compressed'],sourceType: ['album'],success: function(rs) {callback(rs)}})});});},//微信支付wxpay: function(data, callback) {let that = this;if (!this.isWechat()) {return;}this.initJssdk(function(res) {jweixin.ready(function() {jweixin.chooseWXPay({timestamp: data.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符nonceStr: data.nonceStr, // 支付签名随机串,不长于 32 位package: data.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)signType: data.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'paySign: data.paySign, // 支付签名success: function(res) {callback(res)},fail: function(res) {callback(res)},cancel: function(res) {that.tools.toast('取消支付')},});});});},//微信支付 另一种方式wxpayRidge: function(data, callback) {if (!this.isWechat()) {return;}this.initJssdk(function(result) {console.log(result);jweixin.ready(function() {WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId": result.data.appId, //公众号ID,由商户传入     "timeStamp": `${result.data.timeStamp}`, //时间戳,自1970年以来的秒数     "nonceStr": result.data.nonceStr, //随机串"package": data.data.package,"signType":"MD5",  //微信签名方式:     "paySign": data.data.paySign //微信签名 },  function(res){callback(res)});})})}
}
  1. main.js加载该文件,这样就可以全局使用wechat.js了
// #ifdef H5
import wechat from './static/js/wechat.js';
Vue.prototype.$wechat = wechat;
// #endif
  1. 页面中使用扫码功能
import _wxApi from '@/common/wechat.js'
var wx = require('jweixin-module')
export default {data() {return {};},methods:{btnbindDevice(){let that = this;_wxApi.scanQRCode((resultStr)=>{var id = resultStr.resultStr.split("=")[1];that.$u.api.user_bindDevice({deviceid:id}).then(rest=>{if (rest.flag == "Success") {that.$u.toast(rest.msg);th.list= [];th.page= 1;th.loaded= 1;th.getlist();}else{that.$u.toast('失败原因456789:'+rest.msg);}}).catch((e) => {that.$u.toast('失败原因456:'+e);})})},}

使用用全局的定位功能

// #ifdef H5
//获取定位经纬度
const that = this;
if (this.$wechat && this.$wechat.isWechat()) {this.$wechat.location(function (res) {that.latitude = res.latitude;  //纬度that.longitude = res.longitude; //经度});
}
// #endif

uniapp微信js-sdk使用封装相关推荐

  1. 微信-js sdk invalid signature签名错误 问题解决

    微信-js sdk invalid signature签名错误 问题解决 参考文章: (1)微信-js sdk invalid signature签名错误 问题解决 (2)https://www.cn ...

  2. 微信js sdk 分享 失败 有时候好 有时候坏

    微信js sdk 分享 失败  有时候好 有时候坏 用了一个www开头的域名 和一个xx.com的域名 两个在解析上有问题. 实践是www.xx.com的比较 稳定 转载于:https://www.c ...

  3. 微信JS SDK开放,前端开发者“鸡冻”了!

    HTML5又一次逆袭了,其实之前微信也是有一些JS API的,比如分享.但这次一股脑开放了拍摄.录音.语音识别.二维码.地图.支付.分享.卡券等几十个API,这条消息不需宣传,瞬间就占满了HTML5从 ...

  4. 微信js sdk 授权上传头像下载代码片段和注意事项

    /*  * 描述:当前页授权  * @param url   例:index.html / 如果有参数,需加密index.html?id=1     */ 1.对需要运用js sdk的页面授权 get ...

  5. 实战微信JS SDK开发:贺卡制作与播放(1)

    前段时间忙于CanTK 2.0的开发,所以博客一直没有更新.CanTK 2.0主要增强了游戏和富媒体的开发,现在编码和测试基本完成了,等文档完成了再正式发布,里面有不少激动人心的功能,等发布时再一一细 ...

  6. 使用微信js sdk关于选择及上传图片至腾讯云COS

    使用微信js sdk关于选择及上传图片至腾讯云COS 使用微信js sdk关于选择及上传图片至腾讯云COS 背景 名词 参考 效果图展示 开发步骤 1:概要步骤 2:上代码 结束: 使用微信js sd ...

  7. uni-app微信小程序上传图片封装

    概述 uni-app 微信小程序原生上传图片功能封装,具体使用根据个人情况而定. 组件自定义属性与方法描述 isShow:布尔值,默认为true true:不显示上传图标 false:显示上传图标 c ...

  8. 微信JS SDK开发 共享问题小结

    首先,我要吐槽一下这个SDK,看了第一遍,完全不知所云,一会获取这个,一会获取那个,也没确切的告诉怎么获取. 和腾讯客服(拿钱不干事的好工作)讨教,人家不懂技术,不知道怎么解决,也没有相关技术人员对应 ...

  9. php转发朋友圈缩略图片,解释最全的,手把手教的微信JS sdk分享设置教程-微信分享插件PHP源码JS-SDK接口,分享到朋友圈 转发好友带缩略图...

    亲们,此文是我上传的有关微信分享插件PHP源码JS-SDK接口的.rar和.zip的说明使用文件 许多朋友都面临自己编写的网站通过微信转发时,无论是分享微信好友或是微信朋友圈时,出现无缩略图显示的问题 ...

  10. 微信js sdk动态引用

    一般情况下,微信的js-sdk只需要直接引用script即可 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js&qu ...

最新文章

  1. 长篇自动驾驶技术综述论文(上)
  2. 怎样Selenium IDE选择combo box中值
  3. 由《我不是药神》到互联网行业从业保障
  4. C语言 将整数写入内存指定的连续字节单元中
  5. java学习(109):StringBuilder,stringbuffer,string区别
  6. ps分辨率像素英寸和厘米的区别_关于像素,你想知道的都在这里
  7. Python查找包含指定字符串的所有文件
  8. Allegro导入DXF
  9. 问题:动态变换video标签source的src不起作用
  10. wps的ppt如何去掉插入表格的表头与表体之间的空白间隔
  11. 【转载】透视“专利恶霸”系列之一 双重标准 吃相难看
  12. Pandas读取数据
  13. 期货开户公司行情资讯及时高效
  14. VM使用-pin针同心度检测
  15. 原创干货 | 史上最全的大数据学习资源(Awesome Big Data)
  16. 华为云计算IE面试笔记-桌面云用户登录连接流程及故障处理
  17. 通过CURL请求示例详解HTTPS协议
  18. python变量名区分大小写_Python变量名区分大小写,所以student和Student不是同一个变量。...
  19. 另辟蹊径!公众号留言功能新思路
  20. 直播回顾|第9期5G消息云课堂,快递服务的“数字化”转型 | 文末有回放

热门文章

  1. 留学生该如何准备快消行业秋招笔试?(宝洁、联合利华、达能、强生等
  2. nook2(simple touch) 恢复原厂(出厂)设置
  3. 手机端密码键盘(weiKeyBoard.js)
  4. 【可用性评估】——手机输入法可用性评估·论文
  5. 数据结构-单链表基本操作(C语言实现)
  6. c语言编程大赛新闻稿,第八届C语言程序设计挑战杯来了
  7. Python获取城市美食、地铁、中小学、商场及超市信息
  8. 5种方法防止 jsp被sql注入
  9. python求斐波那契数列前20项和、每隔5个数空一行_输出斐波那契数列的前20项(每行5个数)_学小易找答案...
  10. Idea配置JRebel插件的详细配置及图解