1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”
2.在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js
3.所有需要使用JS-SDK的页面必须先注入配置信息,
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
4.
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.onMenuShareAppMessage({
title: '拼单邀请',
desc: '拼单邀请',
link: link,
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回
},
success: function (res) {
alert('分享给朋友成功');
},
cancel: function (res) {
alert('你没有分享给朋友');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
其他的朋友圈什么的参照sdk
});
5. 碰到的问题 : 以前这些都做好了 然后我在微信web开发者工具上测试是可行的,但是在微信上测试title和链接都显示的当前网页没有生效,本来以为是缓存问题,后来看到成功的回调被执行了,就
wx.config({
debug: false,改为true alert出返回值,然后知道是link参数错误,,, link要符合 JS接口安全域名。修改后可行
6.最后分享一个公共的weichat.js
(function(){
window.weiChatConfig = function(actionUrl,href_local, callback){
$.ajax({
type : 'POST',
async : false,
url : actionUrl,//url:'${pageContext.request.contextPath}/jsApi',
data : {"url":href_local},//location.href.split("#")[0]
datatype : 'json',
success : function(msg1){
var msg = eval("("+msg1+")");
wx.config({
debug : false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId : msg.appId, // 必填,公众号的唯一标识
timestamp : parseInt(msg.timestamp), // 必填,生成签名的时间戳
nonceStr : msg.nonceStr, // 必填,生成签名的随机串
signature : msg.signature,// 必填,签名,见附录1
jsApiList : [
'onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ',
'onMenuShareWeibo','startRecord','stopRecord',
'onVoiceRecordEnd','playVoice','pauseVoice',
'stopVoice','onVoicePlayEnd','uploadVoice',
'downloadVoice','chooseImage','previewImage',
'uploadImage','downloadImage','translateVoice',
'getNetworkType','openLocation','getLocation',
'hideOptionMenu','showOptionMenu','hideMenuItems',
'showMenuItems','hideAllNonBaseMenuItem','showAllNonBaseMenuItem',
'closeWindow','scanQRCode','chooseWXPay',
'openProductSpecificView','addCard','chooseCard','openCard'
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function() {
if ( typeof callback === 'function' ) {
callback();
}
});
}
});
}
/**
* 分享到朋友圈
* @param {Object} shareData
*/
window.shareTimeLine = function(shareData){
wx.onMenuShareTimeline({
title: shareData.title, // 分享标题
link: shareData.link, // 分享链接
imgUrl: shareData.imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
}
/**
* 分享给朋友
* @param {Object} shareData
*/
window.shareAppMsg = function(shareData){
wx.onMenuShareAppMessage({
title: shareData.title, // 分享标题
desc: shareData.desc, // 分享描述
link: shareData.link, // 分享链接
imgUrl: shareData.imgUrl, // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
}
/**
* 分享到QQ
* @param {Object} shareData
*/
window.shareQQ = function(shareData){
wx.onMenuShareQQ({
title: shareData.title, // 分享标题
desc: shareData.desc, // 分享描述
link: shareData.link, // 分享链接
imgUrl: shareData.imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
}
/**
* 分享到腾讯微博
* @param {Object} shareData
*/
window.shareWeibo = function(shareData){
wx.onMenuShareWeibo({
title: shareData.title, // 分享标题
desc: shareData.desc, // 分享描述
link: shareData.link, // 分享链接
imgUrl: shareData.imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
}
window.shareAll = function(shareData){
shareTimeLine(shareData);
shareAppMsg(shareData);
shareQQ(shareData);
shareWeibo(shareData);
}
/**
* 微信支付
*/
window.wxpayjsapi = function(wxorder){
wx.chooseWXPay({
timestamp : wxorder.timeStamp, // 支付签名时间戳
nonceStr : wxorder.nonceStr, //支付签名随即字符串,<=32
package : wxorder.package, //统一支付接口返回的prepay_id参数值,格式:prepay_id=xxxx
signType : wxorder.signType, //签名方式,默认为'SHA1',新版为'MD5'
paySign : wxorder.paySign, //支付签名
success : function (res) {
// 支付成功后的回调函数
if(res.indexof("ok") > 0){
alert("支付成功");
} else if(res.indexof("cancel") > 0){
alert("支付过程中用户取消");
} else if(res.indexof("fail") > 0){
alert("支付失败");
}
}
});
}
})();
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
weiChatConfig(webRoot+'weichatApi/jsConfig/config.json',location.href.split("
#")[0]);
//通过config接口注入权限验证配置
//weichatApi/jsConfig/config.json 是控制器返回wx.config的相关参数
</script>