打算用php作一個微信公衆號管理平臺。用thinkphp框架javascript
教程上面是是應用下面會自動生成Lib文件夾。可是個人3.2.3自動生成目錄不同php
我修改了我項目文件夾下面的IndexController.class.php文件css
D:\phpStudy\WWW\weixin\Imooc\Home\Controller\IndexController.class.php java
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ $nonce = $_GET['nonce']; $token = 'imooc'; $timestamp=$_GET['timestamp']; $echostr = $_GET['echostr']; $signature = $_GET['signature']; $array = array($nonce,$timestamp,$token); sort($array); $str = sha1(implode($array)); if($str == $signature && $echostr){ //第一次接入weixin api 接口的時候 echo $echostr; exit; }else{ $this->reponseMsg(); } } public function show(){ echo 'imooc'; }
}
在瀏覽器中輸入如下地址,能夠返回數據thinkphp
http://localhost/weixin/index.php/Home/Index/showapi
微信中輸入 提交正常數組
http://www.zzcit.com/weixin/index.php/Home/Index/index瀏覽器
以上證實了微信接口接入正常 php框架
下面代碼則經過關注或者取消關注對用戶返回數據。微信開發之路正式開始 服務器
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { /* public function index(){ $this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微軟雅黑"; color: #333;font-size:24px} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px } a,a:hover{color:blue;}</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>歡迎使用 <b>ThinkPHP</b>!</p><br/>版本 V{$Think.version}</div><script type="text/javascript" src="http://ad.topthink.com/Public/static/client.js"></script><thinkad id="ad_55e75dfae343f5a1"></thinkad><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8'); }*/ public function __construct(){ } public function index(){ //得到參數 signature nonce token timestamp echostr $nonce = $_GET['nonce']; $token = 'imooc'; $timestamp = $_GET['timestamp']; $echostr = $_GET['echostr']; $signature = $_GET['signature']; //造成數組,而後按字典序排序 $array = array(); $array = array($nonce, $timestamp, $token); sort($array); //拼接成字符串,sha1加密 ,而後與signature進行校驗 $str = sha1( implode( $array ) ); if( $str == $signature && $echostr ){ //第一次接入weixin api接口的時候 echo $echostr; exit; }else{ $this->reponseMsg(); } } public function show(){ echo 'imooc'; } public function reponseMsg(){ //1.獲取到微信推送過來post數據(xml格式) $postArr = $GLOBALS['HTTP_RAW_POST_DATA']; //2.處理消息類型,並設置回覆類型和內容 /*<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> </xml>*/ $postObj = simplexml_load_string( $postArr ); //$postObj->ToUserName = ''; //$postObj->FromUserName = ''; //$postObj->CreateTime = ''; //$postObj->MsgType = ''; //$postObj->Event = ''; // gh_e79a177814ed //判斷該數據包是不是訂閱的事件推送 if( strtolower( $postObj->MsgType) == 'event'){ //若是是關注 subscribe 事件 if( strtolower($postObj->Event == 'subscribe') ){ //回覆用戶消息(純文本格式) $toUser = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $time = time(); $msgType = 'text'; $content = '歡迎關注咱們的微信公衆帳號'.$postObj->FromUserName.'-'.$postObj->ToUserName; $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content); echo $info; /*<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[你好]]></Content> </xml>*/ } } }}