通过微信浏览的手机页面,如果想实现微信自带的一些功能的话,比如扫一扫,是需要一些前提条件的。
1、一个认证的公众号,不管是订阅号还是服务号,前提都是要验证。
2、通过后台获取到appid和appsecret两个ID,获取 tonken和ticket,然后通过 ticket、noncestr、time_str(时间戳)、url四个参数相加,然后sha1加密一下,配置到wx.config即可。
tonken的获取次数是有限制的,好像是2000次每天,并且tonken有效期只有两个小时,所以就注定你要不停的调用,但是又不能调用太多次。。腾讯就是这么变态。
这里通过php代码,实现了每6000秒调用一次微信的tonken接口,每天84600秒,总共每天调用 84600/6000 约等于每天15次吧。
定义一个函数,用于每次去获取参数:
/**
* 重新刷新token
* @return string
*/
function reflash(){
//
$url1 = 'https://api.weixin.qq.com/cgi-bin/token?appid={替换你自己的APPID}&secret={替换你自己的SECRET}&grant_type=client_credential';
$str1 = file_get_contents($url1);
$str1_json = json_decode($str1);
$access_token = $str1_json->access_token;
$url2 = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=' . $access_token . '';
$str2 = file_get_contents($url2);
$str2_json = json_decode($str2);
$ticket = $str2_json->ticket;
///
$noncestr = '{这个参数是你自己定义的,越乱越好,随便写}';
$time_str = time(); //当前时间
//
$url = 'http://{你自己的URL地址,这个URL要在微信公众号后台中添加的JS安全域中。}/';
///
$sgin_array = array(
'ticket' => $ticket,
'noncestr' => $noncestr,
'time_str' => $time_str,
'url' => $url
);
file_put_contents('/home/wwwroot/default/config.txt', json_encode($sgin_array)); //我这里以文件的形式存放到服务器的本地路径以供读取
return $sgin_array;
}
通过读取config.txt文件,每6000秒判断一次。
if (is_file('/home/wwwroot/default/config.txt')) {
$config_html = file_get_contents('/home/wwwroot/default/config.txt');
$configs = json_decode($config_html, true);
$check_time = $configs['time_str'];
if (time() - $check_time > 6000) {
$configs = reflash();
}
$sign_str = 'jsapi_ticket=' . $configs['ticket'] . '&noncestr=' . $configs['noncestr'] .
'×tamp=' . $configs['time_str'] . '&url=' . $configs['url'] . '';
} else {
$configs = reflash();
$sign_str = 'jsapi_ticket=' . $configs['ticket'] . '&noncestr=' . $configs['noncestr'] .
'×tamp=' . $configs['time_str'] . '&url=' . $configs['url'] . '';
}
wx.config配置:
wx.config({
debug: false,
appId: '{替换你自己的APPID}',
timestamp: '<?php echo $configs['time_str']; ?>',
nonceStr: '<?php echo $configs['noncestr']; ?>',
signature: '<?php echo sha1($sign_str); ?>',
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
]
});
关键代码就这么多了,没什么高深的东西。给菜鸟准备的,需要的时候直接拿去用吧。。
参数资料:
微信公众账号开发入门 - snandy - 博客园
http://www.cnblogs.com/snandy/archive/2015/10/21/4892122.html