zoukankan      html  css  js  c++  java
  • 【微信开发】微信公众平台接入

    成为微信开发者的第一步——微信公众平台接入

    第一步:填写服务器配置

    在开发->基本配置处启用服务器配置。修改配置

    其中URL是开发者用来接收微信消息和事件的接口URL。

    Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。

    EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。

    点击提交

    第二步:验证服务器地址的有效性

        开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

        signature ------  微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

        timestamp  ------时间戳

        nonce  ------  随机数

        echostr  ------  随机字符串

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

        //获取接口Token值和UID
            $memberModel = D('Member');
            $userinfo = $memberModel -> getWechatInfo(WID);
            
            //获取用户的微信账号信息 
            $weixinLogic = D('Weixin','Logic');
            $weixin = $weixinLogic -> detail(WID);
            
            $weixin = new ThinkWechat($userinfo['token']);

        在微信公共函数里面,检验signature:

    if(IS_GET){
                $this->auth($token) || die('token信息错误');
                exit($_GET['echostr']);
            }
            
     /**
         * 对数据进行签名认证,确保是微信发送的数据
         * @param  string $token 微信开放平台设置的TOKEN
         * @return boolean       true-签名正确,false-签名错误
         */
        private function auth($token){
            /* 获取数据 */
            $data = array($_GET['timestamp'], $_GET['nonce'], $token);
            $sign = $_GET['signature'];
            
            /* 对数据进行字典排序 */
            sort($data, SORT_STRING);
    
            /* 生成签名 */
            $signature = sha1(implode($data));
    
            return $signature === $sign;
        }

        注意:此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等。

    © 著作权归作者所有

  • 相关阅读:
    android Notification 通知栏点击不能跳转(转自:http://www.oschina.net/question/778954_212394)
    Android使用ContentObserver监听数据库变化(转自:http://www.blogjava.net/zhaojianhua/archive/2011/10/27/362204.html)
    cenos 6.4 samba 服务器安装与配置
    centos下nginx+tomcat部署java web全过程(包括在线离线安装Mysql等)
    python读取csv文件
    linux文件实时同步
    Linux 上安装 mysql
    Mysql5.7.20安装文档
    Cassanfra、Hbase和MongoDB的选取
    org.springframework.http.converter.HttpMessageConversionException: T
  • 原文地址:https://www.cnblogs.com/jucheng/p/6289513.html
Copyright © 2011-2022 走看看