/// <summary> /// 返回XML格式的响应消息 /// </summary> /// <param name="encryptType">消息加密类型</param> /// <returns>返回XML格式的响应消息</returns> public string ToXml(MessageEncryptTypeEnum encryptType) { int WXBizMsgCrypt_OK = 0; //得到未加密的XML响应消息 string xml = ToXml(); //如果需要加密,加密消息 if (encryptType == MessageEncryptTypeEnum.aes) { int timeStamp = Utility.ToWeixinTime(CreateTime); Random random = new Random(); string nonce = random.Next().ToString(); AccountInfo account = AccountInfoCollection.GetAccountInfo(FromUserName); if (account != null) { WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(account.Token, account.EncodingAESKey, account.AppId); string xmlEncrypt = ""; //加密消息 if (wxcpt.EncryptMsg(xml, timeStamp.ToString(), nonce, ref xmlEncrypt) == WXBizMsgCrypt_OK) { return(xmlEncrypt); } } } return(xml); }
/// <summary> /// 解密消息 /// </summary> /// <returns>返回解密之后的消息</returns> private string DecryptMessage(string content) { string msg = ""; AccountInfo account = AccountInfoCollection.GetAccountInfo("zizaifan"); if (account == null) { return(msg); } WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(account.Token, account.EncodingAESKey, account.AppId); string msg_signature = RequestEx.TryGetQueryString("msg_signature", "", request); string timestamp = RequestEx.TryGetQueryString("timestamp", "", request); string nonce = RequestEx.TryGetQueryString("nonce", "", request); wxcpt.DecryptMsg(msg_signature, timestamp, nonce, content, ref msg); return(msg); }