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;
    }
    }

  • 相关阅读:
    java.utils.HashMap数据结构分析(转)
    oracle什么时候须要commit
    CreateFont具体解释
    Java工厂模式
    簡單SQL存儲過程實例
    Cocos2d-x 3.0新引擎文件夹结构
    设计模式之十 适配器模式
    腰围2尺1,2,3,4,5,6,7,8寸各自等于是多少厘米/英寸(对比表)
    iOS 基础函数解析
    内部元素一一相应的集合的算法优化,从list到hashmap
  • 原文地址:https://www.cnblogs.com/jianmingyuan/p/6000133.html
Copyright © 2011-2022 走看看