zoukankan      html  css  js  c++  java
  • 微信开发(一) 服务器配置

    因为最近需要写一个微信使用加密模式,所以只好学学加密模式。

    先是服务器配置,先将服务器如图配置

    配置微信响应文件:


    define("TOKEN", "hmcome"); //设置token

    define("AppID", "wx4***********");//设置APPID

    define("EncodingAESKey", "x2q***************************");//设置加密密钥

    require_once('wxBizMsgCrypt.php');//引用消息加密解密包  注意:加密解密包里又引用了多个文件

    当用户向公众账号发送消息时,微信公众账号将会在URL中带上signature、timestamp、nonce、encrypt_type、msg_signature等参数,如下所示

    http://www.xxx.com/index.php?signature=35703636de2f9df2a77a662b68e521ce17c34db4&timestamp=1414243737&nonce=1792106704&encrypt_type=aes&msg_signature=6147984331daf7a1a9eed6e0ec3ba69055256154

    加密解密原理简单,就是在微信给你响应的时候是一串密文信息,当到了开发者这里就先解密,解密进行处理了过后再用密文的方式返回给用户。

    检查签名的完整代码:

    public function responseMsg()
    {
    $timestamp = $_GET['timestamp'];
    $nonce = $_GET["nonce"];
    $msg_signature = $_GET['msg_signature'];
    $encrypt_type = (isset($_GET['encrypt_type']) && ($_GET['encrypt_type'] == 'aes')) ? "aes" : "raw";
    //检查加密否

    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
    if (!empty($postStr)){
    //如果是加密的文本,就将他先解密
    if ($encrypt_type == 'aes'){
    $pc = new WXBizMsgCrypt(TOKEN, EncodingAESKey, AppID);
    $decryptMsg = ""; //解密后的明文
    $errCode = $pc->DecryptMsg($msg_signature, $timestamp, $nonce, $postStr, $decryptMsg);
    $postStr = $decryptMsg;
    }
    //解密结束
    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
    $RX_TYPE = trim($postObj->MsgType);

    //消息分离,判断是文本还是事件
    switch ($RX_TYPE)
    {
    case "text":
    $resultStr = $this->receiveText($postObj);
    break;
    case "event":
    $resultStr = $this->receiveEvent($postObj);
    break;
    default:
    $resultStr = "";
    break;
    }
    //响应完了过后再把消息加密
    if ($encrypt_type == 'aes'){
    $encryptMsg = ''; //加密后的明文
    $errCode = $pc->encryptMsg($resultStr, $timestamp, $nonce, $encryptMsg);
    $postStr = $encryptMsg;
    }
    //加密结束
    echo $resultStr;
    }else {
    echo "";
    exit;
    }
    }

  • 相关阅读:
    利用递归分割(Split)字符串
    SQL Server2012 T-SQL基础教程--读书笔记(1-4章)
    kindeditor编辑器的使用
    echarts绘制四川地图
    Windows下搭建PHP开发环境(Apache+PHP+MySQL)+调试工具Xdebug的配置
    给搜索关键字添加高亮,加以颜色区分
    SQL 生成6位随机数并MD5加密输出
    微信小程序登录 .net 后端实现
    钉钉小程序http post 请求
    浅谈Web Api配合SignalR的跨域支持
  • 原文地址:https://www.cnblogs.com/jianmingyuan/p/6000133.html
Copyright © 2011-2022 走看看