美文网首页
微信接口开发之验证

微信接口开发之验证

作者: 阿泽453 | 来源:发表于2019-03-29 17:25 被阅读0次

首先到开发者中心启用服务器配置,填写好URL和Token,后面就是写代码了。

方法一:
在我们首次提交验证申请时,微信服务器将发送GET请求到填写的URL上,并且带上四个参数(signature、timestamp、nonce、echostr),通过对签名(即signature)的效验,来判断此条消息的真实性。此后,每次接收用户消息的时候,微信也都会带上这三个参数(signature、timestamp、nonce)访问我们设置的URL,和第一次相同我们依然需要通过对签名的效验判断此条消息的真实性。效验方式与首次提交验证申请一致。

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

通过检验signature对请求进行校验(代码在下面提供)。若确认此次GET请求来自微信服务器,则原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

加密/校验流程如下:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 将加密后的字符串与signature对比,标识该请求来源于微信

详细代码如下:

function checkSignature($token) {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode($tmpArr);
    return sha1($tmpStr) == $signature;
}
 
// 微信公众后台填写的Token
$token = 'theToken';
// 如果验证正确,则返回参数echostr的内容,否则终止执行
if(checkSignature($token)) {
    echo $_GET['echostr'];
}
exit();

可以去后台验证了。

方法二:
上传wx_sample.php到服务器,修改token

<?php
/**
  * wechat php test
  */

//define your token
define("TOKEN", "zhou");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

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

        //valid signature , option
        if($this->checkSignature()){
            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;
        }
    }
}

?>

相关文章

  • 微信接口开发之验证

    首先到开发者中心启用服务器配置,填写好URL和Token,后面就是写代码了。 方法一:在我们首次提交验证申请时,微...

  • 个人微信开发sdk

    微信开发sdk,微信二次开发sdk,个人微信开发sdk,微信群api接口,微信api接口 case DeviceA...

  • 微信开发者api

    微信api接口接入,微信群api接口,微信api接口文档,微信开发者api微信消息api case DeviceA...

  • 菜鸟带你看传说中的微信开发!

    1.微信开发原理微信客户端->微信服务器->开发绑定的服务器。微信开发步骤: 2.微信验证服务器原理(验证服务器的...

  • 个人微信开发api

    个人微信开发api,微信开发api文档,微信api接口文档 case "HeartBeatReq": {// 客户...

  • 微信开发第一弹

    什么是微信开发 微信开发包括三个方面,微信公众号开发,微网站开发,微信接口开发 微信开发步骤 去下面这个网站申请一...

  • 微信网页开发验证及调用接口经验分享

    要想自定义微信分享的标题、图标等,就需要调用微信相应的接口,本文主要介绍微信接口权限的验证及之后的调用接口的过程。...

  • 商城实现主要功能

    标签 :学习向导 支付功能实现 腾讯易宝支付接口 微信支付接口 支付宝沙箱环境测试支付接口 登录/注册验证 验证码...

  • 微信开发(基于PHP)Lesson 2

    微信官方接口分析 1.对接微信公众平台①获取API接口路径: 登录微信公众号(服务号即可)->开发者工具->开发者...

  • JSSDK调用

    微信JS-SDK是微信公众号平台面向网页开发这提供基于微信内的网页开发工具包。 接口大类分为:分享接口、微信支付、...

网友评论

      本文标题:微信接口开发之验证

      本文链接:https://www.haomeiwen.com/subject/wqlrbqtx.html