加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

微信公众平台消息接口(PHP)-官方的Demo存在问题

发布时间:2023-07-21 09:07:33 所属栏目:PHP教程 来源:
导读:微信公众平台消息接口(PHP)-官方的Demo有问题,下面个人进行了处理,事例代码也跑不通,我研究了一番,终于搞定.

首先:在你的服务器上上传好一个接口文件,如http://www.Cuoxin.com/weixin.php 内容如下:

<?php
微信公众平台消息接口(PHP)-官方的Demo有问题,下面个人进行了处理,事例代码也跑不通,我研究了一番,终于搞定.

首先:在你的服务器上上传好一个接口文件,如http://www.Cuoxin.com/weixin.php  内容如下:

<?php  
define("TOKEN", "weixin");  
define("MESS","输入点啥吧");  
$wechatObj = new wechatCallbackapiTest();  
$wechatObj->valid();  
//$wechatObj->responseMsg();   
class wechatCallbackapiTest  
{  
    public function valid()  
    {  
        $echoStr = $_GET["echostr"];   
        if($this->checkSignature()){  
            echo $echoStr;  
            exit;  
        }  
    }   
    public function responseMsg()  
    {  
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  
        if (!emptyempty($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(!emptyempty( $keyword ))  
            {  
                $msgType = "text";  
                $contentStr = MESS;  
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);  
                echo $resultStr;  
            }else{  
                echo MESS;  
            }   
        }else {  
            echo MESS;  
            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;  
        }  
    }  
}  
?> 
然后:设置回复接口,填好URL和Token(必须跟上面定义的Token一致),这个接口先要验证,成功之后再注释掉$wechatObj->valid(); 这行,同时去掉//$wechatObj->responseMsg();这行的注释.

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章