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

  • 相关阅读:
    React性能优化 渲染20000多条checkbox组件,点击选择checkbox组件的时候特别卡,解决办法
    react网页多语言(react-intl-universal)
    个人作品
    程序员和产品经理的那些事
    three.js 根据不同的图片做不同的动画特效 科技感十足
    互联网行业最佳产品开发流程 推荐!
    类似于YouTube、Medium、知乎等网站使用的进度条插件 NProgress
    js模拟点击下载文件到本地
    MySQL记录操作(增删改)
    MySQL表的操作
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4209091.html
Copyright © 2011-2022 走看看