没想到微信接口的突破口实在JS分享这里,今天搞定了这个分享。
1)PHP端需要获取signature的值,因接口调用次数有限制,所以加入了mem存入取出的值,7100秒后过期:
$shaMem = \'shaTicket\'; //!$strMem = MemHelper::Get($shaMem) if(!$strMem = MemHelper::Get($shaMem)){ //获取相关数据star $str = curl_https("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=微信平台获取&secret=微信平台获取"); $str = json_decode($str,true); $access_token = $str[\'access_token\']; $str = curl_https("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi"); $str = json_decode($str,true); $ticket = $str[\'ticket\']; $str = "jsapi_ticket=".$ticket."&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=具体网址"; $strMem = sha1($str); //获取相关数据end MemHelper::Set($shaMem, $strMem, 7100); } function curl_https($url, $data=array(), $header=array(), $timeout=30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); return $response; }
2)页面底部加入JS代码,前期测试建议打开debug:
wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: \'微信后台获取\', // 必填,公众号的唯一标识 timestamp: 1414587457, // 必填,生成签名的时间戳 nonceStr: \'Wm3WZYTPz0wzccnW\', // 必填,生成签名的随机串 signature: \'<?php echo $strMem;?>\',// 必填,签名,见附录1 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\' ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ wx.onMenuShareAppMessage({ title: \'测试标题\', // 分享标题 desc: \'测试描述……\', // 分享描述 link: \'具体网址\', // 分享链接 imgUrl: \'图片网址\', // 分享图标 type: \'\', // 分享类型,music、video或link,不填默认为link dataUrl: \'\', // 如果type是music或video,则要提供数据链接,默认为空 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); wx.onMenuShareTimeline({ title: \'测试标题\', // 分享标题 link: "具体网址", imgUrl: "图片网址", // 分享图标 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } }); });