一、业务实体模型类
using System; /// <summary> /// 移动梦网 MISC 1.6 接口 /// 业务实体模型 /// create by hello world at 2006-11-29 (QQ:8935300) /// </summary> namespace Com.Rondi.MISC16{ public class ProvisionInfo { public ProvisionInfo() { } // 消息类型 private string msgType; // 该消息编号 private string transactionID; // 该接口消息的版本号,本次所有的接口消息的版本都为“1.5.0” private string version; // Send_Address节点与Dest_Address节点 /* 发送方:设备类型 0:MISC 100:ISMG 101:WAP SP PROXY 1XX:其他业务网关 200:WAP PORTAL 201:WWW PORTAL 202:VOICE PORTAL 203:PDA PORTAL 2XX:其他门户 300:MMSC 301:KJAVA SERVER 302:LSP 3XX:其它应用平台 */ private int send_Address_DeviceType; // 发送方:设备编号,设备编号采用各设备的入网编号,例如短信网关使用网关ID、对SP使用其企业代码,该设备编号由MISC分配,并且在同一设备类型中该编号唯一 private string send_Address_DeviceID; // 同上接收方 private int dest_Address_DeviceType; // 同上接收方 private string dest_Address_DeviceID; // FeeUser_ID与DestUser_ID节点 // 计费用户标识:用户标识类型 1:用手机号标识 2:用伪码标识 3:两者同时标识 private int feeUser_ID_UserIDType; // 计费用户标识:用户手机号 private string feeUser_ID_MSISDN; // 计费用户标识:用户伪码 private string feeUser_ID_PseudoCode; // 同上使用用户标识 private int destUser_ID_UserIDType; // 同上使用用户标识 private string destUser_ID_MSISDN; // 同上使用用户标识 private string destUser_ID_PseudoCode; // 临时订购关系的事务ID private string linkID; /* 服务状态管理动作代码,具体值如下: 1: 开通服务; 2: 停止服务; 3: 激活服务; 4: 暂停服务; */ private int actionID; /* 产生服务状态管理动作原因的代码,具体值如下: 1:用户发起行为 2:Admin&1860发起行为 3:Boss停机 4:Boss开机 5:Boss过户 6:Boss销户 7:Boss改号 8:扣费失败导致的服务取消 9:其他 */ private int actionReasonID; // 该字段及对应属性用于反向接口中Service_ID节点 private int serviceIDType; // SP的企业代码 private string spid; // SP中该服务的服务代码 private string spServiceID; // 服务的访问方式 1:WEB 2:WAP 3:SMS private int accessMode; // 服务订购参数(base64加密),内容是长号码+空格+用户发送内容 private string featureStr; public string MsgType { get { return this .msgType; } set { this .msgType = value; } } public string TransactionID { get { return this .transactionID; } set { this .transactionID = value; } } public string Version { get { return this .version; } set { this .version = value; } } public int Send_Address_DeviceType { get { return this .send_Address_DeviceType; } set { this .send_Address_DeviceType = value; } } public string Send_Address_DeviceID { get { return this .send_Address_DeviceID; } set { this .send_Address_DeviceID = value; } } public int Dest_Address_DeviceType { get { return this .dest_Address_DeviceType; } set { this .dest_Address_DeviceType = value; } } public string Dest_Address_DeviceID { get { return this .dest_Address_DeviceID; } set { this .dest_Address_DeviceID = value; } } public int FeeUser_ID_UserIDType { get { return this .feeUser_ID_UserIDType; } set { this .feeUser_ID_UserIDType = value; } } public string FeeUser_ID_MSISDN { get { return this .feeUser_ID_MSISDN; } set { this .feeUser_ID_MSISDN = value; } } public string FeeUser_ID_PseudoCode { get { return this .feeUser_ID_PseudoCode; } set { this .feeUser_ID_PseudoCode = value; } } public int DestUser_ID_UserIDType { get { return this .destUser_ID_UserIDType; } set { this .destUser_ID_UserIDType = value; } } public string DestUser_ID_MSISDN { get { return this .destUser_ID_MSISDN; } set { this .destUser_ID_MSISDN = value; } } public string DestUser_ID_PseudoCode { get { return this .destUser_ID_PseudoCode; } set { this .destUser_ID_PseudoCode = value; } } public string LinkID { get { return this .linkID; } set { this .linkID = value; } } public int ActionID { get { return this .actionID; } set { this .actionID = value; } } public int ActionReasonID { get { return this .actionReasonID; } set { this .actionReasonID = value; } } public int ServiceIDType { get { return this .serviceIDType; } set { this .serviceIDType = value; } } public string SPID { get { return this .spid; } set { this .spid = value; } } public string SPServiceID { get { return this .spServiceID; } set { this .spServiceID = value; } } public int AccessMode { get { return this .accessMode; } set { this .accessMode = value; } } public string FeatureStr { get { return this .featureStr; } set { this .featureStr = value; } } }}二、正向同步、取消接口
using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; using System.Xml; using System.Text; /// <summary> /// 移动梦网 MISC 1.6 接口 /// 正向同步接口 /// create by hello world at 2006-11-29 /// </summary> public partial class MISC16_SyncOrderRelationReq : System.Web.UI.Page{ protected void Page_Load( object sender, EventArgs e) { // 基本参数 Request.ContentType = " text/xml " ; Request.ContentEncoding = System.Text.Encoding.UTF8; XmlDocument doc = new XmlDocument(); ProvisionInfo myP = new ProvisionInfo(); // 返回结果参数 string MsgType = " SyncOrderRelationResp " ; string TransactionID = "" ; string Version = " 1.5.0 " ; int hRet = 1 ; using (Stream sm = Request.InputStream) { if (sm != null && sm.Length > 0 ) { doc.Load(Request.InputStream); } sm.Close(); } // 如果有数据 if (doc.InnerXml.Length > 0 ) { try { #region 获取数据 XmlElement root = doc.DocumentElement; foreach (XmlNode node in root.ChildNodes[ 0 ]) // 遍历SOAP-ENV:Header节点 { if (node.Name == " TransactionID " ) { myP.TransactionID = node.InnerText; } } foreach (XmlNode node in root.ChildNodes[ 1 ].ChildNodes[ 0 ]) // 遍历SOAP-ENV:Body节点的子节点SyncOrderRelationReq { if (node.Name == " Version " ) { myP.Version = node.InnerText; } else if (node.Name == " MsgType " ) { myP.MsgType = node.InnerText; } else if (node.Name == " LinkID " ) { myP.LinkID = node.InnerText; } else if (node.Name == " ActionID " && node.InnerText.Trim().Length > 0 ) { myP.ActionID = int .Parse(node.InnerText); } else if (node.Name == " ActionReasonID " && node.InnerText.Trim().Length > 0 ) { myP.ActionReasonID = int .Parse(node.InnerText); } else if (node.Name == " SPID " ) { myP.SPID = node.InnerText; } else if (node.Name == " SPServiceID " ) { myP.SPServiceID = node.InnerText; } else if (node.Name == " AccessMode " && node.InnerText.Trim().Length > 0 ) { myP.AccessMode = int .Parse(node.InnerText); } else if (node.Name == " FeatureStr " ) { myP.FeatureStr = node.InnerText; } else if (node.Name == " Send_Address " && node.ChildNodes.Count > 0 ) // 子遍历Send_Address节点 { foreach (XmlNode node1 in node) { if (node1.Name == " DeviceType " && node1.InnerText.Trim().Length > 0 ) { myP.Send_Address_DeviceType = int .Parse(node1.InnerText); } else if (node1.Name == " DeviceID " ) { myP.Send_Address_DeviceID = node1.InnerText; } } } else if (node.Name == " Dest_Address " && node.ChildNodes.Count > 0 ) // 子遍历Dest_Address节点 { foreach (XmlNode node1 in node) { if (node1.Name == " DeviceType " && node1.InnerText.Trim().Length > 0 ) { myP.Dest_Address_DeviceType = int .Parse(node1.InnerText); } else if (node1.Name == " DeviceID " ) { myP.Dest_Address_DeviceID = node1.InnerText; } } } else if (node.Name == " FeeUser_ID " && node.ChildNodes.Count > 0 ) // 子遍历FeeUser_ID节点 { foreach (XmlNode node1 in node) { if (node1.Name == " UserIDType " && node1.InnerText.Trim().Length > 0 ) { myP.FeeUser_ID_UserIDType = int .Parse(node1.InnerText); } else if (node1.Name == " MSISDN " ) { myP.FeeUser_ID_MSISDN = node1.InnerText; } else if (node1.Name == " PseudoCode " ) { myP.FeeUser_ID_PseudoCode = node1.InnerText; } } } else if (node.Name == " DestUser_ID " && node.ChildNodes.Count > 0 ) // 子遍历DestUser_ID节点 { foreach (XmlNode node1 in node) { if (node1.Name == " UserIDType " && node1.InnerText.Trim().Length > 0 ) { myP.DestUser_ID_UserIDType = int .Parse(node1.InnerText); } else if (node1.Name == " MSISDN " ) { myP.DestUser_ID_MSISDN = node1.InnerText; } else if (node1.Name == " PseudoCode " ) { myP.DestUser_ID_PseudoCode = node1.InnerText; } } } } #endregion // 1、Version 与 MsgType 判断 if (myP.Version == " 1.5.0 " && myP.MsgType == " SyncOrderRelationReq " ) { // 2、SPID 判断 if (myP.SPID == System.Configuration.ConfigurationManager.AppSettings[ " SPID " ].ToString().Trim()) { // 3、SPServiceID 判断 if (myP.SPServiceID.ToUpper() == System.Configuration.ConfigurationManager.AppSettings[ " SPServiceID " ].ToString().Trim().ToUpper()) { #region 同步操作 // 正向订购:请求为开通或激活服务都视为开通请求 if (myP.ActionID == 1 || myP.ActionID == 3 ) { if (...) // 调用自己方法与数据库同步 hRet = 0 ; else hRet = 1 ; } // 正向取消:请求为停止或暂停都视为取消 if (myP.ActionID == 2 || myP.ActionID == 4 ) { // 取消前检测是否存在订购关系(user表的grd_id是否大于0) if (...) { if (...) // 调用自己方法与数据库同步 hRet = 0 ; // 取消成功 else hRet = 1 ; // 调用取消存储过程发生异常,标识为未知错误 } else { hRet = 4011 ; // SP端不存在订购关系 } } #endregion } else { hRet = 4004 ; // 无效的SPServiceID } } else { hRet = 4003 ; // 无效的SPID } } else { hRet = 4000 ; // 无效的MsgType } } catch { hRet = 1 ; } } #region 记录日志 using (StreamWriter sw = new StreamWriter(HttpRuntime.AppDomainAppPath + @" MISC16Log " + DateTime.Now.ToString( " yyyy_MM_dd " ) + " .txt " , true , System.Text.Encoding.UTF8)) { sw.WriteLine( " request time: " + DateTime.Now.ToString()); sw.WriteLine( " request ip: " + Request.UserHostAddress.ToString()); sw.WriteLine( " request content: " + doc.InnerXml); sw.WriteLine( " result: " + hRet.ToString()); sw.WriteLine( "" ); sw.Close(); } #endregion #region 返回结果 TransactionID = myP.TransactionID; Response.Clear(); Response.ContentType = " text/xml " ; Response.ContentEncoding = System.Text.Encoding.UTF8; StringBuilder xmlResult = new StringBuilder( " <?xml version="1.0" encoding="utf-8" ?> " ); xmlResult.Append( " <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> " ); xmlResult.Append( " <SOAP-ENV:Header> " ); xmlResult.Append( " <TransactionID xmlns="http://www.monternet.com/dsmp/schemas/"> " + TransactionID + " </TransactionID> " ); xmlResult.Append( " </SOAP-ENV:Header> " ); xmlResult.Append( " <SOAP-ENV:Body> " ); xmlResult.Append( " <SyncOrderRelationResp xmlns="http://www.monternet.com/dsmp/schemas/"> " ); xmlResult.Append( " <Version> " + Version + " </Version> " ); xmlResult.Append( " <MsgType> " + MsgType + " </MsgType> " ); xmlResult.Append( " <hRet> " + hRet.ToString() + " </hRet> " ); xmlResult.Append( " </SyncOrderRelationResp> " ); xmlResult.Append( " </SOAP-ENV:Body> " ); xmlResult.Append( " </SOAP-ENV:Envelope> " ); Response.Write(xmlResult.ToString()); Response.End(); #endregion }}三、反向订购
/// <summary> /// 反向订购接口 /// </summary> /// <remarks> /// 该消息编号:TransactionID /// 版本:Version /// 消息类型:MsgType /// 发送方设备类型:Send_Address_DeviceType /// 发送方设备编号:Send_Address_DeviceID /// 接收方设备类型:Dest_Address_DeviceType /// 接收方设备编号:Dest_Address_DeviceID /// 计费用户类别:FeeUser_ID_UserIDType /// ■计费用户手机:FeeUser_ID_MSISDN /// 使用用户类别:DestUser_ID_UserIDType /// ■使用用户手机:DestUser_ID_MSISDN /// 服务标识类别:ServiceIDType /// SP的企业代码:SPID /// SP的服务代码:SPServiceID /// </remarks> /// <param name="provisionInfo"> 瘦客户对象 </param> /// <returns> MISC接口返回的hRet值(0成功,其它参考MISC相关文档) </returns> public int SubscribeServiceReq(ProvisionInfo myPro) { // 返回值 int result = 1 ; StringBuilder xml = new StringBuilder( " <?xml version="1.0" encoding="UTF-8" ?> " ); xml.Append( " <SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> " ); xml.Append( " <SOAP-ENV:Header> " ); xml.Append( " <TransactionID xmlns="http://www.monternet.com/dsmp/schemas/"> " + myPro.TransactionID + " </TransactionID> " ); // 月+日+分+秒+毫秒 xml.Append( " </SOAP-ENV:Header> " ); xml.Append( " <SOAP-ENV:Body> " ); xml.Append( " <SubscribeServiceReq xmlns="http://www.monternet.com/dsmp/schemas/"> " ); xml.Append( " <Version> " + myPro.Version + " </Version> " ); // 1.5.0 xml.Append( " <MsgType> " + myPro.MsgType + " </MsgType> " ); // SubscribeServiceReq xml.Append( " <Send_Address> " ); xml.Append( " <DeviceType> " + myPro.Send_Address_DeviceType.ToString() + " </DeviceType> " ); xml.Append( " <DeviceID> " + myPro.Send_Address_DeviceID + " </DeviceID> " ); // web.config xml.Append( " </Send_Address> " ); xml.Append( " <Dest_Address> " ); xml.Append( " <DeviceType> " + myPro.Dest_Address_DeviceType.ToString() + " </DeviceType> " ); // 0 xml.Append( " <DeviceID> " + myPro.Dest_Address_DeviceID + " </DeviceID> " ); // web.config xml.Append( " </Dest_Address> " ); xml.Append( " <FeeUser_ID> " ); xml.Append( " <UserIDType> " + myPro.FeeUser_ID_UserIDType.ToString() + " </UserIDType> " ); // 1 xml.Append( " <MSISDN> " + myPro.FeeUser_ID_MSISDN + " </MSISDN> " ); xml.Append( " <PseudoCode /> " ); xml.Append( " </FeeUser_ID> " ); xml.Append( " <DestUser_ID> " ); xml.Append( " <UserIDType> " + myPro.DestUser_ID_UserIDType.ToString() + " </UserIDType> " ); // 1 xml.Append( " <MSISDN> " + myPro.DestUser_ID_MSISDN + " </MSISDN> " ); xml.Append( " <PseudoCode /> " ); xml.Append( " </DestUser_ID> " ); xml.Append( " <Service_ID> " ); xml.Append( " <ServiceIDType> " + myPro.ServiceIDType.ToString() + " </ServiceIDType> " ); // 1 xml.Append( " <SPID> " + myPro.SPID + " </SPID> " ); // web.config xml.Append( " <SPServiceID> " + myPro.SPServiceID + " </SPServiceID> " ); // web.config xml.Append( " <AccessNo /> " ); xml.Append( " <FeatureStr /> " ); xml.Append( " </Service_ID> " ); xml.Append( " <FeatureStr /> " ); xml.Append( " </SubscribeServiceReq> " ); xml.Append( " </SOAP-ENV:Body> " ); xml.Append( " </SOAP-ENV:Envelope> " ); byte [] postData = System.Text.Encoding.UTF8.GetBytes(xml.ToString()); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create( this .subscribeServiceReq); myRequest.Method = " POST " ; myRequest.ContentType = " application/x-www-form-urlencoded " ; myRequest.ContentLength = postData.Length; Stream newStream = myRequest.GetRequestStream(); // 向反向订购接口发送数据 newStream.Write(postData, 0 , postData.Length); newStream.Close(); // 获取反向订购接口返回的结果 XmlDocument doc = new XmlDocument(); WebResponse response = myRequest.GetResponse(); System.IO.Stream resStream = response.GetResponseStream(); if (resStream != null ) { doc.Load(resStream); } resStream.Close(); // 获取节点值 XmlElement root = doc.DocumentElement; foreach (XmlNode node in root.ChildNodes[ 1 ].ChildNodes[ 0 ]) // 遍历SubscribeServiceResp节点 { if (node.Name == " hRet " ) { result = int .Parse(node.InnerText); } } // System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.UTF8)) // string s = sr.ReadToEnd(); // sr.Close(); return result; }四、反向取消
/// <summary> /// 反向取消接口 /// </summary> /// <remarks> /// 该消息编号:TransactionID /// 版本:Version /// 消息类型:MsgType /// 发送方设备类型:Send_Address_DeviceType /// 发送方设备编号:Send_Address_DeviceID /// 接收方设备类型:Dest_Address_DeviceType /// 接收方设备编号:Dest_Address_DeviceID /// 计费用户类别:FeeUser_ID_UserIDType /// ■计费用户手机:FeeUser_ID_MSISDN /// 使用用户类别:DestUser_ID_UserIDType /// ■使用用户手机:DestUser_ID_MSISDN /// 服务标识类别:ServiceIDType /// SP的企业代码:SPID /// SP的服务代码:SPServiceID /// /// </remarks> /// <param name="provisionInfo"> 瘦客户对象 </param> /// <returns> MISC接口返回的hRet值(0成功,其它参考MISC相关文档) </returns> public int UnSubscribeServiceReq(ProvisionInfo myPro) { // 返回值 int result = 1 ; StringBuilder xml = new StringBuilder( " <?xml version="1.0" encoding="UTF-8" ?> " ); xml.Append( " <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://www.monternet.com/dsmp/schemas/"> " ); xml.Append( " <SOAP-ENV:Header> " ); xml.Append( " <TransactionID xmlns="http://www.monternet.com/dsmp/schemas/" xsi:type="xsd:string"> " + myPro.TransactionID + " </TransactionID> " ); // 月+日+分+秒+毫秒 xml.Append( " </SOAP-ENV:Header> " ); xml.Append( " <SOAP-ENV:Body> " ); xml.Append( " <UnSubscribeServiceReq xmlns="http://www.monternet.com/dsmp/schemas/"> " ); xml.Append( " <Version> " + myPro.Version + " </Version> " ); // 1.5.0 xml.Append( " <MsgType> " + myPro.MsgType + " </MsgType> " ); // SubscribeServiceReq xml.Append( " <Send_Address> " ); xml.Append( " <DeviceType> " + myPro.Send_Address_DeviceType.ToString() + " </DeviceType> " ); xml.Append( " <DeviceID> " + myPro.Send_Address_DeviceID + " </DeviceID> " ); // web.config xml.Append( " </Send_Address> " ); xml.Append( " <Dest_Address> " ); xml.Append( " <DeviceType> " + myPro.Dest_Address_DeviceType.ToString() + " </DeviceType> " ); // 0 xml.Append( " <DeviceID> " + myPro.Dest_Address_DeviceID + " </DeviceID> " ); // web.config xml.Append( " </Dest_Address> " ); xml.Append( " <FeeUser_ID> " ); xml.Append( " <UserIDType> " + myPro.FeeUser_ID_UserIDType.ToString() + " </UserIDType> " ); // 1 xml.Append( " <MSISDN> " + myPro.FeeUser_ID_MSISDN + " </MSISDN> " ); xml.Append( " <PseudoCode /> " ); xml.Append( " </FeeUser_ID> " ); xml.Append( " <DestUser_ID> " ); xml.Append( " <UserIDType> " + myPro.DestUser_ID_UserIDType.ToString() + " </UserIDType> " ); // 1 xml.Append( " <MSISDN> " + myPro.DestUser_ID_MSISDN + " </MSISDN> " ); xml.Append( " <PseudoCode /> " ); xml.Append( " </DestUser_ID> " ); xml.Append( " <Service_ID> " ); xml.Append( " <ServiceIDType> " + myPro.ServiceIDType.ToString() + " </ServiceIDType> " ); // 1 xml.Append( " <SPID> " + myPro.SPID + " </SPID> " ); // web.config xml.Append( " <SPServiceID> " + myPro.SPServiceID + " </SPServiceID> " ); // web.config xml.Append( " <AccessNo /> " ); xml.Append( " <FeatureStr /> " ); xml.Append( " </Service_ID> " ); xml.Append( " <FeatureStr /> " ); xml.Append( " </UnSubscribeServiceReq> " ); xml.Append( " </SOAP-ENV:Body> " ); xml.Append( " </SOAP-ENV:Envelope> " ); byte [] postData = System.Text.Encoding.UTF8.GetBytes(xml.ToString()); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create( this .subscribeServiceReq); myRequest.Method = " POST " ; myRequest.ContentType = " application/x-www-form-urlencoded " ; myRequest.ContentLength = postData.Length; Stream newStream = myRequest.GetRequestStream(); // 向反向订购接口发送数据 newStream.Write(postData, 0 , postData.Length); newStream.Close(); // 获取反向订购接口返回的结果 XmlDocument doc = new XmlDocument(); WebResponse response = myRequest.GetResponse(); System.IO.Stream resStream = response.GetResponseStream(); if (resStream != null ) { doc.Load(resStream); } resStream.Close(); // 获取节点值 XmlElement root = doc.DocumentElement; foreach (XmlNode node in root.ChildNodes[ 1 ].ChildNodes[ 0 ]) // 遍历SubscribeServiceResp节点 { if (node.Name == " hRet " ) { result = int .Parse(node.InnerText); } } // System.IO.StreamReader sr = new System.IO.StreamReader(resStream, System.Text.Encoding.UTF8)) // string s = sr.ReadToEnd(); // sr.Close(); return result; }转载于:https://www.cnblogs.com/tuyile006/archive/2011/10/24/2223054.html
相关资源:数据结构—成绩单生成器