微信公众平台开发,API接入与推送事件(1)
博客好久没有更新了,今天说说微信开发。微信开发的好多初学者都会又这样的迷惑,微信开发到底是什么?其实微信开发本质我和我们的网站开发没有太大的区别。我们常说的微信开发也就是公众号开,微信公众号分为三个类型,订阅号、服务号、企业号。他们之间的具体区别我这里就不详细说了,要想做开发,就要先明白公众号,微信,用户三者之间的关系。用户通过微信这个应用链接到公众号,公众号通过微信拿到用户的信息,这是通信的基本原理!
第一步就是服务器接入,进入微信公众号,点击开发这模式,点击启用,准备域名填入(微信支持80端口),填写token(token只能为英文);
第二步进入服务器空间,建PHP文件,具体的代码实现:
<?php
//获取参数,API接入会传入参数timestamp,noce,signature,echostr四个参数
$time = $_GET['timestamp'];
$noce = $_GET['noce'];
$signature = $_GET['signature'];
$echostr = $_GET['echostr'];
$token = "weixin";(这里的token必须和你微信公众号填写的token一致);
//将获取的参数按照字典序排序,并用sha1进行加密;
$array = array($time,$noce,$token);
sort($array);
$weixin = implode(' ',$array);
$weixin = sha1($weixin);
//将加密后的数据$weixin和$signature进行比较,参数echostr只有在第一次接入时才会有,第二就不会有了。
if($weixin == $signature && $echostr){
echo $echostr;
exit;
}
这样就完成了整个API的接入。有木有很简单,哈哈!
接下来就事件推送与被动回复,事件推送是多种多样的,这个在微信的开发文档上有详细的介绍,常见的事件推送有关注、取消关注、扫描二维码带参数事件、上报地理位置等。
在做完接入以后,就需要进行代码操作了,用户所有的用微信发送的文章,图文,视频,音频,微信都会发送到接入的服务器,这里就需要我用逻辑代码了,上面写的微信接入是原生的,在实际的开发环境中是不会用的,实际的开发可能会用很多的框架,比如Thinkphp,laravel,YII,CI,或者二次开发框架微擎。在这里我建议用TP,TP在国内被很多的公司都在用,轻量级,开发便捷。
接接下来的代码实现会基于TP框架进行实现,用过TP的同学都知道3.23之前的需要自己定义文件,比如定义index.php文件,代码如下
<?php
define("APP_NAME","App"); //定义项目名
define("APP_PATH","./App/"); //定义路径
require("./ThinkPHP/ThinkPHP.php"); //引入核心文件
之后访问这个文件会生成一个控制器类IndexAction.class.php,具体原因我这里就不详细说了,不懂的同学可以去学习学习TP框架,具体的代码如下
<?php
class IndexAction extend Action{
//定义接入
public function index(){
//获取参数,API接入会传入参数timestamp,noce,signature,echostr四个参数
$time = $_GET['timestamp'];
$noce = $_GET['noce'];
$signature = $_GET['signature'];
$echostr = $_GET['echostr'];
$token = "weixin";(这里的token必须和你微信公众号填写的token一致);
//将获取的参数按照字典序排序,并用sha1进行加密;
$array = array($time,$noce,$token);
sort($array);
$weixin = implode(' ',$array);
$weixin = sha1($weixin);
//将加密后的数据$weixin和$signature进行比较,参数echostr只有在第一次接入时才会有,第二就不会有了。
if($weixin == $signature && $echostr){
echo $echostr;
exit;
}else{
$this->reposeMsg();
}
}
//定义事件推送回复
public function reposeMsg(){
//在做微信API接入的时候可能我们获取参数通过get,事件推送超全局数组GLOBALS进行数据接收
$msg = $GLOBALS['HTTP_RAW_POST_DATA'];//这里也可以用一个三元运算符进行($msg = isset($GLOBALS['HTTP_RAW_POST_DATA'])?$GLOBALS['HTTP_RAW_POST_DATA']:' ')
//获取到数据后需要进行处理,我们都知道微信的通信格式只有两种xml和json,所以需要将数据进行转化
$msg = simplexml_load_string($msg);//此函数可以将获取的xml格式转换为一个对象
//以关注事件推送为例
/*
微信开发文档有具体的xml格式
<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[FromUser] ]></FromUserName><CreateTime>123456789</CreateTime><MsgType>< ![CDATA[event] ]></MsgType><Event>< ![CDATA[subscribe] ]></Event></xml>
*/
//以上是标准的通信模板
$toUser = $msg->ToUserName;
$fromUser = $msg->FromUserName;
$msgTime = $msg->CreateTime;
$msgType = $msg->MsgType;
$msgEvent = $msg->Event;
//分析获取的数据,如果是公众号关注,直接执行
if($msgEvent == "subscribe"){
/**
文本回复格式
<xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[fromUser] ]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType>< ![CDATA[text] ]></MsgType> <Content>< ![CDATA[你好] ]></Content> </xml>
**/
$toUser = $msg->FromUserName;
$fromUser = $msg->toUserName;
$time = time();
$msgType = "text";
$content = "欢迎关注微信公众号徐二起";
//设置模板
$template = " <xml> <ToUserName>< ![CDATA[%s] ]></ToUserName> <FromUserName>< ![CDATA[%s] ]></FromUserName> <CreateTime>%s</CreateTime> <MsgType>< ![CDATA[%s] ]></MsgType> <Content>< ![CDATA[%s] ]></Content> </xml>
";
//这里使用sprintf函数,进行字符串替换
$info = sprintf($template,$toUser,$fromUser,$time,$msgType,$content);
echo $info;
}
}
}
这个就完成了推送事件后的回复,这个方法的代码如上,今天就先说这么多,接下来会更新微信开发(2)微信文本,图文消息回复,acceess_token的调用以及微信SDK的实现。
转载于:https://www.cnblogs.com/beili/p/8426157.html
微信公众平台开发,API接入与推送事件(1)相关推荐
- 微信公众平台开发:接入JS-SDK和实现分享功能
微信公众平台开发:接入JS-SDK和实现分享功能 一.本文是实现微信公众号自定义的分享功能开发,也是亲自实践实现该功的一些总结体会. 首先贴上微信JS-SDK说明文档地址:http://mp.weix ...
- Java微信公众平台开发(一)--接入微信公众平台
转载自崔用志博客:http://www.cuiyongzhi.com/ 前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我 ...
- Java微信公众平台开发(一)——接入微信公众平台
前面几篇文章一直都在说微信公众平台的开发准备工作,那么从这篇开始我们就将正式的进入JAVA微信公众平台开发的整个流程,那么这篇我们开始聊聊如何将我们的服务端和微信公众平台对接! (一)接入流程解析 在 ...
- 微信公众平台的:服务器配置,消息推送配置
小程序(消息推送配置)与服务号(服务器配置)通用配置方法都是一样的. 以公众号为例子 设置与开发->基础设置->服务器配置 一:在服务器后台添加一个验证类(接口) package com. ...
- 微信公众平台开发精彩花絮------文章来源:方倍工作室
关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公 ...
- 微信公众平台开发入门教程(SAE方倍工作室)
在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. ...
- 微信公众平台卡券API接口开发指南
文章目录 说明 卡券术语介绍 卡券生命周期流程图 准备 申请开发账号 公众平台开发配置 公众号开发信息配置 填写服务器配置并验证有效性 申请微信认证及开通微信卡券功能 卡券分类 普通卡券 会员卡券 朋 ...
- 网络架构、云平台和微信公众平台开发接入
云与后端相关的技术似乎并不属于嵌入式和物联智能硬件开发工程师的范畴,但是嵌入式开发工程师有必要认识成熟的网络架构和相关的云技术,以拓展自己在系统架构方面的视野.大数据分析是物联网背后的核心价值,物联智 ...
- PHP7.0微信公众平台开发4: 实例一:接收普通消息和接收事件推送
PHP7.0微信公众平台开发4: 实例一:接收普通消息和接收事件推送 1. API接口的声明 2. PHP脚本代码 3. 运行结果 由于消息类型有多钟,本文中,"接收普通消息"我以 ...
最新文章
- HarmonyOS Image 属性了解
- dama数据管理知识体系指南_DAMA知识体系解读(6)数据操作管理
- 我爱学习第一天(委托)
- 高可用Redis服务架构分析与搭建
- if-else嵌套太深?教你一个新手都能掌握的设计模式搞定!
- python 简历_用Python翻译我的简历
- python是什么 自学-自学python用什么系统好
- 安装JDK和tomcat
- WIN7下IIS的安装与配置
- unas 下 Transmission 下载使用体会
- 什么是敏捷管理及scrum方法
- Unix传奇历史与回忆-读史使人明智,鉴以往而知未来
- java方面图形/图像处理
- 开机provision应用
- python爬虫---12306获取列车座位信息
- 线性代数可以做些什么?(之一)
- 打算自学一些编程,想兼职程序员打零工,想问问现在哪个程序员兼职平台单子简单,不考察接单人学历?
- 【正点原子Linux连载】第一章 应用编程概念-摘自【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.1
- TL-WR941N V2 漏洞
- 计算机网络验证型实验
热门文章
- 861. Score After Flipping Matrix
- l开头的英文车标是什么车_行业冷知识 | 为什么汽车品牌都喜欢用动物做车标?...
- chrome driver 获取 session_BOSS直聘招聘信息获取之使用webdriver进行爬取
- 若依前后端分离集成Mybatis-Plus
- PHP定时抽奖怎么实现的,定时抽奖活动怎么做?
- mysql 3.23_2018-3-23 13周5次课 MySQL常用操作(下)
- jsp value设置为函数的返回值_python中的生成器函数是如何工作的?
- matlab移动文件到另一个文件夹里,Matlab将文件分类移动到不同文件夹中
- java创建一个图形类getv_java建立类和对象分糖果
- android 编译sdk,android编译sdk