zoukankan      html  css  js  c++  java
  • 微信公众号开发模板避坑

    <?php
    //写你自己的token
    define("TOKEN", "weixin");
    $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 (!empty($postStr)){
                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();
                //消息类型
                $msgType = $postObj->MsgType;
                //事件类型
                $event = $postObj->Event;
                //xml模板
                $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($msgType=="event"){
                    if($event=="subscribe"){
                        $contentStr = "欢迎词";
                    }
    
                }
    
                //用户的请求类型是文本
                if($msgType=="text"){
                    $contentStr =$keyword;
                    $msgType = "text";                                    
                }
    
                //自动填充xml
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                //回复
                echo $resultStr;
            }
            //用户没有请求
            else{
                echo "";
                exit;
            }
        }
    
        //验证
        private function checkSignature(){
            if (!defined("TOKEN")) {
                throw new Exception('TOKEN is not defined!');
            }
            $signature = $_GET["signature"];
            $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;
            }
        }
    
    }

    微信自动回复模板

    回复图片模板

  • 相关阅读:
    好用开源的C#快速开发平台
    Chrome 53 Beta一些有意思的改动
    前端面试问题总结
    前端构建的初步尝试
    [译] 如何运用新技术提升网页速度和性能
    切图崽的自我修养-[ES6] 迭代器Iterator浅析
    解决表单GET提交后台数据乱码问题
    设置port转发来訪问Virtualbox里linux中的站点
    linux杂谈(十三):代理server
    a little riak book
  • 原文地址:https://www.cnblogs.com/cl94/p/9281635.html
Copyright © 2011-2022 走看看