微信公众号开发:PHP,对接微信公众账号的测试文档wx_sample.php的解析
来源:互联网 发布:windows ad域博客 编辑:程序博客网 时间:2024/05/12 08:51
微信公众账号接入指南地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319&token=&lang=zh_CN
有关页面如下:
基于该接入指南,填写有关微信公众账号的设置,在相关位置下载测试文档wx_sample.php,并上传到服务器进行接入测试,详细操作可以查看开发文档中的接入指南。
以下是对wx_sample.php的解析:
<?php
/**
* 微信对接测试文档
* wechat php test
*/
//define your token
//定义Token密钥
define("TOKEN", "weixin");
//创建对象
$wechatObj = new wechatCallbackapiTest();
//验证,成功则返回验证字符串,并退出,注释掉
// $wechatObj->valid();
// 开启自动回复功能
$wechatObj->responseMsg();
//定义类文件
class wechatCallbackapiTest
{
//实现valid验证方法:实现对接微信公众平台
public function valid()
{
//接受随机字符串
$echoStr = $_GET["echostr"];
//valid signature , option
//进行用户数字签名
if($this->checkSignature()){
//如果成功,则返回接到的随机字符串
echo $echoStr;、
//退出
exit;
}
}
//定义自动回复功能
public function responseMsg()
{
//get post data, May be due to the different environments
//接受用户端发送过来的XML数据
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data
//判断XML数据是否为空
if (!empty($postStr)){
/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
the best way is to check the validity of xml by yourself */
libxml_disable_entity_loader(true);
//通过simplexml进行xml解析
$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>";
//判断XML数据是否为空
if(!empty( $keyword ))
{
//回复类型,如果是"text",代表文本类型
$msgType = "text";
//回复内容
$contentStr = "Welcome to wechat world!";
//格式化字符串
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
//返回XML数据给手机端
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
//定义checkSignature
private function checkSignature()
{
// you must define TOKEN by yourself
// 验证是否定义Token密钥
if (!defined("TOKEN")) {
throw new Exception('TOKEN is not defined!');
}
//接受微信加密签名
$signature = $_GET["signature"];
//接受时间戳信息
$timestamp = $_GET["timestamp"];
//接受随机数
$nonce = $_GET["nonce"];
//把TOKEN常量,赋值给$token变量
$token = TOKEN;
//把相关参数组装成数组
$tmpArr = array($token, $timestamp, $nonce);
// use SORT_STRING rule
// 通过字典法进行排序
sort($tmpArr, SORT_STRING);
//把排序后的数组转化为字符串
$tmpStr = implode( $tmpArr );
//通过哈希算法对字符串进行加密操作
$tmpStr = sha1( $tmpStr );
//与加密签名进行对比
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>
- 微信公众号开发:PHP,对接微信公众账号的测试文档wx_sample.php的解析
- 微信公众平台开发实例文档 wx_sample.php 详细解释
- 微信公众号测试账号申请验证PHP
- 微信公众账号开发文档
- 微信公众测试号开发改进版---php
- 微信公众号开发index.php
- 微信公众号开发分享 PHP
- 微信公众开发号-php
- 微信公众平台测试账号的获取及开发使用【微信开发学习】
- 公众号删除分组,php开发微信公众平台
- 公众获取用户地理位置-php开发微信公众号
- 微信公众账号开发
- 微信公众账号开发
- 微信公众账号开发
- 微信公众号取消关注事件要做的处理,php开发公众号
- 微信公众平台测试账号的注册与申请
- 微信公众账号
- 唤醒你的微信公众账号
- Centos 6.5将python 2.6 升级到 2.7
- gdb 条件断点
- POJ 1456 贪心
- CCF201503-3 节日 JAVA实现
- JAVA 之 java概述
- 微信公众号开发:PHP,对接微信公众账号的测试文档wx_sample.php的解析
- 第九周项目4--广义表算法库及应用1
- 数据库基础知识2
- spark与hadoop对比
- [Linux]多线程同步之pthread_cond_wait()学习笔记
- c语言基本数据类型
- 第九周项目4--广义表算法库及应用2
- 第十周项目1--二叉树算法库
- odroid x2安装ubuntu系统,HDMI显示,说说折腾事儿。