注意:此篇文章不包含服务端的签名。
微信官方jssdk文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
基本操作
第一步 对微信公众号进行配置
详细配置请看这篇位置“微信公众号服务号授权获取用户信息、分享和微信支付的配置”
第二步 引入微信js sdk
// 引入微信的jssdk
<script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
// 或者
npm install weixin-js-sdk
var wx = require('weixin-js-sdk');
第三步 通过config接口注入权限验证配置
<script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script>
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表,我这里用到的接口有"updateAppMessageShareData","updateTimelineShareData","chooseWXPay"
});
</script>
注意:这里的微信配置签名等是由后端程序来生成。
其他接口请查看微信文档。
第四步 使用接口
所有接口的使用必须在:
wx.ready(function(){
// 所有接口必须在这里写,才会保证生效。
});
媒体播放
iPhone手机有个很麻烦的问题,就是在网页中无法自动播放音乐,需要用户手动点击播放才可以。
为此我们使用微信提供的sdk来解决音乐播放问题。
<audio id="bgm" src="test.mp3" loop></audio>
<script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script>
wx.config({
// ...
});
wx.ready(function(){
// 这里即可自动播放音乐
document.getElementById('bgm').play();
});
微信分享
<script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script>
wx.config({
// ...
});
wx.ready(function(){
var shareData = {
title:'标题',
desc:'描述',
link:'http://test.com',//这里要带域名的绝对地址
imgUrl:'http://test.com/image.jpg' //这里要带域名的绝对地址
};
wx.updateAppMessageShareData(shareData);
wx.updateTimelineShareData(shareData);
});
怎样进行动态的更换分享的内容呢?这种使用场景,尝尝用于单页应用场景,如:vue和react项目。
// 其实很简单,只需要把分享的数据挂载到window对象下即可。
window.shareData = {
title:'标题',
desc:'描述',
link:'http://test.com',
imgUrl:'
};
wx.updateAppMessageShareData(shareData);
wx.updateTimelineShareData(shareData);
// 要动态更换时
window.shareData.title = '新标题';
window.shareData.desc = '新描述';
微信支付
<script src="//res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script>
wx.config({
// ...
});
wx.ready(function(){
// 注意:下面除了回调函数,其他的像paySign签名等是由服务端下单后生成返回的。
wx.chooseWXPay({
timestamp: 0, // 支付签名时间戳
nonceStr: '', // 支付签名随机串
package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
signType: '', // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: '', // 支付签名
success: function (res) {
if(res.errMsg == "chooseWXPay:ok"){
alert('支付成功。');
}else if(res.errMsg == "chooseWXPay:cancel"){
alert('支付失败,用户取消支付。');
}else if(res.errMsg == "chooseWXPay:fail"){
alert('支付失败。');
}else{
alert(res.errMsg);
}
},
cancel: function (res) {
alert('支付失败,用户取消支付。');
},
fail: function (res) {
alert('支付失败。');
}
});
});
注意:除了回调函数,其他的像paySign签名等是由服务端下单后生成返回的。