美文网首页
PHP微信公众号开发入门(一)

PHP微信公众号开发入门(一)

作者: 无聊的电风扇 | 来源:发表于2017-11-11 14:20 被阅读0次

    1.首先你得有个公众号

    打开微信公众平台,注册一个公众号。

    2.你得有个服务器或者虚拟主机

    简单开发的话可以在阿里云或者腾讯云什么的买个虚拟主机,第一次才几块钱一年

    3.开启开发者模式

    微信公众平台有两个模式,一个是人人都可以做的傻瓜模式,还有一个是开发者模式。可以通过代码来实现复杂的功能,两个模式你只能选一个,所以在“高级功能”菜单开启开发者模式。

    4.配置一下接口信息

    点击“基本配置”,而后输入自己的信息。
    URL:开发者应用访问的地址,目前只支持80端口,比如http://www.demo.com/weixin/index.php
    TOKEN:随便写。
    然后建个index.php,上传到http://www.demo.com/weixin/
    这个目录下,代码如下,最后点提交完成验证。

    <?php
    define("TOKEN", "suibianxie"); //TOKEN值
    $wechatObj = new wechat();
    $wechatObj->valid();
    class wechat {
      public function valid() {
        $echoStr = $_GET["echostr"];
        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 );
        if( $tmpStr == $signature ) {
          return true;
        } else {
          return false;
        }
      }
    }
    ?>
    

    这个就是微信为了检查你的URL是否正确用的,代码不用看,改改token就行了。验证完之后就可以把代码删掉了。

    5.开始开发了

    当我们的用户或者说粉丝像公众平台发信息的时候,微信的服务器会post给我们开发者一段这样的xml数据

    <xml>
    <!--开发者微信号-->
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <!--发送方帐号(OpenID)-->
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <!--消息创建时间 (整型)-->
    <CreateTime>12345678</CreateTime>
    <!--消息类别 (text文本消息)-->
    <MsgType><![CDATA1]></MsgType>
    <!--消息内容-->
    <Content><![CDATA[content]]></Content>
    <!--消息ID (64位整型)-->
    <MsgId>1234567890123456</MsgId>
    </xml>
    

    而当我们用代码处理完用户发来的数据之后,还要在返回给微信一段这样的xml

    <xml>
    <!--接收方帐号(OpenID)-->
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <!--开发者微信号-->
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <!--消息创建时间 (整型)-->
    <CreateTime>12345678</CreateTime>
    <!--消息类别 (text文本消息)-->
    <MsgType><![CDATA1]></MsgType>
    <!--回复消息内容-->
    <Content><![CDATA[content]]></Content>
    <!--星标操作(位0x0001被标志时 星标刚收到的消息)-->
    <FuncFlag>0</FuncFlag>
    </xml>
    

       除了文本信息,微信公众平台还支持用户发送图片,位置,链接,音乐,视频等等,而开发者同样可以向微信平台回复音乐,图文等消息。这些类型不同的数据,开发者接收到和需要返回的xml数据都不太一样,可以查看官方文档或者在我的下一篇文章中学习。
       这篇文章中只介绍一下简单的文本回复,先上代码

    <?php
      $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据
      //用SimpleXML解析POST过来的XML数据
      $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
      $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
      $toUsername = $postObj->ToUserName; //获取接收方账号
      $keyword = trim($postObj->Content); //获取消息内容
      $masType = $postObj->MsgType;//获取消息类型
      $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>"; 
        
        $msgType = "text"; //消息类型
        $contentStr = '您发送的是'.$keyword;
        $resultStr = sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
        echo $resultStr;
        
    ?>
    

    好了,这样用户发送文本消息之后就会接收到他刚才发送的文本,这只是一个简单的demo,你可以根据自己的需求更改代码。这个时候再把这个文件上传到你的服务器上,微信公众号开发第一步就已经完成了。

    相关文章

      网友评论

          本文标题:PHP微信公众号开发入门(一)

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