function jssdk(){ $appid = '这里替换成你的appid' ; $secret = '这里替换成你的key' ; $_title = '微信' ; $code = $_GET [ 'code' ]; //获取code $_SESSION [ 'code' ] = $code ; //设置code缓存给微信付账使用 $auth = file_get_contents ( "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret=" . $secret . "&code=" . $code . "&grant_type=authorization_code" );//通过code换取网页授权access_token $jsonauth = json_decode( $auth ); //对JSON格式的字符串进行编码 $arrayauth = get_object_vars( $jsonauth ); //转换成数组 $openid = $arrayauth [ 'openid' ]; //输出openid $access_token = $arrayauth [ 'access_token' ]; $_SESSION [ 'openid' ] = $openid ; $accesstoken = file_get_contents ( "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $secret . "" );//获取access_token $token = json_decode( $accesstoken ); //对JSON格式的字符串进行编码 $t = get_object_vars( $token ); //转换成数组 $access_token = $t [ 'access_token' ]; //输出access_token $jsapi = file_get_contents ( "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" . $access_token . "&type=jsapi" ); $jsapi = json_decode( $jsapi ); $j = get_object_vars( $jsapi ); $jsapi = $j [ 'ticket' ]; //get JSAPI $time = 14999923234; $noncestr = $time ; $jsapi_ticket = $jsapi ; $timestamp = $time ; $url = 'http://' . $_SERVER [ 'HTTP_HOST' ]. $_SERVER [ 'REQUEST_URI' ]; $and = "jsapi_ticket=" . $jsapi_ticket . "&noncestr=" . $noncestr . "×tamp=" . $timestamp . "&url=" . $url . "" ; $signature = sha1( $and ); return $signature ; } |
最后的一句代码,就是说,如果你在输出页面使用<?=jssdk();?>,那么就会输出$signature的内容。其中上面的$time是我手动指定的,这个一定要跟输出页面的js代码的值一样。
输出页面代码如下:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | <script type= "text/javascript" src= "http://res.wx.qq.com/open/js/jweixin-1.0.0.js" ></script> <script language= "javascript" type= "text/javascript" > wx.config({ debug: false , //这里是开启测试,如果设置为true,则打开每个步骤,都会有提示,是否成功或者失败 appId: '这里换成你的appid' , timestamp: '14999923234' , //这个一定要与上面的php代码里的一样。 nonceStr: '14999923234' , //这个一定要与上面的php代码里的一样。 signature: '<?=jssdk();?>' , jsApiList: [ // 所有要调用的 API 都要加到这个列表中 'onMenuShareTimeline' , 'onMenuShareAppMessage' , 'onMenuShareQQ' , 'onMenuShareWeibo' ] }); wx.ready( function () { wx.onMenuShareTimeline({ title: "<?=$act['act_name']?>" , // 分享标题 link: "http://www.brandhd.com/v/events/view/<?=$act['act_id']?>" , // 分享链接 imgUrl: "http://www.brandhd.com<?=$act['act_poster_small']?>" , // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); wx.onMenuShareAppMessage({ title: "<?=$act['act_name']?>" , // 分享标题 desc: "<?=substr($act['act_stime'],0,10)?><?=$act['act_place']?>" , // 分享描述 link: "http://www.brandhd.com/v/events/view/<?=$act['act_id']?>" , // 分享链接 imgUrl: "http://www.brandhd.com<?=$act['act_poster_small']?>" , // 分享图标 type: '' , // 分享类型,music、video或link,不填默认为link dataUrl: '' , // 如果type是music或video,则要提供数据链接,默认为空 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); wx.onMenuShareQQ({ title: "<?=$act['act_name']?>" , // 分享标题 desc: "<?=substr($act['act_stime'],0,10)?>\n<?=$act['act_place']?>" , // 分享描述 link: "http://www.brandhd.com/v/events/view/<?=$act['act_id']?>" , // 分享链接 imgUrl: "http://www.brandhd.com<?=$act['act_poster_small']?>" , // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); wx.onMenuShareWeibo({ title: "<?=$act['act_name']?>" , // 分享标题 desc: "<?=substr($act['act_stime'],0,10)?>\n<?=$act['act_place']?>" , // 分享描述 link: "http://www.brandhd.com/v/events/view/<?=$act['act_id']?>" , // 分享链接 imgUrl: "http://www.brandhd.com<?=$act['act_poster_small']?>" , // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); }); </script>
或者直接输出到php页面<?phprequire_once "jssdk.php"; $jssdk = new JSSDK("wx78437366c2672eb9", "408e952767c07ab8a116751842e57e56"); $signPackage = $jssdk->GetSignPackage(); ?> <html lang="zh_CN"> <body></body> <script> $(document).ready(function(){ /* * 注意: * 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 * 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。 * 3. 常见问题及完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html * * 开发中遇到问题详见文档“附录5-常见错误及解决办法”解决,如仍未能解决可通过以下渠道反馈: * 邮箱地址:weixin-open@qq.com * 邮件主题:【微信JS-SDK反馈】具体问题 * 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。 */ //alert($.cookie('user_id')); var links1='http://mm.gushen178.com/wapZhuanti'; if($.cookie('user_id')!=undefined||$.cookie('user_id')!=null){ links1='http://mm.gushen178.com/wapZhuanti/?rec_uid='+$.cookie("uid"); } //alert(links1); wx.ready(function () { wx.onMenuShareTimeline({ title: '150万现金奖励是真的么?别逗了!你看看有多少大学生已经拿奖了!', desc: '2016“股神交友”中国大学生模拟证券投资大奖赛,总冠军8万元,月冠军1万元,周冠军3千元。每周每月每年前三名都有奖!', link:links1, imgUrl:'http://mm.gushen178.com/wapZhuanti/images/512.png', success: function () { alert('已分享'); }, cancel: function () { alert('已取消'); } }); wx.onMenuShareAppMessage({ title: '150万现金奖励是真的么?别逗了!你看看有多少大学生已经拿奖了!', desc: '2016“股神交友”中国大学生模拟证券投资大奖赛,总冠军8万元,月冠军1万元,周冠军3千元。每周每月每年前三名都有奖!', link: links1, imgUrl:'http://mm.gushen178.com/wapZhuanti/images/512.png', type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { alert('已分享'); }, cancel: function () { alert('已取消'); } }); }); }); </script> <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> $(document).ready(function(){ /* * 注意: * 1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。 * 2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。 * 3. 常见问题及完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html * * 开发中遇到问题详见文档“附录5-常见错误及解决办法”解决,如仍未能解决可通过以下渠道反馈: * 邮箱地址:weixin-open@qq.com * 邮件主题:【微信JS-SDK反馈】具体问题 * 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。 */ wx.config({ debug: false, appId: '<?php echo $signPackage["appId"];?>', timestamp: <?php echo $signPackage["timestamp"];?>, nonceStr: '<?php echo $signPackage["nonceStr"];?>', signature: '<?php echo $signPackage["signature"];?>', jsApiList: ["onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ","onMenuShareWeibo","onMenuShareQZone","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"] }); }); </script> </html> |