博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
wx第一次验证token
阅读量:3919 次
发布时间:2019-05-23

本文共 1486 字,大约阅读时间需要 4 分钟。

<?php

define("TOKEN", "wxx"); 
$wechatObj = new wechatCallbackapiTest(); 
$wechatObj->valid();

class wechatCallbackapiTest  

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

    //valid signature , option  

    if($this->checkSignature()){ 
        header('content-type:text');
        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)){  
              
            $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()  
{  
    $signature = $_GET["signature"];  
    $timestamp = $_GET["timestamp"];  
    $nonce = $_GET["nonce"];      
              
    $token = TOKEN;  
    $tmpArr = array($token, $timestamp, $nonce);  
    sort($tmpArr);  
    $tmpStr = implode( $tmpArr );  
    $tmpStr = sha1( $tmpStr );  
      
    if( $tmpStr == $signature ){  
        return true;  
    }else{  
        return false;  
    }  
}
}

转载地址:http://ilhrn.baihongyu.com/

你可能感兴趣的文章
应用交付老兵眼中的Envoy, 云原生时代下的思考
查看>>
.NET 开源项目 StreamJsonRpc 介绍[上篇]
查看>>
.NET Core微服务开发选项
查看>>
探讨NET Core数据进行3DES加密或解密弱密钥问题
查看>>
Vue 3拖更,尤雨溪介绍最新进展
查看>>
如何利用.NETCore向Azure EventHubs准实时批量发送数据?
查看>>
WPF 框架全构建环境虚拟机硬盘分享
查看>>
ABP框架 v3.0 已发布!
查看>>
使用.Net Core实现的一个图形验证码
查看>>
.NET 开源项目 StreamJsonRpc 介绍[中篇]
查看>>
Blazor带我重玩前端(三)
查看>>
基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
查看>>
实现业务数据的同步迁移 · 思路一
查看>>
龙芯开源社区上线.NET主页
查看>>
eShopOnContainers 知多少[11]:服务间通信之gRPC
查看>>
闲谈设计模式
查看>>
平台or职位,你怎么选?
查看>>
骚年快答 | 技术中台与业务中台都是啥?
查看>>
骚年快答 | 微服务架构中的BFF到底是啥?
查看>>
设计模式之适配器模式
查看>>