测试结果图

零、需要的知识

1、php基础知识和常用函数

2、XML格式和php对XML的处理

3、php面向对象相关知识

4、拥有服务器并配置好php所需运行的环境

一、开发前准备工作

1、注册微信公共平台账号,然后成为开发者,网址:https://mp.weixin.qq.com/

2、注册之后当然要创建一个公众号了,有三种(订阅号,服务号,企业号),本人选择的是订阅号

二、稍作修改

1、订阅号创建之后就可以做一些小事情了,比如别人关注之后,就可以群发一篇图文的文章了,如下图所示

2、然后还有其他的一些功能,自定义菜单啊,按关键字回复消息啊,什么的,都是操作性,看一遍就会了的东西

3、对公众号的资料稍作修改,完善一下,如下图所示,这是我的公众号设置

4、开发者验证

就是微信服务器发送加密的数据给你指定的服务器,你正确的响应,就可以验证开发者了,这样证明你拥有服务器,知道如何处理微信服务器给你发的数据和正确发送xml数据返回给微信服务器

下面是微信官方的php演示程序,本人修改了TOKEN,把它放在服务器指定文件夹下即可,当然你的服务器得正在跑着php解释程序和apache或nginx等

<?php
/*** wechat php test*///define your token
define("TOKEN", "jtahstu");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();class wechatCallbackapiTest
{public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($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 dataif (!empty($postStr)){$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(){$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;}}
}?>

5、其他的自己看看吧,讲重点

三、动真格的了,正式开发了

1、首先你得有个服务器,最好有个数据库,然后你就可以处理用户发送的消息了,这里的消息有文字,图片,视频,地理位置等等,本人恰巧有阿里云服务器,来配置下服务器信息

解释一下,url是你处理用户消息的php脚本,这是我的目录;第二个Token是一个自定义的秘钥,下面的是一个消息秘钥,随机生成即可;消息加密方式直接就采用明文吧,实际上这个会很容易被拦截,实用的话还是选安全模式为好

2、到这里用户就可以发送消息给服务器,然后服务器也能接收到数据了,下面就是返回数据。

下面代码去掉了验证部分,只保留了回复消息得函数

回复不同类型的消息,得按不同的xml格式,这里返回的都是text,其他的请参考官方文档

<?php
// define your token
define ( "TOKEN", "jtahstu" );$wechatObj = new wechatCallbackapiTest ();
$wechatObj->responseMsg (); // 调用回复消息的函数
class wechatCallbackapiTest {public function responseMsg() {// get post data, May be due to the different environments$postStr = $GLOBALS ["HTTP_RAW_POST_DATA"];$postObj = simplexml_load_string ( $postStr, 'SimpleXMLElement', LIBXML_NOCDATA );$fromUsername = $postObj->FromUserName;$toUsername = $postObj->ToUserName;$keyword = trim ( $postObj->Content );$time = time ();$msgType0 = $postObj->MsgType;if ($msgType0 == 'text') { // 输入的是文本消息$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 == "info") {$msgType = "text";$contentStr = "这是jtashtu的微信公众平台测试账号,欢迎关注!";$resultStr = sprintf ( $textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr );echo $resultStr;} else if (is_numeric ( $keyword )) {$msgType = "text";require 'menu.php';$contentStr = $res;$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;}} else if ($msgType0 == 'image') {//输入的是图片$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";$contentStr = "不要对我发黄图哦";$resultStr = sprintf ( $textTpl, $fromUsername, $toUsername, $time, $contentStr );echo $resultStr;}else{echo "";}}
}?>

还有一个外部程序menu.php,也就是防止写一起太混乱了

<?php
$menu0="      101、jtahstu的个人主页102、jtahstu的博客103、ACOJ201、软件创新实验室官网202、AKOJ -- 在线评测系统";
$menu00=array("101"=>"www.jtahstu.com","102"=>"www.jtahstu.com/blog","103"=>"www.jtahstu.com/acoj","201"=>"www.jtahstu.com/turing","202"=>"183.167.205.82:8081/JudgeOnline/userlist"
);
if(!empty($menu00["$keyword"])){$res=$menu00["$keyword"];
}else{$res=$menu0;
}
?>

本人就不细解释代码了,懂的人一看就懂,不懂的人也不是随便解释下就立马学会的

运行结果就如一开始那样

四、总结

以上我们就完成了一个简单的公众号回复消息得程序,很简单,还没有涉及数据库和其它的技术,毕竟先入门,然后慢慢挖掘。这个内涵还是有的,本人实际上并不怎么玩微信,感觉并没有QQ来着方便,公众号也用过,像安科小团啊什么的,本来是不会来接触这个的,但是大势所趋嘛,以后工作需要,学习一下。然后今天自己弄了一下,基本上也没看教程,看了下官方文档,网址:微信公众平台开发者文档 然后也没怎么看懂,实际上需要看的也不多。

下一次看能不能做一些更加深入的功能,什么查成绩,查课表,查这查那,还得再好好看看,加油。

--  作者jtahstu写于2016年1月20日晚的安科寝室,室外气温1℃,小雪

本文章首发在本人博客jtahstu的博客
链接 http://www.jtahstu.com/blog/post-70.html

欢迎关注

微信公共号开发简单入门相关推荐

  1. 微信公共号开发教程java版——获取用户基本信息(UnionID机制)(七)

    一:UnionID机制说明 官网详细介绍:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839 获取用户基本信息( ...

  2. python微信公众号开发教程_python微信公众号开发简单流程实现

    本文为大家分享了python微信公众号开发的简单过程,供大家参考,具体内容如下 网上有很多微信公众号的开发教程,但是都是好几年前的了,而且很多都是抄袭其他人的,内容几乎一模一样.真的无语了.只好自己总 ...

  3. 微信公共号开发教程java版——请求消息,响应消息及事件消息类的封装(三)

    一:封装请求信息 当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上. 各消息类型的推送XML数据包结构如下: 查看官网详细介绍 文本消息<xml&g ...

  4. 微信公众号开发系统入门教程(公众号注册、开发环境搭建、access_token管理、Demo实现、natapp外网穿透)

    由于图片图床问题,文章部分图片无法预览,暂时把该文章迁移至简书,给大家带来麻烦,抱歉了. 感兴趣的小伙伴可参考:https://www.jianshu.com/p/cc1b1050b5b4 Autho ...

  5. [转载]微信公众号开发 [01] 入门基本流程

    1.公众号的类别和注册 1.1 公众号类别 微信公众号目前有三种,订阅号.服务号.企业号,另外还有一种后来推出的和公众号带点关系的小程序.  订阅号.服务号和企业号的功能区别如下(更多详细区别戳参考链 ...

  6. 微信公众号开发系统入门教程之公众号与小程序、APP的区别

    一.概述 APP.公众号.小程序,这是现在最流行且实用的三类系统.最近准备给我们公司开发一个微信公众号,我昨天对微信公众号做了一个细致的了解,现在我就来和大家说一说他们的区别联系. 先说一下公众号与A ...

  7. 【微信公众号】微信公众号开发——Werobot入门指南

    本文目录 文章目录 Werobot简介 申请公众号 获取开发者ID 服务器部署 验证服务器有效性 实验效果 补充 Werobot简介 Werobot项目地址(作者:whtsky):链接 WeRoBot ...

  8. php微信公众号开发,入门篇(实现了关注公众号发送欢迎信息,发关键词自回复)

    大致效果如下图所示! 一.入门经历 首先我看的慕课网的视频,理论的东西还不错,可是跟着把代码敲一遍的时候就没懵逼了,除了验证服务器通过之外, 关注公众号根本不会自动回复,着急呀,再找其他的,敲完代码, ...

  9. 【转】微信公共号开发,提示“该公众号暂时无法提供服务,请稍后再试”,如何解决?...

    1. 要回复空字符串或者"success" 2. 而必须要注意的是,发送信息时请不要把调试信息也发出去了.微信的机制就是你网页上输出的信息都抓取下来,然后经过它服务器处理,而假如你 ...

  10. 微信公共号系列---快速整合微信多端页面授权之单点登录

    本人从事互联网项目java开发五年,会java,微信公共号开发,python,nodejs,爬虫等技术,对发票项目很熟悉,如果想交一个朋友请加QQ技术交流群@群主吧:131831533 .本文章来源于 ...

最新文章

  1. 定义一个复数类Complex,重载运算符+
  2. Java NIO示例:多人网络聊天室完整代码
  3. 宏观经济学自我学习与总结
  4. POJ3263-Tallest Cow【前缀和】
  5. java基础的知识_Java基础知识点(一)
  6. 计算机四年级测试题目,小学四年级下册数学总复习测试题(人教版)
  7. CC2430基础——串口测试实验
  8. 樊登读书赋能读后感_《赋能》读后感心得体会
  9. 曼陀罗花对女性有什么作用?
  10. 【Python爬虫】淘宝商品比价定向爬虫
  11. “字号”和“磅”的对应关系
  12. 如果一觉醒来已是光年之远
  13. hadoop启动命令 start-all.sh提示Permission denied问题解决
  14. 用Google来翻译你的网页
  15. 开始创业之路(MMORPG)
  16. 蓄电池内阻在线监测及告警方案(接入动环主机)
  17. Mathtype的安装、使用以及问题解决
  18. 区块链中的共识机制以及共识算法
  19. ESXI下的虚拟机磁盘扩容
  20. Shimeji开源桌宠代码学习(1)

热门文章

  1. 数据收发过程中的网络设备状态
  2. 计算机声卡驱动程序,教大家如何安装声卡驱动【详细步骤】
  3. 电脑版微信每天自动发送
  4. 寻址方式(立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址)
  5. 为什么计算机无法访问u盘,WIN10系统无法访问U盘怎么处理_win10电脑u盘无法访问拒绝访问如何解决-win7之家...
  6. 菜鸟版JAVA设计模式—从笔记本电源线看适配器模式
  7. 小学生数据分析《西游记》发现大BUG
  8. 高等数学学习笔记——第八十讲——球坐标下三重积分的计算
  9. 堆转存目录/tmp或日志目录/var/log可用空间小于 10.0 吉字节。
  10. 第七届中国云计算大会在京盛大开幕