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

微信开发配置文件详细注释版

:本篇文章主要介绍了微信开发配置文件详细注释版,对于PHP教程有兴趣的同学可以参考一下。
/**
* wechat php test
*/
//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();//将第11行代码的一个类实例化;
//$wechatObj->valid();//变量使用->访问类中的valid()方法,下文valid()方法为验证开发模式接口。这行作用就是验证接口,验证完可注释掉;
$wechatObj->responseMsg();
class wechatCallbackapiTest//定义一个类,类为面向对象开发的封装方式;
{
public function valid()//定义一个公有的名为valid的方法,即验证接口的方法;
{
$echoStr = $_GET["echostr"];//从微信用户端获取一个随机字符串赋予变量$echoStr;
//valid signature , option
if($this->checkSignature()){//访问checkSignature签名验证方法,若签名一致,输出变量$echoStr,完整验证配置接口的操作;
echo $echoStr;
exit;
}//签名及接口验证;
}
public function responseMsg()//定义一个方法;
{
//get post data, May be due to the different environments获取用户端发来的信息,不同的环境可能有差异;
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
//extract post data解析用户数据;
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);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);//将$postStrl变量进行解析并赋予变量$postObj。simplexml_load_string()函数用于解析XML,参数SimpleXMLElement为新对象的类,LIBXML_NOCDATA表示将CDATA设置为文本节点,CDATA标签中的文本XML不进行解析。
$fromUsername = $postObj->FromUserName;//将微信用户端的OpenID赋予变量$fromUsername;
$toUsername = $postObj->ToUserName;//将公众号ID赋予变量$toUsername;
$keyword = trim($postObj->Content);//将用户微信发来的文本内容去掉空格后赋予变量$keyword;
$time = time();//将系统时间赋予变量$time;
$Event = $postObj->Event;//这是一个事件获取;
$textTpl = "


%s


0
"; //构建XML格式的文本赋予变量$textTpl。注意XML中的格式为微信内容固定格式。
if($Event=="subscribe")//subscribe是收到订阅信息,Event是事件类型,subscribe(订阅)、unsubscribe(取消订阅)
{
$textTpl = "


%s


0
";
$msgType ="text";
$cOntentStr= "谢谢关注,你可以回复点什么";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}///关注后自动回复文本消息
//switch($keyword)
//case "";
if(!empty( $keyword ))
{
$msgType = "text";//回复文本信息类型为text型,变量类型为$msgType;
$cOntentStr= "报修,快递查询,饭卡挂失,失物招领,校园街景,新生报到,成绩查询";//$contentStr为回复的信息;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);//sprintf()为变参函数,$textTpl由于有5个%s,需要5个变量进行赋值。此行代码为关键,sprintf()函数要深入理解。
echo $resultStr;//输出回复信息,即发送微信;
}else{
echo "Input something...";//输入内容,此消息不会发送到微信端,只是测试时使用。
}
}else {
echo "";//微信端没有消息时,回复为空,无意义,测试用;
exit;//退出;
}
}

private function checkSignature()//传说中的签名验证程序,此行建立私有方法验证签名,这个私有的checkSignature方法,被第18行代码调用,官方文档为加密/校验流程:将token,timestamp,nonce这三个参数进行字典序排序,将这三个参数字符串拼接成一个字符串进行shal加密,开发者获得加密后字符串可与signature对比,标示该请求来源于微信;
{
// you must define TOKEN by yourself
if (!defined("TOKEN")) {
throw new Exception('TOKEN is not defined!');
}

$signature = $_GET["signature"];//从用户端获取签名赋予变量$signature;
$timestamp = $_GET["timestamp"];//从用户端获取时间戳赋予变量$timestamp;
$nOnce= $_GET["nonce"];//从用户端获取随机数赋予变量$nonce;

$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);//建立数组变量$tmpArr;
// use SORT_STRING rule
sort($tmpArr, SORT_STRING);//新建名排序;
$tmpStr = implode( $tmpArr );//字典排序;
$tmpStr = sha1( $tmpStr );//shal加密;

if( $tmpStr == $signature ){//$tmpStr与$signature变量同值,返回真,否则返回假;
return true;
}else{
return false;
}
}
}
?>

以上就介绍了微信开发配置文件详细注释版,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

推荐阅读
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 在日常生活中,支付宝已成为不可或缺的支付工具之一。本文将详细介绍如何通过支付宝实现免费提现,帮助用户更好地管理个人财务,避免不必要的手续费支出。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 基于ASP的微信公众号代理商订货系统开发
    介绍了一款使用ASP语言开发的微信公众号代理商订货系统,该系统允许代理商通过微信公众平台进行商品订购,并能自动向管理员发送订单通知。 ... [详细]
  • HTML:  将文件拖拽到此区域 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 本文介绍了如何使用微信小程序的.wxml、.wxss和.js文件来实现点击获取数据及侧边栏显示功能。具体包括页面布局、样式设置以及事件处理。 ... [详细]
  • 如何高效解决Android应用ANR问题?
    本文介绍了ANR(应用程序无响应)的基本概念、常见原因及其解决方案,并提供了实用的工具和技巧帮助开发者快速定位和解决ANR问题,提高应用的用户体验。 ... [详细]
author-avatar
手机用户2502939421
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有