用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

微信token认证程序

2016-08-31 作者: 云代码会员举报

[php]代码库

<?php
/**
  * @author heqing
  * @version v1.0
  */
 
 
//define your token
define("TOKEN", "weixin");//这里填写的是你在微信上设置的TOKEN,但是必须保证与微信公众平台 接口配置信息一致
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();//这里是测试网站配置信息和开发的是否一致。
 
$wechatObj->responseMsg();//新增加这一项,目的是调用responseMsg()这个功能。
 
 
 
class wechatCallbackapiTest
{
 
//若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。
 
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 ))// $keyword是关键词,即为用户发送的信息
                {
                $msgType = "text";//文本格式的消息
                $contentStr = "Welcome to wechat world!";//预制消息回复
                 
                if ($keyword == "index") {
                $contentStr = "welcome to nongdaxy.com";
                }
                 
                if ($keyword == "首页") {
                $contentStr = "欢迎来到校园之窗";
                }
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                echo $resultStr;
                }else{
                echo "Input something...";
                }
 
 
        }else {
        echo "";
        exit;
        }
    }
// 开发者通过检验signature对请求进行校验
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;
}
}
}
 
 
?>


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...