コード例 #1
0
ファイル: ResponsedMsg.cs プロジェクト: MrNor/WxQY
        /// <summary>
        /// 根据实体生成XML
        /// </summary>
        /// <param name="obj">实体</param>
        /// <returns></returns>
        public static string GetXmlByObj(ResponsedMsg obj)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<xml>");
            sb.Append(string.Format("<{0}><![CDATA[{1}]]></{0}>", "ToUserName", obj.ToUserName));
            sb.Append(string.Format("<{0}><![CDATA[{1}]]></{0}>", "FromUserName", obj.FromUserName));
            sb.Append(string.Format("<{0}>{1}</{0}>", "CreateTime", obj.CreateTime));
            sb.Append(string.Format("<{0}><![CDATA[{1}]]></{0}>", "MsgType", obj.MsgType));
            switch (obj.MsgType.ToLower())
            {
                case "text":
                    sb.Append(string.Format("<Content><![CDATA[{0}]]></Content>", ((RspMsgText)obj).Content));
                    break;
                case "image":
                    sb.Append(string.Format("<{0}><MediaId>{1}</MediaId></{0}>", ((RspMsgImage)obj).MsgType, ((RspMsgImage)obj).MediaId));
                    break;
                case "voice":
                    sb.Append(string.Format("<{0}><MediaId>{1}</MediaId></{0}>", ((RspMsgVoice)obj).MsgType, ((RspMsgVoice)obj).MediaId));
                    break;
                case "video":
                    sb.Append("<Video>");
                    foreach (System.Reflection.PropertyInfo p in ((RspMsgVideo)obj).VideoObj.GetType().GetProperties())
                    {
                        sb.Append(string.Format("<{0}>{1}</{0}>", p.Name, p.GetValue(obj, null).ToString()));
                    }
                    sb.Append("</Video>");
                    break;
                case "news":
                    sb.Append(string.Format("<{0}>{1}</{0}>", "ArticleCount", ((RspMsgNews)obj).ArticleCount));
                    sb.Append("<Articles>");
                    for (int i = 0; i < ((RspMsgNews)obj).ArticleList.Count; i++)
                    {
                        sb.Append("<item>");
                        sb.Append(string.Format("<{0}>{1}</{0}>", "Title", ((RspMsgNews)obj).ArticleList[i].title));
                        sb.Append(string.Format("<{0}>{1}</{0}>", "Description", ((RspMsgNews)obj).ArticleList[i].description));
                        sb.Append(string.Format("<{0}>{1}</{0}>", "PicUrl", ((RspMsgNews)obj).ArticleList[i].picurl));
                        sb.Append(string.Format("<{0}>{1}</{0}>", "Url", ((RspMsgNews)obj).ArticleList[i].url));
                        sb.Append("</item>");
                    }
                    sb.Append("</Articles>");

                    break;
            }
            sb.Append("</xml>");
            return sb.ToString();
        }
コード例 #2
0
ファイル: WeChat.cs プロジェクト: MrNor/WxQY
        /// <summary>
        /// 根据响应实体生成回包XML
        /// </summary>
        /// <param name="obj">响应实体</param>
        /// <param name="signature">签名</param>
        /// <param name="timestamp">时间戳</param>
        /// <param name="nonce">随机串</param>
        /// <returns></returns>
        public string GetRspXmlByObj(ResponsedMsg obj)
        {
            string nonce = Guid.NewGuid().ToString().Replace("-", "");
            string timestamp = TimeStamp.Now().ToString();
            var rspStr = ResponsedMsg.GetXmlByObj(obj);
            Tencent.WXBizMsgCrypt wxcpt = new Tencent.WXBizMsgCrypt(this._token, this._encodingAESKey, this._corpID);
            string sEncryptStr = "";
            var res = wxcpt.EncryptMsg(rspStr, timestamp, nonce, ref sEncryptStr);
            if (res == 0)
            {
                return sEncryptStr;
            }

            return "";
        }