我们给我们关注的公众号发送信息,公众号服务器会给我们的服务器地址通过两种方式发送信息,get和post
举例我们的php代码为
//获取微信发来的内容
$gets_content = $_GET;
$posts_content = file_get_contents('php://input');
//写入get 内容
file_put_contents('info.txt',json_encode($gets_content)."\n",FILE_APPEND);
// 写入post 内容
file_put_contents('info.txt',json_encode($posts_content)."\n",FILE_APPEND);
那么我们获取到的内容分为
GET格式(这个是安全模式下我们获取到的get数据,明文模式下,会没有encrypt_type,msg_signature这两个)
{
"signature":"e49f079b0b54b2bcb969f94771d8674c44e427b5",
"timestamp":"1664783380",
"nonce":"760501301",
"openid":"ouRL456Q29l82zNwFmOwI3hc4uEo",
"encrypt_type":"aes",
"msg_signature":"ca9a42bd1b865b3dc44274acfa3658793618eb50"
}
和POST格式(加密的)
//这个是post部分,加密格式的
"<xml>\n <ToUserName><![CDATA[gh_17b02f54cdc2]]><\/ToUserName>\n <Encrypt><![CDATA[TV0XwbKpPd2Hr8EGPK9L7E6+jkcTDEEMf2ENfcnEUbEnIN6c61v66je9slmtlMVHwb78phRuO\/5omqxetSsREpwuh\/bqD9eXbJq1hWvFg6jyFauXFH8eFKjTdku\/jc7VNvlRZ8m06x2FzN6j6d9HJV6ajdNXoDELGzZY5Hg4nDTr4S15Nh1FdCOucurRiYO0RCy8IM6XYI8yD\/cCLTHoyiIc5BuHq6ms4chBnlrvIn4E0S37aIlpPTbu5TTq2Y9526eOY7VNQr7FZTDOz7Bq\/+GgFNM5GD678rRaB5MDXVVeyMAQyYj3LVVFvrQSHcTPNiUDkEkeQrV9FW1jZ\/Hw7pEWdBtehQEi9N+nzthLQKZIlQDLhx6jlLOh7rmcCraiQUzu6MmpX+d6FAIB7yY+22oPJ4VZ0oxBpKXdFfHAfmg=]]><\/Encrypt>\n<\/xml>\n"
我们来附上一份如果非加密形式的POST内容,并整理一下格式,我测试的就是个文本内容,各种格式会有稍微的差异,但是差异不大,顶多多一两条具体信息内容
"<xml>
<ToUserName><![CDATA[gh_17b02f54cdc2]]><\/ToUserName>\n //这个就是发送给谁,我们自己
<FromUserName><![CDATA[ouRL456Q29l82zNwFmOwI3hc4uEo]]><\/FromUserName>\n //谁发送的,OpenID
<CreateTime>1664783998<\/CreateTime>\n //发送时间
<MsgType><![CDATA[text]]><\/MsgType>\n //发送内容的类型,其中的text代表文本,这个可以有很多种,例如text,image,voice(语音),video(视频),shortvideo(小视频),location,link
<Content><![CDATA[1111111]]><\/Content>\n //发送的内容主体,我发送了1111111做测试
<MsgId>23833973921440014<\/MsgId>\n //本条内容在微信内部的内容id
<\/xml>"
我们正式使用中,肯定是使用加密格式的,不可能明文,但是测试或者开发阶段为了方便测试,很多情况会使用明文。