首页 > 代码库 > 微信公众号开发入门心得(一)
微信公众号开发入门心得(一)
一、前言
为了快速了解微信公众号开发过程,我选择了php语言来进行微信公众号开发,选择php的原因有两点,一是网上有很多用php开放微信公众号的教程,可以减少学习成本;二是php也比较容易学习,学习门槛低。
学习php开发微信公众号,开发者需要有一点php基础。对于学过其他编程语言的童鞋,了解一些基本的php语法就可以开始了。我的 PHP基础学习笔记(一)
二、微信公众号开发的步骤
三、微信公众号开发步骤详解
+ 微信公众号开发入门可以参考 微信公众平台开发入门教程
教程中用的新浪云做的服务器,注册新浪云之后可以免费使用,让你学习微信公众号开发用足够了。
注:注册新浪云之后你的账户还需要认证,认证通过之后你才能拿创建的域名进行后面的服务器配置(认证时间1-2天)。
(先按上面的教程做一遍,做一遍之后有需要再来理解后面的原理)
+ 关于第二步验证服务器地址的有效性(成功接入,成为开发者)
1.原理:
2.代码实现:
<?php//1.TOKEN用于服务器配置 验证安全性define("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();//echostr随机数已经初始化就验证if (isset($_GET[‘echostr‘])) { //2.验证消息来自微信服务器 $wechatObj->valid(); // $wechatObj->definedItems();}else{ $wechatObj->responseMsg();}class wechatCallbackapiTest{ public function valid() { $echoStr = $_GET["echostr"]; //若确认此次GET请求来自微信服务器,则原样返回echostr参数内容,接入生效,成为开发者成功,否则接入失败。 if($this->checkSignature()){ header(‘content-type:text‘); echo $echoStr; exit; } } //检验signature private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); //将token、timestamp、nonce三个参数进行字典序排序 sort($tmpArr, SORT_STRING); //将三个参数字符串拼接成一个字符串进行sha1加密 $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); //开发者获得加密后的字符串与signature对比,标识该请求来源于微信 if( $tmpStr == $signature ){ return true; }else{ return false; } } //3.依据接口文档实现业务逻辑 public function responseMsg() { //获取微信推送过来的post数据(xml数据) $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ //simplexml_load_string() 函数把XML字符串载入对象中。 $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $picUrl = $postObj->PicUrl; $msgId = $postObj->MsgId; $mediaId = $postObj->MediaId; $event = strtolower($postObj->MsgType); $msgType = "text"; $msgType2 = "image"; $msgType3 = "music"; $msgType4 = "news"; $time = time(); //返回给用户文本类型数据 $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <Event><![CDATA[subscribe]]></Event> <FuncFlag>0</FuncFlag> </xml>"; //粉丝发送的文本信息 if($event == "text") { $this->responseText($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr, $keyword); } }else{ echo ""; exit; } } //给粉丝发送文本信息 public function responseText($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr,$keyword) { switch($keyword) { case ‘三围‘ : $contentStr ="我木有三围,你有吗?"; break; case ‘帅哥‘ : $contentStr ="我是萌妹子,好伐"; break; case ‘多高‘: $contentStr = "比你高~"; break; case ‘女神‘: $contentStr = "你也长的很好看啊~"; break; case ‘i love you‘: $contentStr = "I love you too 么么~"; break; case ‘这是什么‘: $contentStr = "这是我的个人公众号啊~和其他公众号类似"; break; case ‘?‘ : $contentStr = ‘送你一串时间:‘.date("Y-m-d H:i:s",time()); break; default : $contentStr = $keyword; break; } $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }
依据接口文档实现业务逻辑后面会单独总结,以上分享了入门教程,总结了接入成为开发者的原理,分享创造价值,如果你也是初学微信公众号开发,希望对你有点帮助。
微信公众号开发入门心得(一)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。