企业收到post请求之后应该
1.解析出url上的参数,包括消息体签名(msg_signature),时间戳(timestamp)以及随机数字串(nonce)
2.验证消息体签名的正确性。
3.将post请求的数据进行xml解析,并将标签的内容进行解密,解密出来的明文即是用户回复消息的明文,明文格式请参考官方文档
第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);
}
*/
?>