本文实例讲述了基于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程序设计有所帮助。