微信公众号开发第一天---接入

微信公众号开发

微信相关介绍

什么是微信

是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序。 2018 年 3 月活跃用户超过 10 亿。

什么是微信公众号

微信公众平台于2012年08月23日正式上线,曾命名为“官号平台”和“媒体平台”,创造更好的用户体验,形成一个不一样的生态循环。微信公众号就是公众平台的一个账号。

image

微信公众号的作用

  • 对于个人来讲,公众号是一个获取资讯的窗口,也是一种享受服务的窗口。
  • 对于企业来讲,公众号是一个宣传营销渠道,也是一种服务获客渠道。
  • 对于微信来讲,公众号提高了用户和微信的粘度。

微信公众号的特点

  • 微信用户体量大
  • 免安装
  • 易于传播

为什么要学习公众号开发

  1. 企业需要。
  2. 个人需要。

公众号开发的原理

公众号开发的流程

  1. 申请公众号
  2. 搭建 HTTP 服务
  3. 入口文件编写
  4. 开发配置

1. 申请公众号

申请地址是 https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN

公众号的区别

群发消息数量申请资质微信支付权限
订阅号 一天一条 个人和企业均可
服务号 一个月四条 必须是企业 微信认证后可以获得

2. 搭建 HTTP 服务

  1. 云应用
  2. 云服务器
  3. 内网映射

3. 入口文件编写

<?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)){
                /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
                   the best way is to check the validity of xml by yourself */
                libxml_disable_entity_loader(true);
                  $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()
    {
        // you must define TOKEN by yourself
        if (!defined("TOKEN")) {
            throw new Exception('TOKEN is not defined!');
        }
        
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
                
        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        // use SORT_STRING rule
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        
        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }
}

?>

4. 开发配置

配置位置 微信后台 -> 开发 -> 基本配置

原文地址:https://www.cnblogs.com/cxfs/p/11540415.html