热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信公众平台开发(1)入门教程

预备篇1、申请微信公众账号:微信公众平台地址:https:mp.weixin.qq.com微信开发官方说明文档:http:mp.weixin.qq.com

预备篇

1、申请微信公众账号:

微信公众平台地址:https://mp.weixin.qq.com/

微信开发官方说明文档:http://mp.weixin.qq.com/wiki/home/

微信开发测试公众账号申请:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login (打开后点击登录,用自己的微信号扫一扫就会发放一个相应的测试公众账号,此账号拥有所有接口权限,仅供程序员测试使用)

2、网站空间

如果自己有的话就忽略,没有的可以使用阿里云,领券地址:死戳这里

配置篇

1、代码上传

将下列代码保存到一个index.php的文件中,并将此文件示例文件上传到SAE代码管理库中(代码下载)

/**
* 作者:smalle
* 网址:http://blog.csdn.net/oldinaction
* 微信公众号:smallelife
*/

//定义 TOKEN(要与开发者中心配置的TOKEN一致)
define("TOKEN", "smalle");
//实例化对象
$wechatObj = new wechatCallbackapiTest();
//调用函数
if (isset($_GET['echostr'])) {
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}

class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];

if($this->checkSignature()){
echo $echoStr;
exit;
}
}

public function responseMsg()
{

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

if (!empty($postStr)){
libxml_disable_entity_loader(true);//安全防护
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;
$toUsername = $postObj->ToUserName;
$keyword = trim($postObj->Content);
$time = time();
$textTpl = "


%s


0
";
if(!empty( $keyword ))
{
$msgType = "text";
//用户给公众号发消息后,公众号被动(自动)回复的消息内容
$cOntentStr= "欢迎来到微信公众平台开发世界!";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}

}else {
echo "";
exit;
}
}

private function checkSignature()
{
if (!defined("TOKEN")) {
throw new Exception('TOKEN is not defined!');
}

$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nOnce= $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}

?>

2、开发者中心服务器配置

进入公众平台后点击开发者中心,在服务器配置栏按如下图进行配置(URL改为自己SAE项目的URL地址),配置完成后保存并点击启用(注意:一定要先上传以上代码到空间再来配置,否则无法通过验证就提示配置失败)

3、示例结果展示

上面的代码实现的是一个发送任意文本消息后,公众号都会回复一句“欢迎来到微信公众平台开发世界!”


4、代码结构分析

  • 第9行【define("TOKEN", "smalle");】:定义了一个TOKEN(令牌),其值与在开发者中心服务器配置的Token要保持一致。
  • 第11行【$wechatObj = new wechatCallbackapiTest();】 :示例化一个wechatCallbackapiTest类对象,wechatCallbackapiTest类中包含三个函数,valid()、responseMsg()回应消息、checkSignature()检查签名。我们刚开始需要关注的就是responseMsg()中的内容。
  • 第40-51行【$textTpl = " ......";】:是我们自己的服务器发给微信服务器的一个xml数据格式,里面的%s在第56行中动态附加。
  • 第56行【$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);】:第一个参数$textTpl指的即时第40行定义的变量,后面的参数依次是上述xml数据格式中的%s。

收发消息原理

​1、文字概述

当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,微信服务器将POST消息的XML数据包到开发者填写的URL上,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。

2、接收消息XML数据包介绍

以接收文本消息的XML数据包为例。接收文本消息时XML数据格式如下:

 


1348831860


1234567890123456

相关参数:

参数		描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType 消息类型(text)
Content 文本消息内容
MsgId 消息id,64位整型

3、被动回复消息XML数据包介绍

以被动回复文本消息的XML数据包为例。回复文本消息时XML数据格式如下:




12345678


相关参数:

参数		是否必须	描述
ToUserName 是 接收方帐号(收到的OpenID)
FromUserName 是 开发者微信号
CreateTime 是 消息创建时间 (整型)
MsgType 是 text
Content 是 回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示)

4、图解


微信用户给公众号发送一条"this is a test"消息,微信服务器和我的服务器之间以xml格式在后台进行数据传输,最终将"你好"返回给用户。






===================================微笑微笑微笑===================================

关注【Smalle】【微信公众号:smallelife】              微笑             捐赠【Smalle】【微信公众号:smallelife】

关注就有豪礼相送哦,羡慕源码、羡慕工具、羡慕文档应有尽有      微笑       你的扫码便是我前进的动力,羡慕扫码、羡慕扫码、羡慕扫码

===================================微笑微笑微笑===================================

                                     



推荐阅读
  • 微信公众平台上的人脸识别
    微信公众平台上的人脸识别微信公众平台消息接口开发(20)人脸识别微信公众平台图片人脸识别作者:http:www.cnblogs.comtxw1958 ... [详细]
  • 手把手教你搭建一个属于自己的网站-适合零基础小白,文末附网站模板
    本文主要介绍关于服务器,百度,http的知识点,对【手把手教你搭建一个属于自己的网站-适合零基础小白,文末附网站模板】和【微信公众平台】有兴趣的朋友可以看下由【普通网友】投稿的技术文章,希望该技术和经 ... [详细]
  • 微信公众平台开发之如何上传下载多媒体文件
    这篇文章主要为大家展示了“微信公众平台开发之如何上传下载多媒体文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑, ... [详细]
  • 微信公众平台整合开发实战教程 微信开发教程
    《ASP.NETMVC5&微信公众平台整合开发实战(响应式布局、JQueryMobile,WindowsAzure、微信核心开发)》课程讲师:57Code课程分类:ASP.NETMV ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 【玩转微信公众平台之六】 搭建新浪SAE服务器
    赶紧接上一篇继续讲。------本篇将介绍如何搭建新浪SAE服务器。猛戳http:sae.sina.com.cn1、先自己注册一个账号,如果有新浪的账号,微博之类的都可以直接拿来用,授权一 ... [详细]
  •     参考:微信JS-SDK文档其中包含有分享朋友圈、发送给朋友的js接口方法。(似乎不知道什么时候就会废弃)    文档中有完整的步骤,麻烦的是第三步:通过config接口注入权限验证配置。其 ... [详细]
  • 调用扫一扫功能有几个步骤简单而言:1获取accesstoken2获取jsapi_ticket3生成签名signature调用wx.configwx.readywx.erro ... [详细]
  • 微信公众平台开发获取关注者列表
    微信小程序|微信开发微信公众平台微信小程序-微信开发本文介绍在微信公众平台上如何使用高级接口开发获取关注者列表的功能。防丢器源码,vscode快速生成,vm虚拟机能装ubuntu, ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • 小程序自动授权和手动接入的方式及操作步骤
    本文介绍了小程序支持的两种接入方式:自动授权和手动接入,并详细说明了它们的操作步骤。同时还介绍了如何在两种方式之间切换,以及手动接入后如何下载代码包和提交审核。 ... [详细]
author-avatar
萝莉分享创意科技
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有