目录列出一抹淡淡的忧伤---微信开发基础纯js不可能用纯js,这辈子不会用纯js---微信JSSDK开发与答疑youlife3000——微信支付开发系列问题解答简介WechatJS-SDK是微信公众平台为网页开发者提供的基于微信的网页开发工具包。通过使用微信JS-SDK,Web开发者可以通过微信高效使用手机系统的拍照、选图、语音、定位等能力,同时直接使用微信独有的分享、扫一扫、优惠券和付款。,为微信用户提供更好的网络体验。本文重点介绍最新的JSSDK1.2版本。1.2版本的说明可以参考这里。特别需要注意的是,微信从1.2版本开始对IOS系统WKWebview内核进??行了较大改动,开发者请使用最新版本的JSSDK1.2作为开发源码。否则可能导致IOS部分功能失效。开发前第一步:绑定域名。首先,登录微信公众平台,进入“公众号设置”的“功能设置”,填写“JS接口安全域名”。备注:登录后可在“开发者中心”查看相应接口权限。第二步:导入JS文件在需要调用JS接口的页面导入如下JS文件,(支持https):http://res.wx.qq.com/open/js/...第三步:通过config接口注入权限验证配置wx.config({debug:true,//开启调试模式,所有调用的API的返回值都会在客户端告警,如果想查看传入的参数,可以在PC端打开,参数信息会通过log打出来,只会在PC端打印出来。appId:",//required,公众号的唯一标识timestamp:,//required,生成签名的时间戳nonceStr:",//required,生成签名的随机字符串signature:",//required,signature,seeappendix1jsApiList:[]//required,需要使用的JS接口列表,所有JS接口列表见附录2});代码直接demo//加载微信JSSDKconfigwx.config({debug:false,appId:'APPID',timestamp:time,nonceStr:'NONCESTR',signature:'SIGNATURE',jsApiList:['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone','hideMenuItems','showMenuItems','hideAllNonBaseMenuItem','showAllNonBaseMenuItem','translateVoice','startRecord','stopRecord','onVoiceRecordEnd','playVoice','onVoicePlayEnd','pauseVoice','stopVoice','uploadVoice','downloadVoice','chooseImage','previewImage','uploadImage','downloadImage','getNetworkType','openLocation','getLocation','hideOptionMenu','showOptionMenu','closeWindow','scanQRCode','chooseWXPay','openProductSpecificView','addCard','chooseCard','openCard',]});//JSSDK报错wx.error(函数(res){console.log(location.href.split('#')[0]);});config中涉及的参数我们通过JSSDK官方demo提供数据。该演示已重新打包并发布在这里:classJssdk{private$appId;private$appSecret;publicfunction__construct($appId,$appSecret){$this->appId=$appId;$this->appSecret=$appSecret;}publicfunctiongetSignPackage(){$jsapiTicket=$this->getJsApiTicket();//注意URL必须是动态获取的,不能硬编码。$protocol=(!empty($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=='off'||$_SERVER['SERVER_PORT']==443)?“https://”:“http://”;$url="$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";$时间戳=时间();$nonceStr=$this->createNonceStr();//这里参数的顺序要按照key值的ASCII码升序排列$string="jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";$signature=sha1($string);$signPackage=array("appId"=>$this->appId,"nonceStr"=>$nonceStr,"timestamp"=>$timestamp,"url"=>$url,"signature"=>$signature,"rawString"=>$字符串);返回$signPackage;}privatefunctioncreateNonceStr($length=16){$chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$str="";对于($i=0;$i<$length;$i++){$str.=substr($chars,mt_rand(0,strlen($chars)-1),1);}return$str;}privatefunctiongetJsApiTicket(){//jsapi_ticket要全局存储和更新,以下代码以写入文件为例$data=json_decode($this->get_php_file("jsapi_ticket.php"));如果($data->expire_time