但是很多人在配置和使用的时候,老是出各种错误。最近项目也涉及到这个,就记录一下过程,并对方法进行封装。
基本步骤如下:1.绑定域名先确保你使用的是认证的账号(订阅号,服务号),因为没认证的号是没有JS安全域名配置权限的。建议开发前先看看公众号类型的接口权限说明。登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。2.引入JS文件在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.QQ.com/open/js/jweixin-1.0.0.js请注意,如果你的页面启用了https,务必引入 https://res.wx.qq.com/open/js/jweixin-1.0.0.js ,否则将无法在iOS9.0以上系统中成功使用JSSDK如需使用摇一摇周边功能,请引入 jweixin-1.1.0.js3.通过config接口注入权限验证配置所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用。
wx.config({ debug: true, // 开启调试模式 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2});4.通过ready接口处理成功验证config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。wx.ready(function(){ // 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。});这些基本步骤在 微信JS-SDK说明文档 里边讲的很清楚了。但很多人在开发的时候用自己服务器不知道上边第3步配置信息该如何配置,我就具体说说方法吧。1.下载jssdk的demo下载地址:http://demo.open.weixin.qq.com/jssdk/sample.zip2.解压demo,获取JSSDK的验证类将jssdk.php放到自己的服务器上引入自己的程序。3.获取签名信息初始化JSSDK类之后,获取签名信息,然后将签名信息填写到上边步骤3中配置项中就OK了。
require_once "jssdk.php";$jssdk = new JSSDK("yourAppID", "yourAppSecret");$signPackage = $jssdk->GetSignPackage();wx.config({ debug: true, appId: '<?php echo $signPackage["appId"];?>', timestamp: <?php echo $signPackage["timestamp"];?>, nonceStr: '<?php echo $signPackage["nonceStr"];?>', signature: '<?php echo $signPackage["signature"];?>', jsApiList: [ // 所有要调用的 API 都要加到这个列表中 ]});方法的封装:用法: 前端页面嵌入代码 <php>echo register_jssdk(true);</php> 或者{php echo register_jssdk(true);}根据自己使用的框架而定。
/** * 微信jssdk * @param [bool] $debug [是否是使用debug模式] * @return [string] 微信jssdk代码 */function register_jssdk($debug=false){ require_once APP_ROOT.'/Api/jssdk.php'; $appid = 'wechat_appid'; $secret = 'wechat_secret'; $jssdk = new JSSDK($appid,$secret); $signPackage = $jssdk->GetSignPackage(); if($debug){ $debug = 'true'; }else{ $debug = 'false'; } $js = "<script src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script> <script> wx.config({ debug: ".$debug.", appId: '".$signPackage["appId"]."', timestamp: ".$signPackage["timestamp"].", nonceStr: '".$signPackage["nonceStr"]."', signature: '".$signPackage["signature"]."', jsApiList: [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', '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>"; return $js;}就是这么简单!
新闻热点
疑难解答