微信 SDK 使用步骤
前言
现在有很多应用需要调用微信的功能,如公众号、小程序、app以及h5通常会用到微信的支付、扫码或者是获得用户信息等操作。这时就需要用到微信的第三方API--微信SDK ( 官方文档 可以看这里 ) 。
到底怎么再项目中使用呢?今天我们来一起看下,揭下这神秘的面纱。
使用步骤
第一步:引入 JS 文件
在需要调用 JS 接口的页面引入 http://res.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)
当上述资源不可访问时可访问 http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。
上述两种方式都支持使用 AMD/CMD 标准模块加载方法加载。
引入后就可以用 wx.
访问所有接口,如 wx.config
配置接口。
第二步:权限验证
权限验证需要用到 wx.config
,具体代码如下:
wx.config({
debug: true, // 开启调试模式
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});
注意:
debug: true: 调用的所有api的返回值会在客户端alert出来,
若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
第三步:验证结果
wx.config
接口信息验证后会执行 ready
方法,所有接口调用都必须在 config
接口获得结果之后。
config
是一个客户端的异步
操作,一般分如下两种操作
- 如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
wx.ready(function(){
// 页面加载时,调起微信扫一扫
wx.scanQRCode({
needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) {
var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
}
});
})
- 对于用户触发时才调用的接口,则可以直接调用,不需要放在
ready
函数中。
<btton onClick="chooseImgHanlde" > 选图片</button>
function chooseImgHanlde(){
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
}
});
}
校验失败时也会有对应的接口:wx.error
config
信息验证失败会执行error
函数,如签名过期导致验证失败。
具体错误信息可以打开config
的debug
模式查看,也可以在返回的res参数中查看。
对于SPA可以在这里更新签名。
wx.error(function(res){
// To Do
});
第四步:统一接口配置
所有接口通过wx
对象(也可使用·jWeixin·对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:
-
success
:接口调用成功时执行的回调函数。 -
fail
:接口调用失败时执行的回调函数。 -
complete
:接口调用完成时执行的回调函数,无论成功或失败都会执行。 -
cancel
:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。 -
trigger
: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。
备注:不要尝试在trigger
中使用ajax
异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回。
以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg
,其值格式如下:
调用成功
时:"xxx:ok" ,其中xxx为调用的接口名
用户取消
时:"xxx:cancel",其中xxx为调用的接口名
调用失败
时:其值为具体错误信息
第五步:检验接口
判断当前客户端版本是否支持指定JS接口:
wx.checkJsApi({
jsApiList: ['chooseImage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
success: function(res) {
// 以键值对的形式返回,可用的api值true,不可用为false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
}
});