Web_PHP_微信_接口验证、简单文本响应;
来源:互联网 发布:win10安装java没反应 编辑:程序博客网 时间:2024/06/07 03:58
Web_PHP_微信_接口验证、简单文本响应;
<?php/** * wechat php test * 微信客户端 <-> 微信服务器 <-> 开发服务器; *//// define your tokendefine("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();/** * 微信回调接口测试 * @author 2WR3_43 */class wechatCallbackapiTest{ /** * 服务器地址验证:若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。 * @author 2WR3_43 */public function valid() { // 子串返回 $echoStr = $_GET["echostr"]; /// valid: valid signature; if($this->checkSignature()){ echo $echoStr; exit; } } /** * 文本信息响应 * @author 2WR3_43 */ public function responseMsg() {// tips: 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); /// SimpleXML处理:SimpleXML 函数允许您把 XML 转换为对象。通过普通的属性选择器或数组迭代器,可以处理这个对象,就像处理任何其他对象一样。 // 获取对象:从 XML 字符串获取 SimpleXMLElement 对象; $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>"; if(!empty( $keyword )) { $msgType = "text"; $contentStr = "Welcome to wechat world!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo "Input something;"; } }else { echo ""; exit; } } /** * 签名验证 * 详情参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319&token=&lang=zh_CN ; * 摘要说明:开发者通过检验signature对请求进行校验(开发者校验,下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。 * @author 2WR3_43 */private function checkSignature(){ /// TOKEN:you must define TOKEN by yourself; if (!defined("TOKEN")) { throw new Exception('Exception: TOKEN is not defined;'); } /// 请求参数 // signature参数:微信加密签名,signature结合开发者填写的token参数和请求中的timestamp参数、nonce参数。 $signature = $_GET["signature"]; // timestamp参数:时间戳; $timestamp = $_GET["timestamp"]; // nonce参数:随机数; $nonce = $_GET["nonce"]; // token参数$token = TOKEN;/// 加密/校验流程步骤//步骤1/ 将token、timestamp、nonce三个参数 进行 字典序排序(SORT_STRING);$tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); //use SORT_STRING rule; //步骤2/ 将三个参数字符串拼接成一个字符串进行sha1加密$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );//步骤3/ 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信;if( $tmpStr == $signature ){return true;}else{return false;}}}?>
1 0
- Web_PHP_微信_接口验证、简单文本响应;
- 简单的微信接口验证
- 微信_如何响应用户请求;
- 微信_响应用户请求SDK;
- 微信简单文本回复
- 微信验证开发者代码,解决微信请求URL超时,你的服务器没有正确响应Token验证,请阅读消息接口使用指南
- 微信公众平台_发送被动响应消息接口 实体类转换为xml工具类
- 微信公众平台消息接口开发(2)你的服务器没有正确响应Token验证的解决方法
- 微信企业号简单的OAuth2验证接口实例(使用SpringMVC非注解方式)
- 微信企业号 - OAuth验证接口
- 微信测试接口token验证失败
- 微信接口验证(php)
- 微信公众平台 接口设置出现“你的服务器没有正确响应Token验证,请阅读消息接口使用指南”解决方案 Python
- 微信周边接口 wx.onSearchBeacons 无响应
- 微信公众平台接口简单介绍
- 390_微信授权后接口调用
- 微信公众平台申请消息接口验证工具
- 微信公众平台接口开发-接入验证测试
- 使用照相机或者相册
- android studio 的 Gradle build finished with 1 error(s) 问题
- 动态聚类法
- DOS指令
- 数据库设计14个技巧
- Web_PHP_微信_接口验证、简单文本响应;
- jsp:include引入jsp文件的时候(如果被包含的文件存在js文件),不要用相对路径
- 欢迎使用CSDN-markdown编辑器
- EasyUi的ComboBox(下拉列表框)
- Hi3516A linux kernel 编译步骤详细说明
- Unix系统编程(3) - 进程
- java中的四舍五入的问题
- Java实现Redis的消息订阅和发布
- Spring+SpringMVC 文件批量同步上传