一、微信JS-SDK
1. 获得Access Token
2. 获取jsapi_ticket
以上方法不再写 看之前写的博客里有介绍的
2. 获得前台参数 方法
function getSignPackage($appid,$appsecret) {
$access_token = getAccessToken($appid,$appsecret);
$jsapiTicket = getJsapi_ticket($access_token);
// 注意 URL 一定要动态获取,不能 hardcode.
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$timestamp = time();
$nonceStr = 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" => $string
);
return $signPackage;
}
function createNonceStr($length = 16) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
return $str;
}
前台页面代码 搞定
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
wx.config({
debug: false,
appId: '{$signPackage["appId"]}',
timestamp: {$signPackage["timestamp"]},
nonceStr: '{ $signPackage["nonceStr"]}',
signature: '{$signPackage["signature"]}',
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'checkJsApi',
'openLocation',
'getLocation',
'onMenuShareTimeline',
'onMenuShareAppMessage'
]
});
</script>
wx.ready(function () {
//分享至朋友
wx.onMenuShareAppMessage({
title: '{$news['Title']}',
desc: '{$news['Description']}',
link: '{$news['Url']}',
imgUrl: '{$news['PicUrl']}',
trigger: function (res) {
// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用 ajax的回包会还没有返回
// alert('用户点击发送给朋友');
},
success: function (res) {
// alert('已分享');
},
cancel: function (res) {
// alert('已取消');
},
fail: function (res) {
// alert(JSON.stringify(res));
}
});
});
微信内的一些相关参数 配合官方手册
微信开发者文档
jsApiList://相关参数
'checkJsApi', //判断当前客户端版本是否支持指定JS接口
'openLocation',//
'getLocation',//
'onMenuShareTimeline',//获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
'onMenuShareAppMessage',//获取“分享给朋友”按钮点击状态及自定义分享内容接口
'onMenuShareQQ',//获取“分享到QQ”按钮点击状态及自定义分享内容接口
'onMenuShareWeibo',//获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口
'onMenuShareQZone',//获取“分享到QQ空间”按钮点击状态及自定义分享内容接口
'chooseImage',//拍照或从手机相册中选图接口
'uploadImage',//上传图片接口
'previewImage',//预览图片接口
'downloadImage',//下载图片接口
'startRecord',//开始录音接口
'stopRecord',//停止录音接口
'onVoiceRecordEnd',//监听录音自动停止接口
'playVoice',//播放语音接口
'pauseVoice',//暂停播放接口
'stopVoice',//停止播放接口
'onVoicePlayEnd',//监听语音播放完毕接口
'uploadVoice',//上传语音接口
'downloadVoice',//下载语音接口
'translateVoice',//识别音频并返回识别结果接口
'getNetworkType',//获取网络状态接口
'openLocation',//使用微信内置地图查看位置接口
'getLocation',//获取地理位置接口
'startSearchBeacons',// 摇一摇周边 开启查找周边ibeacon设备接口
'stopSearchBeacons',//关闭查找周边ibeacon设备接口
'onSearchBeacons',//监听周边ibeacon设备接口
'hideOptionMenu',//隐藏右上角菜单接口
'showOptionMenu',//显示右上角菜单接口
'hideMenuItems',//批量隐藏功能按钮接口
'showMenuItems',//批量显示功能按钮接口
'hideAllNonBaseMenuItem',//隐藏所有非基础按钮接口
'showAllNonBaseMenuItem',//显示所有功能按钮接口
'scanQRCode',//微信扫一扫 调起微信扫一扫接口
'openProductSpecificView',//微信小店 跳转微信商品页接口