<?php require '../inc/odbc.php';?>
|
<?php
|
include_once "WXBizMsgCrypt.php";
|
// 假设企业号在公众平台上设置的参数如下
|
$encodingAesKey = "p53txECFAcKYMQ4vzBEvJffCbugNgzapBq7IatW2sV1";
|
$token = "QDG6eK";
|
$corpId = "wx248505bfbab6d0c1";
|
|
/*
|
------------使用示例二:对用户回复的消息解密---------------
|
用户回复消息或者点击事件响应时,企业会收到回调消息,此消息是经过公众平台加密之后的密文以post形式发送给企业,密文格式请参考官方文档
|
假设企业收到公众平台的回调消息如下:
|
POST /cgi-bin/wxpush? msg_signature=477715d11cdb4164915debcba66cb864d751f3e6×tamp=1409659813&nonce=1372623149 HTTP/1.1
|
Host: qy.weixin.qq.com
|
Content-Length: 613
|
<xml>
|
<ToUserName><![CDATA[wx5823bf96d3bd56c7]]></ToUserName><Encrypt><![CDATA[RypEvHKD8QQKFhvQ6QleEB4J58tiPdvo+rtK1I9qca6aM/wvqnLSV5zEPeusUiX5L5X/0lWfrf0QADHHhGd3QczcdCUpj911L3vg3W/sYYvuJTs3TUUkSUXxaccAS0qhxchrRYt66wiSpGLYL42aM6A8dTT+6k4aSknmPj48kzJs8qLjvd4Xgpue06DOdnLxAUHzM6+kDZ+HMZfJYuR+LtwGc2hgf5gsijff0ekUNXZiqATP7PF5mZxZ3Izoun1s4zG4LUMnvw2r+KqCKIw+3IQH03v+BCA9nMELNqbSf6tiWSrXJB3LAVGUcallcrw8V2t9EL4EhzJWrQUax5wLVMNS0+rUPA3k22Ncx4XXZS9o0MBH27Bo6BpNelZpS+/uh9KsNlY6bHCmJU9p8g7m3fVKn28H3KDYA5Pl/T8Z1ptDAVe0lXdQ2YoyyH2uyPIGHBZZIs2pDBS8R07+qN+E7Q==]]></Encrypt>
|
<AgentID><![CDATA[218]]></AgentID>
|
</xml>
|
企业收到post请求之后应该
|
1.解析出url上的参数,包括消息体签名(msg_signature),时间戳(timestamp)以及随机数字串(nonce)
|
2.验证消息体签名的正确性。
|
3.将post请求的数据进行xml解析,并将<Encrypt>标签的内容进行解密,解密出来的明文即是用户回复消息的明文,明文格式请参考官方文档
|
第2,3步可以用公众平台提供的库函数DecryptMsg来实现。
|
*/
|
|
$sReqMsgSig=empty($_REQUEST['msg_signature'])!=false ? "1" : $_REQUEST['msg_signature'];
|
$sReqTimeStamp=empty($_REQUEST['timestamp'])!=false ? "2" : $_REQUEST['timestamp'];
|
$sReqNonce=empty($_REQUEST['nonce'])!=false ? "3" : $_REQUEST['nonce'];
|
|
$sql="insert into API_Json (method,Json,reserve) values ('contactsApi','".$sReqMsgSig."','OK')";
|
$UPsql = sqlsrv_query($conn,$sql);
|
/*
|
// post请求的密文数据
|
$sReqData = $_POST;
|
$sMsg = ""; // 解析之后的明文
|
$errCode = $wxcpt->DecryptMsg($sReqMsgSig, $sReqTimeStamp, $sReqNonce, $sReqData, $sMsg);
|
if ($errCode == 0) {
|
// 解密成功,sMsg即为xml格式的明文
|
//var_dump($sMsg);
|
// TODO: 对明文的处理
|
$sql="insert into API_Json (method,Json) values ('contactsApi','OK')";
|
$UPsql = sqlsrv_query($conn,$sql);
|
$sql="insert into API_Json (method,Json) values ('contactsApi','".$sMsg."')";
|
$UPsql = sqlsrv_query($conn,$sql);
|
} else {
|
//print("ERR: " . $errCode . "\n\n");
|
$sql="insert into API_Json (method,Json) values ('contactsApi','".$errCode."')";
|
$UPsql = sqlsrv_query($conn,$sql);
|
//exit(-1);
|
}
|
*/
|
?>
|