1. 程式人生 > >微信公共平臺入門

微信公共平臺入門

以下是抄TX的程式碼。

<?php

/**
 * wechat php test
 */
define('TOKEN', '###你的token');

$wechatObj = new wechatCallbackapiTest();

if (isset($_GET['echostr']))
{
    $wechatObj->valid();
}
else
{
    $wechatObj->responseMsg();
}

class wechatCallbackapiTest {

    public function valid()
    {
        $echoStr = $_GET['echostr'];

        //valid signature , option
        if ($this->checkSignature())
        {
            echo $echoStr;
            exit;
        }
    }

    public function responseMsg()
    {
        //get post data, May be due to the different environments
        // $postStr = $GLOBALS[HTTP_RAW_POST_DATA']; 
        // $GLOBALS 比 php://input 慢點吧
        $postStr = file_get_contents('php://input', 'r');
        //extract post data
        if ( ! empty($postStr))
        {

            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;
            $toUsername = $postObj->ToUserName;
            $keyword = trim($postObj->Content);
            $time = time();
            $time = $postObj->CreateTime;
            $textTpl = '<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            <FuncFlag>0</FuncFlag>
                            </xml>';
            if ( ! empty($keyword))
            {
                $msgType = 'text';
                $contentStr = 'Welcome to wechat world!';
                printf(
                        trim($textTpl)
                        , trim($fromUsername)
                        , trim($toUsername)
                        , trim($time)
                        , trim($msgType)
                        , trim($contentStr));
            }
            else
            {
                exit('Input something...');
            }
        }
        else
        {
            exit('');
        }
    }

    private function checkSignature()
    {
        $signature = $_GET['signature'];
        $timestamp = $_GET['timestamp'];
        $nonce = $_GET['nonce'];

        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);

        if (sha1(implode($tmpArr)) === $signature)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

}


本人對TX的所有產品沒有什麼感情。要說有感情,只能說除了無語,還是無語。

嗯,今天早上我把QQ刪了,結果立馬有人給公司打電話推企業QQ。你說QQ娛樂功能多,我想說企業內部聯絡用skype不就行了。和外面聊QQ用 WebQQ也行啊。當然對推銷的人說謊或許是現代人的本能吧。


C盤系統也是QQ的毒。

另外不喜歡360,因為它不讓刪它自己。而且我一個朋友的電腦,明明沒主動安360,卻有了。

我想說,如果不刪掉本地的qq(當然,還要用WebQQ)。——上圖吧——


    微信的公眾平臺需要使用mvc,由顧客的最初的選擇決定那個Controller,並靠這個Controller裡的函式來回到上一介面之類的操作,感覺是職責鏈模式。

    因為微信這東西的介面url是固定的,用現成的web框架來mvc是有些困難的,是為Controller是單例的,所以不能建立同繼承父類的子Controller。

    所以我用的是靜態類加引用Controller來實現。現在想來,用框架的M,再自己寫個簡單的VC,在執行效率上應該會比較好。

    因為我的工作有一塊是要維護原來一個專案的yii程式碼,最近這個微信的專案就用了yii框架。這個簡單架子的程式碼在——

http://code.taobao.org/p/yii_wx/src/