首页 > 代码库 > 微信开发初探

微信开发初探

一、前期准备

  1、搭建服务器,创建应用,配置域名,

  技术分享

  2、申请公众号,开启开发者模式,进入公众平台测试账号,修改接口配置信息,URL和上面服务器的域名相同,Token自己随便设置。然后下面有测试号二维码,用手机扫一扫就可以关注进行测试。

  技术分享

  3、在开发者工具页面进入开发者文档,一切准备就绪。

二、在本地建一个文件夹,名字为1,在这个文件夹下,从服务器的svn仓库把代码checkout下来,新建index.php文件,开始写代码了。

<?php

    $WechatObj = new wechatCallbackapiTest($appID,$appsecret);

    if (!isset($_GET[‘echostr‘])) {
        
        $WechatObj ->action();
    }else{
        $WechatObj ->valid();
    }

class wechatCallbackapiTest {

    public function valid() {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }

    //加密签名,检验该请求是否来源于微信
    private function checkSignature(){
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode($tmpArr);
        $tmpStr = sha1($tmpStr);

        if($tmpStr == $signature){
            return true;
        }else{
            return false;
        }
    }

    //微信操作
    public function action(){
        echo ‘helloworld‘;
    }
}

三、以上代码是必须的,接下来就可以看着开发文档一步步进行啦。

  1、实现公众号自动回复。 

//自动回复
    public function response_msg(){
        $poststr = $GLOBALS[‘HTTP_RAW_POST_DATA‘];//接收用户信息
        $postobj = simplexml_load_string($poststr,‘SimpleXMLElement‘,LIBXML_NOCDATA);//将xml转换为对象
        $fromusername = $postobj ->FromUserName;//消息发送方
        $tousername = $postobj ->ToUserName;//消息接收方
        $type = $postobj ->MsgType;//消息类型
        $event = $postobj ->Event;//事件
        $event_key = $postobj ->Event_Key;
        $mid = $postobj ->MediaId;//媒体消息id
        $link = $postobj ->Url;//链接消息地址
        $latitude = $postobj ->Location_X;//位置的经度
        $longitude = $postobj ->Location_Y;//纬度

        $keyword = trim($postobj ->Content);//用户发送的关键字,去除多余空格
        $time = time();//消息接收时间

        //文本模板
        $textTpl = "
            <xml>
            <ToUserName><![CDATA[%s]]></ToUserName>
            <FromUserName><![CDATA[%s]]></FromUserName>
            <CreateTime>%s</CreateTime>
            <MsgType><![CDATA[text]]></MsgType>
            <Content><![CDATA[%s]]></Content>
            </xml>";
if($type == ‘text‘){
            switch ($keyword) {
                case ‘早上好‘:
                    $content = ‘早安,又是美好的一天!‘;break;
                case ‘晚安‘:
                    $content = ‘美好的一天过去了,晚安,你和世界!‘;break;
                default:
                    $content = ‘熊孩子,你好呀!‘;break;
            }

        }elseif($type == ‘event‘){
            switch ($event) {
                case ‘subscribe‘:
                    $content = ‘欢迎关注,带你进入奇妙有趣的微信公众号开发之旅‘;break;
                case ‘unsubscribe‘:
                    $content = ‘欢迎再次关注!‘;break;
            }
        }else{
            switch ($type) {
                case ‘image‘:
                    $content = ‘image‘.$mid;break;
                case ‘voice‘:
                    $content = ‘voice‘.$mid;break;
                case ‘music‘:
                    $content = ‘music‘.$mid;break;
                case ‘video‘:
                    $content = ‘video‘.$mid;break;
                case ‘location‘:
                    $content = $latitude.‘,‘.$longitude;break;
                case ‘link‘:
                    $content = $link;break;
            }

        }
        $result = printf($textTpl,$fromusername,$tousername,$time,$content);
        echo $result;
    }

  2、上面公众号自动回复的全是文本消息,下面看看还有些什么类型的消息。

  

  

微信开发初探