zoukankan      html  css  js  c++  java
  • 微信公众平台企业号验证接口、回调 PHP版

    微信公众平台企业号验证接口、回调 PHP版,本人为了解决这个企业号的验证和发送消息的问题,整整研究了几天时间,由于微信企业号刚推出来,网上资料太少了!后来在一些朋友的帮助下和本人重复调试完好下,最终整理得到了比較理想的文档,经亲測,实验成功。


    include_once "WXBizMsgCrypt.php";
    // 第三方发送消息给公众平台 
    $encodingAesKey = "rpJmhCphnndiCLIcNKcUmhTn2GQBNjISPU9GfsfOlxx"; 
    $token = "xxxxxxx"; 
    $corpId ="wxa9a0031f24631f9x"; //这里已正确填写自己的corpid 
    //公众号server数据
    $sReqMsgSig = $sVerifyMsgSig = $_GET['msg_signature'];
    $sReqTimeStamp = $sVerifyTimeStamp = $_GET['timestamp'];
    $sReqNonce = $sVerifyNonce = $_GET['nonce'];
    $sReqData = file_get_contents("php://input");;
    $sVerifyEchoStr = $_GET['echostr']; 
    $wxcpt = new WXBizMsgCrypt($token, $encodingAesKey, $corpId); 
    if($sVerifyEchoStr){
    $sEchoStr = "";
    $errCode = $wxcpt->VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
    if ($errCode == 0) {
    print($sEchoStr); 
    } else {
    print($errCode . "
    
    ");
    }
    exit;
    }
     //decrypt
    $sMsg = "";  //解析之后的明文
    $errCode = $wxcpt->DecryptMsg($sReqMsgSig, $sReqTimeStamp, $sReqNonce, $sReqData, $sMsg);
    if ($errCode == 0) { 
    $xml = new DOMDocument();
    $xml->loadXML($sMsg); 
    $reqToUserName = $xml->getElementsByTagName('ToUserName')->item(0)->nodeValue;
    $reqFromUserName = $xml->getElementsByTagName('FromUserName')->item(0)->nodeValue;
    $reqCreateTime = $xml->getElementsByTagName('CreateTime')->item(0)->nodeValue;
    $reqMsgType = $xml->getElementsByTagName('MsgType')->item(0)->nodeValue;
    $reqContent = $xml->getElementsByTagName('Content')->item(0)->nodeValue;
    $reqMsgId = $xml->getElementsByTagName('MsgId')->item(0)->nodeValue;
    $reqAgentID = $xml->getElementsByTagName('AgentID')->item(0)->nodeValue; 
    switch($reqContent){
    case "马云":
    $mycontent="您好,马云!我知道您创建了阿里巴巴!";
    break;
    case "马化腾":
    $mycontent="您好,马化腾!我知道创建了企鹅帝国!";
    break;
    case "史玉柱":
    $mycontent="您好,史玉柱!我知道您创建了巨人网络!";
    break;
    default :
    $mycontent="你是谁啊?!一边凉快去!";
    break;
    }
    $sRespData = 
    "<xml>
    <ToUserName><![CDATA[".$reqFromUserName."]]></ToUserName>
    <FromUserName><![CDATA[".$corpId."]]></FromUserName>
    <CreateTime>".sReqTimeStamp."</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[".$mycontent."]]></Content>
    </xml>";
    $sEncryptMsg = ""; //xml格式的密文
    $errCode = $wxcpt->EncryptMsg($sRespData, $sReqTimeStamp, $sReqNonce, $sEncryptMsg);
    if ($errCode == 0) {
    //file_put_contents('smg_response.txt', $sEncryptMsg); //debug:查看smg
    print($sEncryptMsg);
    } else {
    print($errCode . "
    
    ");
    }
    } else {
    print($errCode . "
    
    ");
    }
    ?>



    WXBizMsgCrypt.php 文件请点击以下地址下载 :

    http://mp.weixin.qq.com/wiki/downloads/SampleCode.zip

  • 相关阅读:
    DNS服务器安全之通过ipset对DNS异常解析流量的源IP地址进行管控
    C# Windows Api的一些方法 封装 以及 常用参数
    Java基础—异常(1)
    Java基础——异常(2)
    vb6 wininet
    vb6转16进制
    Java 中与(&)短路与(&&)以及 或(|)短路或(||)的关系
    关于面向对象的简单总结
    javaScript的基本规范
    关于TCP传输的三次握手四次挥手策略
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4209091.html
Copyright © 2011-2022 走看看