微信公众号网页开发js配置服务端签名

微信公众号网页开发js配置服务端签名

本程序适用于thinkphp,原生php自己适当改下代码。S('wx_token')是thinkphp中的缓存函数。


		$appid="###";
		$secret="#";
		
	
		$token = S('wx_token');
		if (!$token) {
			$url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;
			$res = file_get_contents($url);
			$res = json_decode($res, true);
			$token = $res['access_token'];
			// 注意:这里需要将获取到的token缓存起来(或写到数据库中)
			// 不能频繁的访问https://api.weixin.qq.com/cgi-bin/token,每日有次数限制
			// 通过此接口返回的token的有效期目前为2小时。令牌失效后,JS-SDK也就不能用了。
			// 因此,这里将token值缓存1小时,比2小时小。缓存失效后,再从接口获取新的token,这样
			// 就可以避免token失效。
			// S()是ThinkPhp的缓存函数,如果使用的是不ThinkPhp框架,可以使用你的缓存函数,或使用数据库来保存。
			S('wx_token', $token, 3600);
		}
		
		
		$ticket = S('wx_ticket');
		if(!$ticket){
			$url2 = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$token&type=jsapi";
			$res = file_get_contents($url2);
			$res = json_decode($res, true);
			$ticket = $res['ticket'];
			// 注意:这里需要将获取到的ticket缓存起来(或写到数据库中)
			// ticket和token一样,不能频繁的访问接口来获取,在每次获取后,我们把它保存起来。
			S('wx_ticket', $ticket, 3600);
		
		}
		
		// 注意 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();
		
		$wxticket = $ticket;
		
		
		
		$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		$nonceStr = "";
		for ($i = 0; $i < 16; $i++) {
		  $nonceStr .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
		}
		
		  // 这里参数的顺序要按照 key 值 ASCII 码升序排序
		$string = "jsapi_ticket=$wxticket&noncestr=$nonceStr×tamp=$timestamp&url=$url";

		$signature = sha1($string);

		
		$data['token']=$token;
		$data['ticket']=$ticket;
		$data['url']=$url;
		$data['timestamp']=$timestamp;
		$data['nonceStr']=$nonceStr;
		$data['signature']=$signature;
		$data['wx']=$string;
		
		
		//api("100","成功",$data);
		echo '
		<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
		<script>
		  wx.config({
			debug: true,
			appId: "'.$appid.'",
			timestamp: "'.$timestamp.'",
			nonceStr: "'.$nonceStr.'",
			signature: "'.$signature.'",
			jsApiList: [
			  // 所有要调用的 API 都要加到这个列表中
			  \'chooseImage\'
			]
		  });
		  wx.ready(function () {
			// 在这里调用 API
			 alert("neng");
				
				wx.checkJsApi({
					jsApiList: [\'chooseImage\'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
					success: function(res) {
						alert("success");
						// 以键值对的形式返回,可用的api值true,不可用为false
						// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
					}
				});

		  });
		</script>
		';


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值