获取用户消息
用户发送的消息包含在微信服务器发送的HTTP POST请求中,用户发送的消息应该是从POST请求的数据流中获取的。
微信服务器向服务器推送HTTP请求消息示例
POST /cgi-bin/wxpush?msg _ signature=477715d 11 CDB 4164915 debcba 66 CB 864d 751 F3 E6 timestamp=1409659813 once=1372623149 HTTP/1.1
qy.weixin.qq.com :号主机
从开机自检请求中获取数据
通过这种方式获取的用户消息可能有加密消息和未加密消息两种,这与你在微信公众平台上配置网站时选择消息加解密模式有关。如果选择明文模式,将不会加密。如果选择兼容模式,则密文和明文都存在。如果选择安全模式,用户消息将被加密,并需要在进一步处理前解密。
2.回复用户消息
参考微信公众平台开发文档
正文消息
xml ToUserName![CData[{ 0 }]/TouseName FrOm UserName![CData[{ 1 }]/from username create time { 2 }/create time MsgType![CData[文本]]/MsgType内容![CData[{ 3 }]/内容/xml
图片信息
xml ToUserName![CData[{ 0 }]/TouseName FrOm UserName![CData[{ 1 }]/from username create time { 2 }/create time MsgType![CData[Image]]/MsgType Image MediaId![CDATA[{ 3 }]/MediaId/Image/XML消息格式已经存在,那么我们只需要设置相应的参数即可。
responseContent=字符串。格式(复制器类型。消息_文本,来自用户名。InnerText,ToUserName。内部文本,日期时间。现在。滴答,字符串。IsNullOrEmpty(回复)?对不起,我听不懂你的话: reply);3.用户消息和服务器消息的加密和解密
微信公众平台开发者文档中提供了C、C#、java等语言的加解密示例。我们使用C#,只需要在项目中添加两个文件。Sample.cs是微信团队给出的样本代码,不需要引用。
添加对WXBizMsgCrypt.cs和Cryptography.cs文件的引用。为了进一步封装和方便调用,我创建了一个新的类微信安全帮助器
在类中定义了两个方法分别进行加密和解密,创建一个WXBizMsgCrypt对象,并调用其方法进行加密和解密。有关具体代码,请参见代码示例
微信安全帮助
使用系统;使用系统。集合。通用;使用系统Linq .使用系统。文字;使用系统。线程化。任务;公共命名空间{公共类微信安全工具}///摘要/定义令牌,与微信公共平台上的代币保持一致////摘要私有常量字符串Token=' StupidMe///摘要///AppId要与微信公共平台上的AppId保持一致////摘要私有常量字符串AppId=' 11111111111//摘要///加密用////摘要私有常量字符串AES密钥=' pvx2k zwrlqskuabvarglsaxcwtxfwf 3 xonj 9 ieumg ';私静腾讯WXBizMsgCrypt wxcpt=新腾讯wxbizmgcrypt(Token、AESKey、AppId);私有字符串签名、时间戳、随机数;私有静态日志助手记录器=新的LogHelper(typeof(微信安全权限助手));公众的微信安全签名(字符串签名、字符串时间戳、字符串随机数){ this . signature=signature this . timestamp=时间戳;this.nonce=nonce} ///摘要///加密消息////summary ///param name='msg '要加密的消息/param /返回加密后的消息/返回公共字符串EncryptMsg(字符串MSG){ string EncryptMSG=' ';(同Internationalorganizations)国际组织结果=wxcpt .加密消息(消息),时间戳、随机数、ref EncryptMSG);如果(结果==0){ return EncryptMSG;} else { logger .错误('消息加密失败');返回"";} } ///摘要///解密消息////summary ///param name='msg '消息体/param /返回明文消息/返回公共字符串DecryptMsg(字符串msg){ string DecryptMSg=' ';(同Internationalorganizations)国际组织结果=wxcpt .DecryptMsg(签名、时间戳、随机数、Msg、ref DecryptMsg);如果(结果!=0) {记录器.错误('消息解密失败,结果:’结果);}返回decryptMsg} }}以上所述就是本文的全部内容了,希望大家能够喜欢。