夺命雷公狗---微信开发56----微信js-sdk接口开发(3)所有接口功能
按照上节课程里面的介绍,我们可以先将刚才在signatrue.php里获取到的信息填写进jssdk.htm模版文件里填写各个权限的参数
jssdk.htm代码如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>微信JS-SDK Demo 每学网</title> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"> <link rel="stylesheet" href="css/style.css"> </head> <body ontouchstart=""> <div class="wxapi_container"> <div class="wxapi_index_container"> <ul class="label_box lbox_close wxapi_index_list"> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-basic">基础接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-share">分享接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-image">图像接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-voice">音频接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-smart">智能接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-device">设备信息接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-location">地理位置接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-webview">界面操作接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-scan">微信扫一扫接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-shopping">微信小店接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-card">微信卡券接口</a></li> <li class="label_item wxapi_index_item"><a class="label_inner" href="#menu-pay">微信支付接口</a></li> </ul> </div> <div class="lbox_close wxapi_form"> <h3 id="menu-basic">基础接口</h3> <span class="desc">判断当前客户端是否支持指定JS接口</span> <button class="btn btn_primary" id="checkJsApi">checkJsApi</button> <h3 id="menu-share">分享接口</h3> <span class="desc">获取“分享到朋友圈”按钮点击状态及自定义分享内容接口</span> <button class="btn btn_primary" id="onMenuShareTimeline">onMenuShareTimeline</button> <span class="desc">获取“分享给朋友”按钮点击状态及自定义分享内容接口</span> <button class="btn btn_primary" id="onMenuShareAppMessage">onMenuShareAppMessage</button> <span class="desc">获取“分享到QQ”按钮点击状态及自定义分享内容接口</span> <button class="btn btn_primary" id="onMenuShareQQ">onMenuShareQQ</button> <span class="desc">获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口</span> <button class="btn btn_primary" id="onMenuShareWeibo">onMenuShareWeibo</button> <span class="desc">获取“分享到QZone”按钮点击状态及自定义分享内容接口</span> <button class="btn btn_primary" id="onMenuShareQZone">onMenuShareQZone</button> <h3 id="menu-image">图像接口</h3> <span class="desc">拍照或从手机相册中选图接口</span> <button class="btn btn_primary" id="chooseImage">chooseImage</button> <span class="desc">预览图片接口</span> <button class="btn btn_primary" id="previewImage">previewImage</button> <span class="desc">上传图片接口</span> <button class="btn btn_primary" id="uploadImage">uploadImage</button> <span class="desc">下载图片接口</span> <button class="btn btn_primary" id="downloadImage">downloadImage</button> <h3 id="menu-voice">音频接口</h3> <span class="desc">开始录音接口</span> <button class="btn btn_primary" id="startRecord">startRecord</button> <span class="desc">停止录音接口</span> <button class="btn btn_primary" id="stopRecord">stopRecord</button> <span class="desc">播放语音接口</span> <button class="btn btn_primary" id="playVoice">playVoice</button> <span class="desc">暂停播放接口</span> <button class="btn btn_primary" id="pauseVoice">pauseVoice</button> <span class="desc">停止播放接口</span> <button class="btn btn_primary" id="stopVoice">stopVoice</button> <span class="desc">上传语音接口</span> <button class="btn btn_primary" id="uploadVoice">uploadVoice</button> <span class="desc">下载语音接口</span> <button class="btn btn_primary" id="downloadVoice">downloadVoice</button> <h3 id="menu-smart">智能接口</h3> <span class="desc">识别音频并返回识别结果接口</span> <button class="btn btn_primary" id="translateVoice">translateVoice</button> <h3 id="menu-device">设备信息接口</h3> <span class="desc">获取网络状态接口</span> <button class="btn btn_primary" id="getNetworkType">getNetworkType</button> <h3 id="menu-location">地理位置接口</h3> <span class="desc">使用微信内置地图查看位置接口</span> <button class="btn btn_primary" id="openLocation">openLocation</button> <span class="desc">获取地理位置接口</span> <button class="btn btn_primary" id="getLocation">getLocation</button> <h3 id="menu-webview">界面操作接口</h3> <span class="desc">隐藏右上角菜单接口</span> <button class="btn btn_primary" id="hideOptionMenu">hideOptionMenu</button> <span class="desc">显示右上角菜单接口</span> <button class="btn btn_primary" id="showOptionMenu">showOptionMenu</button> <span class="desc">关闭当前网页窗口接口</span> <button class="btn btn_primary" id="closeWindow">closeWindow</button> <span class="desc">批量隐藏功能按钮接口</span> <button class="btn btn_primary" id="hideMenuItems">hideMenuItems</button> <span class="desc">批量显示功能按钮接口</span> <button class="btn btn_primary" id="showMenuItems">showMenuItems</button> <span class="desc">隐藏所有非基础按钮接口</span> <button class="btn btn_primary" id="hideAllNonBaseMenuItem">hideAllNonBaseMenuItem</button> <span class="desc">显示所有功能按钮接口</span> <button class="btn btn_primary" id="showAllNonBaseMenuItem">showAllNonBaseMenuItem</button> <h3 id="menu-scan">微信扫一扫</h3> <span class="desc">调起微信扫一扫接口</span> <button class="btn btn_primary" id="scanQRCode0">scanQRCode(微信处理结果)</button> <button class="btn btn_primary" id="scanQRCode1">scanQRCode(直接返回结果)</button> <h3 id="menu-shopping">微信小店接口</h3> <span class="desc">跳转微信商品页接口</span> <button class="btn btn_primary" id="openProductSpecificView">openProductSpecificView</button> <h3 id="menu-card">微信卡券接口</h3> <span class="desc">批量添加卡券接口</span> <button class="btn btn_primary" id="addCard">addCard</button> <span class="desc">调起适用于门店的卡券列表并获取用户选择列表</span> <button class="btn btn_primary" id="chooseCard">chooseCard</button> <span class="desc">查看微信卡包中的卡券接口</span> <button class="btn btn_primary" id="openCard">openCard</button> <h3 id="menu-pay">微信支付接口</h3> <span class="desc">发起一个微信支付请求</span> <button class="btn btn_primary" id="chooseWXPay">chooseWXPay</button> </div> </div> </body> <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> /* * 注意: * 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: 'wxed89d8f74fa6fc51', timestamp: 1457595943, nonceStr: '929633e84e9e62eecbb8469a3815882e', signature: '8172d05fea66d832fcde07ab471ad1be97c72e88', jsApiList: [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', 'hideMenuItems', 'showMenuItems', 'hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem', 'translateVoice', 'startRecord', 'stopRecord', 'onRecordEnd', 'playVoice', 'pauseVoice', 'stopVoice', 'uploadVoice', 'downloadVoice', 'chooseImage', 'previewImage', 'uploadImage', 'downloadImage', 'getNetworkType', 'openLocation', 'getLocation', 'hideOptionMenu', 'showOptionMenu', 'closeWindow', 'scanQRCode', 'chooseWXPay', 'openProductSpecificView', 'addCard', 'chooseCard', 'openCard' ] }); </script> <script src="js/zepto.min.js"></script> <script src="js/demo.js"> </script> </html>
关键代码如下所示:
我们下一步写一个fs.php将http://weixin.showtp.com/jssdk.htm的链接发送给用户,代码如下所示:
<?php header("Content-Type:text/html;charset=utf-8"); require_once "get_token.php"; require_once "common.php"; //这里可以写得更人性化一点,通过表单post过来即可 $contentStr = "请大家过来体验一下JS-SDK的威力吧\n\n http://weixin.showtp.com/jssdk.htm"; //因为是测试蓄意将openid写死了 $fromUsername = 'oB1_6tw1NBlGdqSsTCl5anZ7MEU4'; //因为可能会存在中文所以需要url编码 $contentStr = urlencode($contentStr); //到时候我们我发送的内容我们放到一个数组里面去了 $content_arr = array('content'=>"{$contentStr}"); //这里的意思是将来我要发送消息给这个用户 $reply_arr = array('touser'=>"{$fromUsername}",'msgtype'=>'text','text'=>$content_arr); //下一步就是将编码转成规定的json格式 $post = json_encode($reply_arr); //url解码,如果不解码他将会发来一段二进制代码 $post = urldecode($post); $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={$access_token}"; //处理好了直接发送 http_request($url,$post); echo "发送成功咯";
然后在浏览器上访问fs.php文件,手机端就会收到信息
手机将会收到一条信息,然后点击链接进入网站,如果发现那个功能是您想要的,那就上jssdk.htm里面找那个功能的id,然后通过http://res.wx.qq.com/open/js/jweixin-1.0.0.js 里面进行搜索他的id即可找到那段代码是如何调用的了
温馨提示:
在模版里面要多注意这点噢,要不然很容易中招的
这里面其实就是封装了我们需要调用的各个接口
如果是在实际的项目中,我们的jsapi_ticket频繁的刷新会导致api调用受限的,所以我们往往都是会使用到缓存技术的,如:mencache等