微信开发入门

微信可以说是目前最火爆的社交工具之一了。微信的公众号、服务号、企业号的推出也大大的方便了用户,也催生了一批微信开发者,今天开始,我们就来一起开始学习微信开发吧!


第一节我们先来用微信完成一个简单的消息收发功能。


第一步:开启开发者模式


首先我们需要去注册一个微信公众号。https://mp.weixin.qq.com

进入公众号后,在左侧的导航栏找到   开发 -> 基本配置 。


启用服务器配置,URL填写自己的域名,Token默认填写weixin即可。

注意:开启开发者模式后,自动回复和自定义菜单功能 就不能使用了,但是我们通过接口实现这些功能。



第二步:验证消息的确来自微信服务器

当我们提交服务器配置时,微信服务器将发送GET请求到填写的服务器地址URL上,里面包含了验证的参数。我们可以在填写的URL中填写一下代码进行服务器验证:

<?php
$echoStr = $_GET["echostr"];

$signature = $_GET["signature"];

$timestamp = $_GET["timestamp"];

$nonce = $_GET["nonce"];


$token = 'weixin';   //服务器配置中填写的token

$tmpArr = array($token, $timestamp, $nonce);

sort($tmpArr, SORT_STRING);

$tmpStr = implode( $tmpArr );

$tmpStr = sha1( $tmpStr );


if( $tmpStr == $signature ){

echo $echoStr;

}

验证成功后就可以开启微信开发之旅了。




第三步:简单的获取当前时间以及获取当前地理位置。

<?php  
$wechatObj = new wechatCallbackapiTest();  
  
$wechatObj -> responseMsg();  
  
class wechatCallbackapiTest  
{  
       public function responseMsg()  
    {  
        //接收用户的消息  
        $postStr = file_get_contents("php://input");  
        //判断是否接收到有效消息  
        if (!empty($postStr))
        {  
            //解析用户的xml  
            libxml_disable_entity_loader(true);  
            $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);  
                     //消息发送者  
            $fromUsername = $postObj->FromUserName;  
                     //消息接收人  
            $toUsername = $postObj->ToUserName;  
            //消息内容  
                     $keyword = trim($postObj->Content);  
            //消息的类型  
            $msgType=$postObj->MsgType;  
            //当前时时间戳  
                     $time = time();  
                     //如果用户发送的类型是地址位置  
            if($msgType=="location")
            {  
                $msgType = "text";  
                $contentStr="您的所在位置的经度为".$postObj->Location_Y.",纬度为:".$postObj->Location_X."地点是:".$postObj->Label;  
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);  
                echo $resultStr;  
            }  
                     //如果用户发送的是语音  
            if($msgType=='voice')  
            {  
                $msgType = "text";  
                             //将语音转为文字  
                $contentStr=$postObj->Recognition;  
                $this->sendNews($contentStr,$fromUsername,$toUsername,$time);  
            }  
            if(!empty($keyword))  
            {  
                $this->sendNews($keyword,$fromUsername,$toUsername,$time);  
            }  
        }
        else
        {  
            echo "";  
            exit;  
        }  
    }  

    function sendNews($keyword,$fromUsername,$toUsername,$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($keyword == "时间")  
        {  
            $msgType = "text";  
            $contentStr= "当前的时间为".date("Y年m月d日 H时i分s秒",time());  
            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);  
            echo $resultStr;  
        }  
        else  
        {  
            $msgType = "text";  
            $contentStr= $keyword;  
            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);  
            echo $resultStr;  
        }  
    }  
} 



 

 

以上的代码实现了当用户发送地理位置是,回复用户当前的经纬度以及所在地信息;当用户发送语音时,将用户的语音转为文字并调用回复消息的函数;当用户发送的是文本时,调用回复消息函数;当用户发送文字 时间 或者语音发送 时间 时,会回复当前时间。

关于微信的消息类型以及各个参数可以参考:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453&token=&lang=zh_CN



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值