微信开发 ajax获取 signpackage 且共享
2016-03-21 17:10
253 查看
先ajax 调用 到 生成signpackage的 jssdk.php(需要修改动态获取 url函数 )函数 ,参数是当前url ; 然后使用共享 微信共享 配置 js
参考 :
1 http://blog.csdn.net/snow_finland/article/details/43228839
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
相关文章推荐
- 微信公众帐号开发教程第11篇-符号表情的发送(下)
- 微信公众帐号开发教程第10篇-符号表情的发送(上)
- 微信公众帐号开发教程第9篇-解析接口中的消息创建时间CreateTime
- 微信公众帐号开发教程第8篇-QQ表情的发送与接收
- 微信公众帐号开发教程第7篇-文本消息中使用网页超链接
- 微信公众帐号开发教程第6篇-文本消息中换行符的使用
- 友盟分享打不开QQ,提示微信未安装,iOS应用开发
- 微信公众帐号开发教程第5篇-文本消息的内容长度限制揭秘
- 微信公众帐号开发教程第4篇-各种消息的接收与响应
- 微信公众帐号开发教程第3篇-消息及消息处理工具的封装
- 微信开发笔记
- 微信公众帐号开发教程第2篇-开发模式启用及接口配置
- 微信公众帐号开发教程第1篇-引言
- 微信cookie内容
- 微信cookie内容
- IOS微信支付
- 模仿微信红包
- 仿微信聊天实现
- 微信扫码支付Demo(java)
- iOS 微信支付