本文实例讲述了基于thinkPHP3.2实现微信接入及查询token值的方法。分享给大家供大家参考,具体如下:
1.在con.fig文件里面配置TOKEN,APPID,APPSECRET值
2.控制器WeixinController代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
<?php /** * 微信父类控制器 * @author Songle * */ namespace Weixin\Controller; use Think\Controller; class WeixinController extends Controller { private $last_time =null; private $appid =null; private $appsecret =null; function __construct(){ parent::__construct(); $token =C( 'TOKEN' ); $this ->appid=C( 'APPID' ); $this ->appsecret=C( 'APPSECRET' ); //获取微信服务器GET请求的4个参数 $signature = I( 'signature' ); $timestamp = I( 'timestamp' ); $nonce = I( 'nonce' ); $echostr = I( 'echostr' ); if (! empty ( $echostr ) && ! empty ( $signature ) && ! empty ( $nonce )) { //定义一个数组,存储其中3个参数,分别是timestamp,nonce和token $tempArr = array ( $nonce , $timestamp , $token ); //进行排序 sort( $tempArr ,SORT_STRING); //将数组转换成字符串 $tmpStr = implode( $tempArr ); //进行sha1加密算法 $tmpStr = sha1( $tmpStr ); //判断请求是否来自微信服务器,对比$tmpStr和$signature if ( $tmpStr == $signature ) { echo $echostr ; } exit (); } } /** * 获取tooken值 */ public function getTooken(){ $this ->last_time = 1448012924; $access_token = "填写上一次的token值" ; //需要替换成自己的 if (time() > ( $this ->last_time + 7200)) { //GET请求的地址 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}" ; $access_token_Arr = $this ->https_request( $url ); $this ->last_time = time(); return $access_token_Arr [ 'access_token' ]; } return $access_token ; } //https请求(支持GET和POST) public function https_request( $url , $data = null) { $ch = curl_init(); curl_setopt( $ch ,CURLOPT_URL, $url ); curl_setopt( $ch ,CURLOPT_RETURNTRANSFER,1); if (! empty ( $data )) { curl_setopt( $ch ,CURLOPT_POST,1); //模拟POST curl_setopt( $ch ,CURLOPT_POSTFIELDS, $data ); //POST内容 } $outopt = curl_exec( $ch ); curl_close( $ch ); $outopt = json_decode( $outopt ,true); return $outopt ; } } |
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。