您的位置:首页 > 移动开发 > 微信开发

微信开发 ajax获取 signpackage 且共享

2016-03-21 17:10 253 查看
先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, // 分享链接
imgUrl: window.ShareData.img, // 分享图标
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, // 分享描述
link: window.ShareData.link, // 分享链接
imgUrl: window.ShareData.img, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
window.ShareData.NormalSuccess();
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});

wx.onMenuShareWeibo({ // 分享到腾讯微博
title: window.ShareData.WeiboTitle, // 分享标题
desc: window.ShareData.WeiboDesc, // 分享描述
link: window.ShareData.link, // 分享链接
imgUrl: window.ShareData.img, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
window.ShareData.NormalSuccess();
},
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', {
"img_url": window.ShareData.img,
"link": window.ShareData.link,
"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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: