1. 程式人生 > >微信公眾號開發入門篇--使用TP框架配置

微信公眾號開發入門篇--使用TP框架配置

恰逢適時,吾於慕課網習得微信公眾賬號開發教程,遂吾寫下此文,留作筆記。

                               首先我們要去申請一個微信測試號,這個比較簡單,直接開啟 微信公眾者平臺,如圖1所示:

圖 1 申請微信測試賬號

接著我們掃一掃登陸之後會看到如圖2所示的介面:


圖 2 微信測試號登陸之後的介面

show一下我的程式碼目錄結構,見圖3:


不難發現,這是一個標準的Tp框架目錄結構,我這裡是用的是tp3.2.3版本。接著給大家展示一下原始碼:這裡我就直接展示我的控制器方法了,希望可以給大家的開發帶來參考意義。

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index()
    {
        $this->show('This is for Wechat','utf-8');
    }
    //使用者首次配置開發環境
    public function echoStr()
    {
    	$signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce 	   = $_GET["nonce"];
        $echostr   = $_GET['echostr'];		
	$token 	   = 'skye';
	$tmpArr    = array($token, $timestamp, $nonce);
	sort($tmpArr, SORT_STRING);
	$tmpStr    = implode( $tmpArr );
	$tmpStr	   = sha1( $tmpStr );
	if( $tmpStr == $signature && $echostr)
	{
		echo $echostr;
	}else{
		$this->reposeMsg();
	}
    }

    //回覆訊息
    public function reposeMsg()
    {
    	//1.接受資料
    	$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];	//接受xml資料
    	//2.處理訊息型別,推送訊息
	$postObj = simplexml_load_string( $postArr );	//將xml資料轉化為物件
	if( strtolower( $postObj->MsgType ) == 'event')
	{	
		//關注公眾號事件
		if( strtolower( $postObj->Event ) == 'subscribe' )
		{
			$toUser    =  $postObj->FromUserName;
			$fromUser  =  $postObj->ToUserName;
			$time 	   =  time();
			$msgType   =  'text';
			$content   =  '你終於來啦,等你等的好辛苦啊!可嘗試輸入關鍵字:教程,Tel,wechat,1等000';
			$template  =  "<xml>
					<ToUserName><![CDATA[%s]]></ToUserName>
					<FromUserName><![CDATA[%s]]></FromUserName>
					<CreateTime>%s</CreateTime>
					<MsgType><![CDATA[%s]]></MsgType>
					<Content><![CDATA[%s]]></Content>
					</xml>";
			echo sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
		}
	}

	//回覆文字資訊
	if( strtolower( $postObj->MsgType ) == 'text' && trim($postObj->Content)=='wechat')
	{
		$toUser = $postObj->FromUserName;
		$fromUser = $postObj->ToUserName;
		$arr = array(
			array(
				'title'=>'test',
				'description'=>"just so so...",
				'picUrl'=>'http://www.acting-man.com/blog/media/2014/11/secret-.jpg',
				'url'=>'http://www.imooc.com',
			),
			array(
				'title'=>'hao123',
				'description'=>"hao123 is very cool",
				'picUrl'=>'https://www.baidu.com/img/bdlogo.png',
				'url'=>'http://www.hao123.com',
			),
			array(
				'title'=>'qq',
				'description'=>"qq is very cool",
				'picUrl'=>'http://www.imooc.com/static/img/common/logo.png',
				'url'=>'http://www.qq.com',
			),
		);
		$template = "<xml>
			     <ToUserName><![CDATA[%s]]></ToUserName>
			     <FromUserName><![CDATA[%s]]></FromUserName>
			     <CreateTime>%s</CreateTime>
			     <MsgType><![CDATA[%s]]></MsgType>
			     <ArticleCount>".count($arr)."</ArticleCount>
			     <Articles>";
		foreach($arr as $k=>$v){
			$template .="<item>
				    <Title><![CDATA[".$v['title']."]]></Title> 
				    <Description><![CDATA[".$v['description']."]]></Description>
				    <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
				    <Url><![CDATA[".$v['url']."]]></Url>
				    </item>";
		}
			
		$template .="</Articles>
			     </xml> ";
		echo sprintf($template, $toUser, $fromUser, time(), 'news');
		//注意:進行多圖文傳送時,子圖文個數不能超過10個
		}else{
			switch( trim( $postObj->Content ) )
			{
				case 1:
					$content = '你輸入了個數字1';
					break;
				case Tel:
					$content = '12345678901';
					break;
				case '教程':
					$content = "<a href='www.imooc.com'>慕課網</a>";
					break;
				case '部落格':
					$content = "<a href='blog.abc.com'>測試微信</a>";
					break;
				default:
					$content = '升級打造中...';
					break;
			}
			$toUser 	=  $postObj->FromUserName;
			$fromUser 	=  $postObj->ToUserName;
			$time 		=  time();
			$msgType 	=  'text';
			$template   =  "<xml>
				        <ToUserName><![CDATA[%s]]></ToUserName>
				        <FromUserName><![CDATA[%s]]></FromUserName>
				        <CreateTime>%s</CreateTime>
			         	<MsgType><![CDATA[%s]]></MsgType>
			                <Content><![CDATA[%s]]></Content>
				        </xml>";
			echo sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
		}
    }
}

學習自:微信公眾號的開發