@kyletiao
2015-10-27T04:52:01.000000Z
字数 1761
阅读 1479
企业号开发 u9TechDay
基本原理很简单。为了打消大家的顾虑,先简单介绍了微信公众平台的基本原理。
微信服务器就相当于一个转发服务器,终端(手机、Pad等)发起请求至微信服务器,微信服务器,然后将请求转发给自定义服务(这就里就是我们的具体实现)。
服务处理完毕,然后挥发给微信服务器,微信服务器再将具体响应回复到终端。
通信协议为:HTTP
数据格式为:XML
具体的流程如下图所示:

写在前面
首先你得找到企业号的id
首先你得找到企业号的id
首先你得找到企业号的id
注册一个应用

最重要的三个信息。
必须要求80或443端口,必须是有效域名
基本的环境搭建
upupw集成环境
socket log 巨牛无比的php调试工具
微信的消息解密库
开搞
告诉微信我们的连接已经准备好接受微信服务器的消息
$encodingAesKey = "8eRBxuEppkPfWOhCfuD0rydDlW5c0Hv3iEPQNMIwsfN"; $token = "YvdFdFJG7zbjTp7DBYrAMA8";$corpId ="wx1c0b6c7f407a9f7e"; //这里已正确填写自己的corpid//公众号服务器数据$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 . "\n\n");}exit;}
接收微信发送的消息
$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;
获取到了消息 就可以干任何你想干的事情了