微信公众平台开发(1)验证TOKEN源码
来源:互联网 发布:云计算演讲稿 编辑:程序博客网 时间:2024/05/01 04:40
说明:使用的是官方的源代码进行验证,所使用的服务器为新浪SAE。在官方源代码中只需更改:define("TOKEN", "weixin");的值为自己的TOKEN值即可
源码:
<?phpdefine("TOKEN", "tony"); // 定义自己的TOKEN值,并且与微信公众平台提供的值相同即可$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();class wechatCallbackapiTest{ public function valid() { $echoStr = $_GET["echostr"]; //随机字符串,该值只在第一次验证的时候有值, if ($this->checkSignature()) { 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); $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(); } } private function checkSignature() { // you must define TOKEN by yourself if (! defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"];//微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 $timestamp = $_GET["timestamp"];//时间戳 $nonce = $_GET["nonce"];//随机数 $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; } }}?>
0 0
- 微信公众平台开发(1)验证TOKEN源码
- 微信公众平台开发——token验证失败
- node.js微信公众平台开发之Token验证
- jsp 微信公众平台 token验证
- 微信公众平台Token验证失败
- jsp 微信公众平台 token验证
- 微信公众平台Token验证
- VB.net 微信公众平台开发(一) Token验证
- 基于PHP的微信公众平台开发(TOKEN验证,消息回复)
- 微信公众平台开发 ACCESS TOKEN
- 微信公众平台开发 ACCESS TOKEN
- 微信公众平台开发 ACCESS TOKEN
- 微信公众平台消息接口开发(2)你的服务器没有正确响应Token验证的解决方法
- 微信公众平台开发问题——token验证失败
- 微信公众平台开发Token验证失败(有时URL超时)--解决方案
- 微信公众平台Token验证失败问题的解决
- 微信公众平台的TOKEN安全验证
- 微信公众平台开发者中心配置--token验证失败
- apache2.4支持cgi问题
- 下拉框与列表框
- VXLAN (Virtual Extensible LAN)
- 安装Oracle SOA suit 12.1.3
- Runtime.getRuntime().availableProcessors()
- 微信公众平台开发(1)验证TOKEN源码
- Cassandra数据库Java访问
- 查找内存泄漏及重定向~~~~
- Android dip(dp) 与 sp的自适应问题
- 针对4.4短信机制做一个合格的程序
- java之路 myBatis重新学习(三)高级结果映射
- 【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)
- 利用Request对象的包解析漏洞绕过防注入程序(hackbar)
- 真机调试时 无法在sdcard创建文件夹 或者push文件时没有权限