先ajax 调用 到 生成signpackage的 jssdk.PHP(需要修改动态获取 url函数 )函数 ,参数是当前url ; 然后使用共享 微信共享 配置 js
function get_broswer_info(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/weibo/i) == "weibo"){
return 1;
}else if(ua.indexOf('qq/')!= -1){
return 2;
}else if(ua.match(/MicroMessenger/i)=="micromessenger"){
var v_weixin = ua.split('micromessenger')[1];
v_weixin = v_weixin.substring(1,6);
v_weixin = v_weixin.split(' ')[0];
if(v_weixin.split('.').length == 2){
v_weixin = v_weixin + '.0';
}
if(v_weixin < '6.0.2'){
return 3;
}else{
return 4;
}
}else{
return 0;
}
}
function reset_weixin_share(){
wx.ready(function () {
wx.onMenuShareTimeline({ // 分享到朋友圈
title: window.ShareData.TimelineTitle,// 分享标题
link: window.ShareData.link,// 分享链接
imgurl: window.ShareData.img,// 分享图标
success: function () {
// 用户确认分享后执行的回调函数
window.ShareData.Timelinesuccess();
},cancel: function () {
// 用户取消分享后执行的回调函数
}
});
wx.onMenuShareAppMessage({ // 分享给朋友
title: window.ShareData.FriendTitle,// 分享标题
desc: window.ShareData.FriendDesc,// 分享描述
link: window.ShareData.link,// 分享图标
type: '',// 分享类型,music、video或link,不填默认为link
dataUrl: '',// 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
window.ShareData.normalSuccess();
},cancel: function () {
// 用户取消分享后执行的回调函数
}
});
/*wx.onMenuShareQQ({ // 分享到QQ
title: window.ShareData.QQTitle,// 分享标题
desc: window.ShareData.QQDesc,// 分享图标
success: function () {
// 用户确认分享后执行的回调函数
window.ShareData.normalSuccess();
},cancel: function () {
// 用户取消分享后执行的回调函数
}
});
wx.onMenuShareWeibo({ // 分享到腾讯微博
title: window.ShareData.WeiboTitle,// 分享标题
desc: window.ShareData.WeiboDesc,cancel: function () {
// 用户取消分享后执行的回调函数
}
});*/
// wx.hideOptionMenu(); // 隐藏右上角菜单接口
wx.showOptionMenu(); // 显示右上角菜单接口
});
}
function set_weixin_share(){
if(broswer == 3){
function onBridgeReady(){
WeixinjsBridge.call('showOptionMenu'); // 显示右上角菜单
// WeixinjsBridge.call('hideOptionMenu'); // 隐藏右上角菜单
}
if (typeof WeixinjsBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinjsBridgeReady',onBridgeReady,false);
}else if (document.attachEvent){
document.attachEvent('WeixinjsBridgeReady',onBridgeReady);
document.attachEvent('onWeixinjsBridgeReady',onBridgeReady);
}
}else{
onBridgeReady();
}
document.addEventListener('WeixinjsBridgeReady',function onBridgeReady() {
WeixinjsBridge.on('menu:share:appmessage',function(argv) { // 分享给朋友
WeixinjsBridge.invoke('sendAppMessage',{
"img_url": window.ShareData.img,"link": window.ShareData.link,"desc": window.ShareData.FriendDesc,"title": window.ShareData.FriendTitle
},function(res) {
window.ShareData.normalSuccess();
})
});
WeixinjsBridge.on('menu:share:timeline',function(argv) { // 分享到朋友圈
WeixinjsBridge.invoke('shareTimeline',"desc": window.ShareData.TimelineTitle,"title": window.ShareData.TimelineTitle
},function(res) {
window.ShareData.Timelinesuccess();
});
});
/*WeixinjsBridge.on('menu:share:weibo',function(argv) { // 分享到腾讯微博
WeixinjsBridge.invoke('shareWeibo',{
"content": window.ShareData.WeiboDesc,"url": window.ShareData.link
},function(res) {
window.ShareData.normalSuccess();
});
});*/
},false);
}else if(broswer == 4){
wx.config({
debug: false,// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: config_info.appId,// 必填,公众号的唯一标识
timestamp: config_info.timestamp,// 必填,生成签名的时间戳
nonceStr: config_info.nonceStr,// 必填,生成签名的随机串
signature: config_info.signature,// 必填,签名,见附录1
jsApiList: [
// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
// 所有要调用的 API 都要加到这个列表中
'onMenuShareTimeline','onMenuShareAppMessage',/*'onMenuShareQQ','onMenuShareWeibo',*/
'hideOptionMenu','showOptionMenu'
]
});
reset_weixin_share();
}
}
logo_URL = imgurL + "logo.jpg";
function unimall_start_weixin(){
jQuery.getJSON( hostURL+"?c=weixin&a=showWxConfig&url="+encodeURIComponent(window.location.href),function( config_info ) {
//console.info(config_info);
window.config_info = config_info;
window.broswer = get_broswer_info();
set_weixin_share();
});
}
/*
调用示例
window.ShareData = {
"img": "<?PHP echo logo_URL;?>","link": 'api.PHP?c=weixin&a=share&state={$shopId}x{$projectId}x{$staffId}',//分享到朋友圈
"TimelineTitle":"会员回馈活动,上百万的豪礼不拿白不拿!","Timelinesuccess":function(){
},//分享到朋友
"FriendTitle": "有好事我第一个想到你!","FriendDesc": "会员回馈活动!","normalSuccess":function(){
}
};
unimall_start_weixin();
*/
public function getSignPackage($url='') {
$jsapiTicket = $this->getJsApiTicket();
// 注意 URL 一定要动态获取,不能 hardcode.; 如果传递了url参数,则优先使用
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = $url?$url:("$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
$getlist = $_GET;
$timestamp = time();
$nonceStr = $this->createNoncestr();
// 这里参数的顺序要按照 key 值 ASCII 码升序排序
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";
//echo $string;
error_log( "\n". date('Y-m-d H:i:s') . ":" . $string,3,APP_PATH.'log/jssdk');
$signature = sha1($string);
$signPackage = array(
"appId" => $this->appId,"nonceStr" => $nonceStr,"timestamp" => $timestamp,"url" => $url,"signature" => $signature,"rawString" => $string
);
return $signPackage;
}
参考 :
1 http://blog.csdn.net/sNow_finland/article/details/43228839