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

  • 相关阅读:
    [编织消息框架][设计协议]bit基础
    android studio最简单的包名修改方法
    MySQL之四——浅谈 DML、DDL、DCL的区别
    MySQL之三——SQL优化
    MySQL之二——MySQL缓存机制
    MySQL之一——基础语法详解
    游戏测试相关内容
    第一篇博客
    mybatis中union可以用if判断连接,但是<select>中第一个select语句不能被if判断,因此可以从dual表中查询null来凑齐。union如果使用order by排序,那么只能放在最后一个查询语句的位置,并且不能带表名。
    博客园
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4209091.html
Copyright © 2011-2022 走看看