首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于 IBM Bluemix 开发微信公共账号应用(2)

基于 IBM Bluemix 开发微信公共账号应用(2)

  • 在微信公众平台接口中,设置对应的 URL 及令牌。
    图 7
  • 设置一个基于 Bluemix 的网址在 URL 中设置网址,注意此处的形式必须与前面设置的一致。
  • 设置微信公众平台应用的令牌(token)设置一个令牌信息,该令牌信息是由自己指定的,一般采用特别的字符进行,以保证安全性。
  • 下载微信公众平台的范例程序,笔者采用 PHP 语言,对该程序进行修改,设置令牌(token)等相关信息。开发者可以在微信公众平台开发者文档中下载 DEMO 文件。图 8清单 1
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <?php
    /**
      * wechat php test
      */

    //define your token
    define("TOKEN", "weixin");
    $wechatObj = new wechatCallbackapiTest();
    $wechatObj->valid();

    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"];

            //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();
                    $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!";
                        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,
                                             $msgType, $contentStr);
                        echo $resultStr;
                    }else{
                        echo "Input something...";
                    }

            }else {
                echo "";
                exit;
            }
        }
             
        private function checkSignature()
        {
            $signature = $_GET["signature"];
            $timestamp = $_GET["timestamp"];
            $nonce = $_GET["nonce"];   
                     
            $token = TOKEN;
            $tmpArr = array($token, $timestamp, $nonce);
            sort($tmpArr, SORT_STRING);
            $tmpStr = implode( $tmpArr );
            $tmpStr = sha1( $tmpStr );
             
            if( $tmpStr == $signature ){
                return true;
            }else{
                return false;
            }
        }
    }

        ?>




返回列表