微信公众号简易入门教程
前言
在我学习公众号开发,也有一段时间了,其中也做过两个公众号项目,最近有友人向我请教公众号该如何学习,特以此篇文章总结一下,同时也巩固一下我的知识(套路)。
准备环境
系统:*nix(Ubuntu、OS X,不推荐windows)
软件:apache(httpd)、mysql、php7+、composer、phpstorm
库:thinkcmf、overtrue/wechat
参阅文档
学习公众号开发建议参阅以下文档。
微信公众号官方技术文档
EasyWechat开发文档
ThinkCmf5开发手册
库的介绍
本人推荐使用ThinkCmf5+EasyWechat进行开发。
ThinkCmf
ThinkCmf是基于ThinkPHP的一个内容管理系统框架,在公众号开发里,主要担当提供后台管理系统的角色。
ThinkPHP基本知识
MVC设计模式
由于ThinkPHP是一个使用MVC设计思想编写的框架,所以我们必须要对其有简单的了解。
- 模型(Model)
与数据进行交互。
在tp里,模型主要用于对数据库进行增删改查。
- 视图(View)
提供用户界面显示。
在tp里,视图(模板)用于对html进行渲染,即按模板的格式注入数据,生成页面。
- 控制器(Controller)
逻辑交互的核心,处理视图与模型之间的交互。
在tp里,控制器处理用户请求的参数,调用模型获取数据,处理数据,注入到模版,返回页面显示结果。
其它结构
ThinkPHP除了MVC这三个核心内容,还在此基础上作出了一些扩展。
- 服务(Service)
对模型进行封装,比如调用模型,获取分页显示等逻辑业务操作。
- Api
对模型以及服务进行封装,比如检查用户权限、遍历用户文件等复杂操作。
- 验证器(Validate)
对用户请求参数进行验证,比如邮箱格式、手机号格式、是否必填字段等。
一些基本的方法
- Controller类
- Controller类对网页所需的大部分基本都进行了封装,使用起来比起原生方式难度极大的降低。
success(返回成功信息)
error(返回错误信息)
assign(向模板注入数据)
fetch(渲染模板)
- Model类
- Model类基本上就是对SQL语句进行了封装,使用起来比直接写SQL语句更安全、更方便。
paginate(分页显示)
save(插入数据或更新数据)
find(查找单行数据)
alias(定义表别名)
join(联表查询)
order(数据排序)
ThinkCmf基本知识
在了解tp的情况下,使用ThinkCmf进行开发,主要要了解以下关键点。
各场景下的控制器
不同场景,需要继承的控制器也不一样,你也可以选择继承tp的控制器基类,以下为Cmf实现的几个主要控制器。
- HomeBaseController
这是一个前台页面控制器,默认会往模板注入网站信息参数。
- UserBaseController
这是一个用户页面控制器,继承HomeBaseController的所有特性,而且用户必须登陆才能访问其页面。
- AdminBaseController
这是一个管理后台页面控制器,必须为管理员登陆时才能访问其页面。
前端开发
ThinkCmf使用了BootStrap3进行开发,详情请参阅以下文档:
BootStrap - 菜鸟教程
jQuery - w3school
EasyWeChat
这是一个PHP的微信第三方SDK,把微信各种繁琐的操作都封装的十分的友好,所以推荐使用此库。
安装
使用composer进行安装。
1 |
composer require overtrue/wechat -vvv |
- 如果缺少php扩展,请使用各系统下的包管理软件进行安装。
微信对接
官方对接的方法很麻烦,主要就是用请求的几个参数,计算一个特定的值,返回给微信服务器,但是这一步EasyWechat已经帮我们做好了。
对接准备
- 公众号(测试号)
微信公众平台
微信公众平台-测试号
- 注册完成后,得到appid、secret,设置好token。
- 一个带有80端口的公网服务器
- 土豪入口:阿里云
买个ECS云服务器,在上面部署。
- 穷逼入口:花生壳
交个端口映射费,下载花生壳,映射到你的开发环境。
对接
请看EasyWechat的文档,那里写的很详细!!!
传送门 - 对接操作
这里要注意的是,ThinkPHP不能直接调用response进行返回值,要通过response取得内容,然后通过echo输出、exit,或是通过die输出内容,因为thinkphp在调试模式会对页面注入一些多余的内容。方法如下:
1 2 3 4 5 6 |
$response = $app->server->serve(); // 方法1 die($response->getContent()); // 方法2 echo $response->getContent(); exit(); |
消息处理
消息处理的流程一般为:
用户操作->提交给微信服务器->转发到我们的服务器->处理数据,返回给微信服务器->返回给用户
EasyWechat使用挂接事件的方式处理事件,详情参考文档。
传送门 - 挂接事件
消息类型
在EasyWechat,消息分为两部分,一是Event,二是用户消息(Event以外)。
- 事件(Event)
用户点击菜单、扫码、上报地理位置等等行为,都会通过事件的形式传到我们的服务器。
- 用户消息(Event以外)
用户发送文字、图片、位置、视频、声音等等数据,都会通过消息的形式传到我们的服务器。
返回消息
返回消息支持的消息类型,及创建方法,参考文档。
传送门 - 消息类型
菜单
详情请参考以下文档。
传送门 - 菜单基本操作
传送门 - 菜单细节
识别用户/用户绑定(OAuth-开放验证)
用户识别的流程为:
- 用户打开我们的网页
- 网页检测是否有已经验证通过的session,有则无须验证
- session记录当前页面地址
- 重定向到微信服务器进行验证(提交验证方法、回调页面)
- 微信服务器验证通过,返回用户信息到回调页面(其实返回token,不过EasyWechat已经封装好了)
- 回调页面记录验证通过的session,跳转到之前记录的页面地址
- 重复1、2,通过验证。
验证方法有:
- snsapi_base
只获取用户的openid,无须用户确认。
- snsapi_userinfo
获取用户的基本信息,无需用户确认。
- snsapi_login
网页验证授权,需要用户确认。
具体方法参考文档。
传送门 - 网页授权
总结
总而言之,EasyWechat的出现,使公众号开发的门槛变得很低,学会PHP的基本语法不需要很长时间,搞懂tp的基本使用也不需要很长时间,再有EasyWechat、ThinkCmf封装好了这么多内容,做出一个好的公众号也变得很简单。
可见以后的竞争是多么的激烈。
原文链接:点击打开链接
微信公众号简易入门教程相关推荐
- 微信公众号开发入门教程第一篇
微信公众号开发入门教程第一篇 关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/ ...
- 腾讯云+CentOS 7.2+python:搭建微信公众号后台入门教程
因为想自己编写微信公众号后台的程序,实现一些小功能,为以后的开发做准备,所以就从零开始,摸索着注册微信公众号,租用服务器,搭建环境进行开发. 简单的搭建过程中也经历了一些波折,踩了不少坑,仅留此文给跟 ...
- 微信公众号开发入门教程
1.申请注册一个公众号,个人的就可以了,然后进入测试号,如下图:(测试账号,除了支付其他的都可以用) 2.获取用户信息: (1)前端代码: 前端需要先获取code然后传给后端获取用户信息,之后就可以尽 ...
- C#微信公众号开发系列教程三(消息体签名及加解密)
http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...
- C#微信公众号开发系列教程五(接收事件推送与消息排重)
C#微信公众号开发系列教程五(接收事件推送与消息排重) 原文:C#微信公众号开发系列教程五(接收事件推送与消息排重) 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续 ...
- C#微信公众号开发系列教程二(新手接入指南)
此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教 ...
- 微信公众号开发系列教程一(调试环境部署)
http://www.cnblogs.com/zskbll/p/4074855.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...
- 微信公众号开发系列教程一(调试环境部署续:vs远程调试)
微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...
- 微信公众号注册免费教程
微信公众号注册免费教程 注册公众号:1.打开微信公众平台官网,然后注册一个公众号 可以直接搜索微信公众号或者网站:https://mp.weixin.qq.com 点击立即注册 2.根据自己需要选择公 ...
最新文章
- 天津海尔扫地机器人维修点_女神好帮手!海尔扫地机器人 让生活化繁为简
- windows 7关闭休眠
- ASP.NET Core微服务(一)——【完整API搭建及访问过程】
- 悲催的CamShift
- Lecture 13 Amortized Analysis
- oracle装一半报错要卸掉,OpenSUSE下oracle11gR2的安装卸载
- 磁盘阵列(RAID) 级别
- linux运行虚幻引擎4,虚幻引擎4.25开发环境如何设置
- [C++]一个拥有音乐播放器所有基本功能的音乐库
- 用lambda表达式写左联查询的示例
- 基于springboot网上商城交易平台源码
- 【vue 进阶指南 一】多语言国际化(中英文切换)
- Spring Boot集成支付宝电脑网站支付功能
- Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝
- c#右键点击选中DataGridView中整行
- 【阳历转阴历工具类】
- 21_Redis_浅析Redis缓存穿透和雪崩
- 安全测试:孔夫子旧书网短信接口安全测试,你的短信接口到底有多危险,可能瞬间损失过万,短信接口防盗刷测试
- 既然Vue通过数据劫持可以精准探测数据变化,为什么还需要虚拟DOM进行diff检测差异?
- npm install的时候报错 npm err code 1
热门文章
- java每日打卡_“365算法每日学计划”:03打卡-贪心算法
- 人工智能离不开“人工投喂”数据,现在中国约有 100 万人做这事
- 2021年危险化学品经营单位主要负责人考试报名及危险化学品经营单位主要负责人复审考试
- 论坛回顾|蚂蚁供应链安全建设实践
- Java设计模式之行为型:中介者模式
- ffmpeg 视频抽取音频,视音频分离
- oracle 10g 新特性中文笔记
- CTF之萌新web学习(命令执行2)
- JLINK的SWD接口调试器制作
- iphone计算机照片要求,如何将IPhone照片导入电脑