微信物联网云服务

微信物联网开发原理图:

微信物联网云服务_第1张图片

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

1.你需要的东西

  • 申请到一个微信公众号,申请地址点这里,其中,订阅号的申请门槛较低,不需要实名认证,开放给开发者的接口权限也基本够用。
    微信物联网云服务_第2张图片
微信物联网云服务_第3张图片
**我自己的公众号**
  • 自定义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.自定义服务器上的部署

微信物联网云服务_第4张图片

3.开发接口验证

微信物联网云服务_第5张图片

微信公众平台技术文档

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

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:文本消息自动被动回复

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 = "
                        
                        
                        %s
                        
                        
                        0
                        ";
            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;
        }
    }
}
?>

你可能感兴趣的:(微信物联网云服务)