• 技术文章 >微信小程序 >微信开发

    微信接口开发的详细介绍

    高洛峰高洛峰2017-03-24 14:12:23原创1300
    创建过程就需要做签名校验,描述如下:

    公众平台用户提交信息后,我们将以GET请求方式请求到填写的Url上,并且带上四个参数:

    * signature — 微信加密签名

    * timestamp — 时间戳

    * nonce — 随机数

    * echostr — 随机字符串

    开发者通过检验signature对网址接入合法性进行校验。若此次GET请求原样返回echostr参数内容,则接入生效,否则接入失败。验证signature将结合开发者填写的token参数、timestamp参数和nonce参数等,加密流程:

    * 将token、timestamp、nonce三个参数进行字典序排序

    * 将三个参数字符串拼接成一个字符串进行SHA1加密

    * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。

    代码:

    <?  
            $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 $_GET['echostr'];  
            }else{  
                return false;  
            }  
    ?>

    然而,微信不走json途径传递数据:

    所以要用simplexml_load_string装XML数据为对象,另外发现POST方法不是urlencode,所以设置HTTP_RAW_POST_DATA,然后可以读取数据.

    ToUserName 消息接收方微信号,一般为公众平台账号微信号

    FromUserName 消息发送方微信号

    CreateTime 消息创建时间

    MsgType 文本消息为text

    Content 消息内容

    <?php  
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //符合微信的POST规范  
    if (!emptyempty($postStr))  
    {  
     
        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); //XML转对象函数,可能最近这一两年入行的不太清楚XML函数  
          
        //数据从对象取出  
        $fromUsername = $postObj->FromUserName;   
        $toUsername = $postObj->ToUserName;  
        $CreateTime = $postObj->CreateTime;  
        $MsgType = $postObj->MsgType;  
        $Content = $postObj->Content;  
     
        $keyword = trim($postObj->Content); //安全Trim  
        $time = time();  
        //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(!emptyempty( $keyword )) //如果发信息来了,不是空白POST,微信规定立即回复,不用推送.  
        {  
            $msgType = "text"; //定义类型  
            $contentStr = "Hello World,I am Tater!"; //回复  
            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); //记住,Tpl是要载入的  
            echo $resultStr; //输出,以便微信抓!  
        }  
        else 
        {  
            echo "What are you say!"; //输入信息有问题,提示输入!  
        }  
     
    }  
    else 
    {  
        echo "";  
        exit;  
    }  
     
     
    ?>

    php入门到就业线上直播课:查看学习

    以上就是微信接口开发的详细介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:微信接口开发
    上一篇:使用Android实现微信小视频录制功能详细介绍 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 有关争夺的课程推荐10篇• 详解微信个性化菜单开发模式• C#开发微信公众号与订阅号接口实例代码• 微信开发—带参数二维码的使用 • C#开发微信门户及应用使用语音处理
    1/1

    PHP中文网