最近公司需要用uni开发一个项目,项目中遇到的问题记录一下,方便下次不采坑
场景:
使用wx自带sdk完成,扫一扫、微信登录、微信支付
引用方式:
// index.html引入
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js" />
<script>
window.jWeixin = window.wx;
delete window.wx;
</script>
常用api代码封装:
import {
wxConfigApi
} from '../api.js'
export default {
/* 判断是否在微信中 */
isWechat: function() {
var ua = window.navigator.userAgent.toLowerCase();
if (ua.match(/micromessenger/i) == 'micromessenger') {
return true;
} else {
//以下是我项目中所需要的操作其他,可以自定义
uni.showModal({
title: '提示',
content: '请在微信浏览器中打开',
showCancel: false,
success: function(res) {
if (res.confirm) {
// console.log('用户点击确定');
} else if (res.cancel) {
// console.log('用户点击取消');
}
}
});
return false;
}
},
/* 获取sdk初始化配置 */
initJssdk: function(callback) {
//获取当前url然后传递给后台获取授权和签名信息
// 此处url涉及到一个坑点、后面会说到
var url = /(Android)/i.test(navigator.userAgent) ? window.location.href.split('#')[0] : uni.getStorageSync('scanUrl')
console.log(url, 'url')
wxConfigApi({
url: url
}).then(res => {
jWeixin.config({
debug: false,
appId: res.data.appId,
timestamp: res.data.timestamp,
nonceStr: res.data.nonceStr,
signature: res.data.signature,
jsApiList: [ //这里是需要用到的接口名称
'checkJsApi', //判断当前客户端版本是否支持指定JS接口
'updateAppMessageShareData', //分享朋友
'updateTimelineShareData', //分享朋友圈
'getLocation', //获取位置
'openLocation', //打开位置
'scanQRCode', //扫一扫接口
'chooseWXPay', //微信支付
'chooseImage', //拍照或从手机相册中选图接口
'previewImage', //预览图片接口
'uploadImage' //上传图片
]
});
if (callback) {
callback(res.data);
}
})
// jWeixin.ready(function(data) {})
},
//微