一.配置公众号消息加解密方式
在公众号官方管理后台->开发->基本配置->修改配置上有3种方式,如下:
其中,EncodingAESKey可以随机生成.
只有被动回复消息(即粉丝向公众号发送消息,由微信服务器向公众号服务器转发xml结构,同时公众号服务器返回xml结构,由微信服务器转发给粉丝)可以设置加密.其他3种消息(群发消息,客服消息,模板消息)的调用因为是API调用而不是对请求的返回,所以不需要加解密.
加解密方式说明:
1).明文模式:微信服务器向公众号服务器(即我们要处理的http://szuzsq.tunnel.qydev.com/weixin/index.php)发送的xml结构是原始的,没有加密.如下:
<xml>
<ToUserName><![CDATA[gh_733c42e0aee9]]></ToUserName>
<FromUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></FromUserName>
<CreateTime>1468291653</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[i love you]]></Content>
<MsgId>6306264631030309910</MsgId>
</xml>
而公众号服务器向微信服务器回复的xml结构也是原始的,没有加密.如下:
<xml>
<ToUserName><![CDATA[oIaodvwZe03Amjb8_jQ0ZHGmr-4w]]></ToUserName>
<FromUserName><![CDATA[gh_733c42e0aee9]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>
2).安全模式:微信服务器向公众号服务器发送的xml结构是加密之后的,如下:
<xml>
<ToUserName><![CDATA[gh_733c42e0aee9]]></ToUserName>
<Encrypt><![CDATA[5iQIChI9SHJ8AygPRlQXg0TjENPp/+gMsL8QWceqRXbmZa9tfwft9JtVMhsd6acMJjq7s/gi6E/dLoaJ5optAJ3ixUoHlsJSiryZC/wkFZkY4++HQEr9sj0wHbsT9UbbW/TfXY0t5pQtM62hQKHO/AUFHiXAJ31kQrcGY4QZHyJjQDS6bchvufhOnm8paDMak3HeTf0vMBzkSZcl78V23uq8wvV1rBx4K9uzPz6AZmfV2rLbaA5u/fsQFcntl8aDK19PZfZreawt0et3AXv1DgFZEciC8vlCxwta6mjuAEIdL81t4mfa8V28iD8ul+AjWEMKcHszBQqQUkG3BTItB/8o+8h6PLYD+ZsHEUBbPttRhrlo+UlfXTehtGPVnd97GZ72ImWXb5wIadKcGSgXzvRRkVv1zav3CTjRRZH5k8kLqIxso9VmjD4Un+IF8vKaJqAu0irYWFMWYIhQZZ9CQQ==]]></Encrypt>
</xml>
而公众号服务器向微信服务器回复的xml结构也是加密之后的.如下:
<xml>
<Encrypt><![CDATA[lSK3AQg4RCd3GvUpEVQiZSxBWpAgH3MJjoZIGGjd0rcO14H7JasE2O8bzA/0PusNfKuxMmcCsTq3vHlbrdvALSioQKlpl/QrNH15kelS0bG12UMJhxs1CDa+ES9IuZ4wR7Ra/Oa3kCUh9x0RKdxkAWa0+jgT