美文网首页
微信物联网云服务

微信物联网云服务

作者: 木木口丁 | 来源:发表于2017-04-02 00:16 被阅读0次

    微信物联网开发原理图:

    一、微信公众号与用户端的交互

    1.你需要的东西

    • 申请到一个微信公众号,申请地址点这里,其中,订阅号的申请门槛较低,不需要实名认证,开放给开发者的接口权限也基本够用。
    **我自己的公众号**
    • 自定义HTTP服务器
      1.本地服务器    需要申请公网IP和开通80端口,维护方便,但易受外界影响
      2.云服务器    由互联网公司提供,学生优惠性价比高
      3.Web服务器    例如百度的BAE和新浪的SAE,使用方便,本地需要安装Git或SVN
    • 开发的技术储备
        理论上来说,凡是能开发网站的语言都可以使用,如PHP、ASP、JSP(Java Serve Page)、ASP.NET、Node.JS、Python、Java等。由于PHP在服务器端开发十分普遍,微信官网提供的示例程序也是用PHP作为开发语言来介绍,因此,我选择PHP写代码。
        由于微信公众平台开发类似于网站开发,因此,将会使用到网站开发的相关技术知识,如HTTP协议、HTML、XML、JSON、数据库等。
        关于代码编辑器,有Sublime Text,Eclipse等。我使用的是Hbuilder。

    2.自定义服务器上的部署

    3.开发接口验证

    微信公众平台技术文档

    一个不错的PHP在线执行工具

    <?php
    define("TOKEN","weixin");       // 定义token
    $wechatObj = new wechat_php();  // 生成类实例
    $wechatObj->valid();        // 调用类的检验方法
    
    // 定义一个操作微信公众帐号的类
    class wechat_php
    {
        // 定义公用校验方法
        public function valid()
        {
            $echoStr = $_GET["echostr"];    // 获取GET请求的参数echostr
            
            // 校验signature
            if($this->checkSignature ()) {  // 调用校验方法
                echo $echoStr;
                exit;
            }
        }
        
        // 校验方法
        private function checkSignature ()
        {
            $signature = $_GET["signature"];
            $timestamp = $_GET["timestamp"];
            $nonce = $_GET["nonce"];
            $token = TOKEN;
            $tmpArr = array($token, $timestamp, $nonce);    // 将三个参数保存到数组中
            sort($tmpArr);      // 对数组中三个数据进行排序
            $tmpStr = implode( $tmpArr );       // 将数组中三个数据组成一个字符串
            $tmpStr = sha1( $tmpStr );      // 对字符串进行SHA-1散列运算
            
            if( $tmpStr == $signature ) {       // 计算结果与$signature相等
                return true;        // 通过验证
            } else {
                return false;       // 未通过验证
            }
        }
    }
    ?>
    

    4.开始编写代码进行开发

    例1:文本消息自动被动回复

    <?php
    $wechatObj = new wechat_php();
    $wechatObj->GetTextMsg();
    
    class wechat_php
    {
        public function GetTextMsg()
        {
            $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
            
            if (!empty($postStr))
            {
                $postStr = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUesrname = $postStr->FromUserName;
                $toUsername = $postStr->ToUserName;
                $msgType = $postStr->MsgType;
                $keyword = trim($postStr->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 (strtolower($msgType) != "text")
                {
                    $msgType = "text";
                    $contentStr = "我只接收文本信息!";
                }else{
                    if(!empty( $keyword ))
                    {
                        $msgType = "text";
                        $contentStr = "消息内容:" . $keyword . "\n";
                        $contentStr = $contentStr . "ToUserName:" . $toUsername . "\n";
                        $contentStr = $contentStr . "FromUserName:" . $fromUesrname;
                    }else{
                        $contentStr = "请输入关键字...";
                    }
                }
                $resultStr = sprintf($textTpl, $fromUesrname, $toUsername, $time, $msgType, $contentStr);
                ob_clean();
                echo $resultStr;
            }else{
                echo "";
                exit;
            }
        }
    }
    ?>
    

    相关文章

      网友评论

          本文标题:微信物联网云服务

          本文链接:https://www.haomeiwen.com/subject/qekmottx.html