Example #1
0
        /// <summary>
        /// 用户通过 SP 订购数据业务的时候,SP 先进行业务关系订购,再通过该接口向 DSMP 进行用户服务订购的请求。
        /// </summary>
        /// <param name="transID">
        /// 消息编号。
        /// </param>
        /// <param name="sendAddr">
        /// 发送方的地址。
        /// </param>
        /// <param name="destAddr">
        /// 接收方的地址。
        /// </param>
        /// <param name="feeUserID">
        /// 计费用户标识。
        /// </param>
        /// <param name="destUserID">
        /// 使用用户标识(当使用用户和计费用户为同一用户的时候,FeeUser_ID 和 DestUser_ID 的值相同)。
        /// </param>
        /// <param name="spid">
        /// SP 的企业代码。
        /// </param>
        /// <param name="serviceIDType">
        /// </param>
        /// <param name="serviceID">
        /// 业务标识,是数字、字母和符号的组合(长度为 10,SP的业务类型,数字、字母和符号的组合,由SP自定,如图片传情可定为TPCQ,股票查询可定义为11),也叫做计费代码。
        /// </param>
        /// <param name="accessNo">
        /// </param>
        /// <param name="featureStr">
        /// 订购特征参数,订购业务需要携带的参数,可以携带文本/多媒体的相关信息。
        /// </param>
        /// <param name="linkID">
        /// 临时订购关系的匹配码,用来鉴权一次点播请求等事务性的业务。当DSMP生成的订购关系为临时订购关系的时候,返回本字段,否则不填本字段。
        /// </param>
        /// <param name="hResult">
        /// 返回值(0:成功;1:未知错误;2-99:保留;4000:无效的msgtype;4001:无效的action_id;4002:无效的action_reasonid;4003:无效的SP ID;4004:无效的serviceID;4005:无效的pseudocode;4006:无效的accessmode;4007:MISC 同步开通服务,但SP 端已存在订购关系,且状态为开通;4008:MISC 同步开通服务,且SP 端不存在订购关系,但开通服务失败;4009:MISC 同步开通服务,但SP 端已存在订购关系, 且状态为暂停;4010:MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败;4011:MISC 同步停止服务, 但SP 端不存在订购关系;4012:MISC 同步暂停服务, 且SP 端存在订购关系, 但暂停服务失败;4013:MISC 同步暂停服务, 但SP 端不存在订购关系;4014:MISC 同步暂停服务, 但SP 端已存在订购关系, 且状态为暂停;4015:MISC 同步激活服务, 但SP 端已存在订购关系, 且状态为开通;4016:MISC 同步激活服务, 但SP 端不存在订购关系;4017:MISC 同步激活服务, 且SP 端存在订购关系, 但激活服务失败;9000:系统磁盘读写错误;9001:网络异常;9002:网络错误;9003:业务网关忙,业务网关缓存;9004:业务网关忙,并且业务网关缓冲区满,MISC 缓存,并暂时不要发送消息,等待一段时间重试;9005:MISC 忙,MISC 缓存;9006:MISC 忙,并且MISC 缓冲区满,业务网关缓存,并暂时不要发送消息,等待一段时间重试;9007:业务网关超过限制的流量;9008:MISC 异常,并不可用;9009:业务网关异常,并不可用;9010:该业务网关没有权限调用该接口消息;9011:MISC 没有权限发送该接口消息给业务网关;9012:版本不支持;9013:消息类型不对,系统不支持;9014:验证错误,无法解析SOAP 和XML 结构、缺少必须存在的字段,或者消息,格式不正确;9015:拒绝消息,服务器无法完成请求的服务)。
        /// </param>
        public void Subscribe(
            string transID,
            AddressInfo sendAddr,
            AddressInfo destAddr,
            UserID feeUserID,
            UserID destUserID,
            string spid,
            string serviceIDType,
            string serviceID,
            string accessNo,
            byte[] featureStr,
            out string linkID,
            out int hResult)
        {
            SubscribeServiceReqType req = new SubscribeServiceReqType();

            req.Dest_Address            = new address_info_schema();
            req.Dest_Address.DeviceID   = destAddr.DeviceID;
            req.Dest_Address.DeviceType = destAddr.DeviceType.ToString();

            req.DestUser_ID            = new user_id_schema();
            req.DestUser_ID.MSISDN     = destUserID.MSISDN;
            req.DestUser_ID.PseudoCode = System.Text.Encoding.ASCII.GetBytes(destUserID.PseudoCode);
            req.DestUser_ID.UserIDType = destUserID.UserIDType.ToString();

            req.FeatureStr = featureStr;

            req.FeeUser_ID            = new user_id_schema();
            req.FeeUser_ID.MSISDN     = feeUserID.MSISDN;
            req.FeeUser_ID.PseudoCode = System.Text.Encoding.ASCII.GetBytes(feeUserID.PseudoCode);
            req.FeeUser_ID.UserIDType = feeUserID.UserIDType.ToString();

            req.MsgType = "SubscribeServiceReq";

            req.Send_Address            = new address_info_schema();
            req.Send_Address.DeviceID   = sendAddr.DeviceID;
            req.Send_Address.DeviceType = sendAddr.DeviceType.ToString();

            req.Service_ID          = new service_id_schema();
            req.Service_ID.AccessNo = accessNo;
            //req.Service_ID.FeatureStr;
            req.Service_ID.ServiceIDType = serviceIDType;
            req.Service_ID.SPID          = spid;
            req.Service_ID.SPServiceID   = serviceID;

            req.Version = "1.5.0";

            @string transactionID = new @string();

            transactionID.Text = new string[] { transID };

            SubscribeServiceRespType rpt = _dsmp.SubscribeService(req, ref transactionID);

            linkID  = rpt.LinkID;
            hResult = System.Convert.ToInt32(rpt.hRet);
        }
 /// <summary>
 /// MISC 因为某种情况(如:用户通过手机短信的方式执行了某操作)更新了用户订购关系(包括:订购、取消、暂停、激活)的时候,通过此函数发起和 SP 的更新订购关系的交互。
 /// </summary>
 /// <param name="id">
 /// 消息编号。
 /// </param>
 /// <param name="sendAddr">
 /// 发送方的地址。
 /// </param>
 /// <param name="destAddr">
 /// 接收方的地址。
 /// </param>
 /// <param name="feeUserID">
 /// 计费用户标识。
 /// </param>
 /// <param name="destUserID">
 /// 使用用户标识(当使用用户和计费用户为同一用户的时候,FeeUser_ID 和 DestUser_ID 的值相同)。
 /// </param>
 /// <param name="linkID">
 /// 临时订购关系的事务 ID。
 /// </param>
 /// <param name="actionID">
 /// 服务状态管理动作代码(1:开通服务;2:停止服务;3:激活服务;4:暂停服务)。
 /// </param>
 /// <param name="actionReasonID">
 /// 产生服务状态管理动作原因的代码(1:用户发起行为;2:Admin&amp;1860发起行为;3:Boss停机;4:Boss开机;5:Boss过户;6:Boss销户;7:Boss改号;8:扣费失败导致的服务取消;9:其他)。
 /// </param>
 /// <param name="spid">
 /// SP 的企业代码。
 /// </param>
 /// <param name="serviceID">
 /// 业务标识,是数字、字母和符号的组合(长度为 10,SP的业务类型,数字、字母和符号的组合,由SP自定,如图片传情可定为TPCQ,股票查询可定义为11),也叫做计费代码。
 /// </param>
 /// <param name="accessMode">
 /// 服务的访问方式(1:WEB;2:WAP;3:SMS)。
 /// </param>
 /// <param name="featureStr">
 /// 服务订购参数(base64加密),内容是长号码+空格+用户发送内容。
 /// </param>
 /// <param name="hResult">
 /// 返回值(0:成功;1:未知错误;2-99:保留;4000:无效的msgtype;4001:无效的action_id;4002:无效的action_reasonid;4003:无效的SP ID;4004:无效的serviceID;4005:无效的pseudocode;4006:无效的accessmode;4007:MISC 同步开通服务,但SP 端已存在订购关系,且状态为开通;4008:MISC 同步开通服务,且SP 端不存在订购关系,但开通服务失败;4009:MISC 同步开通服务,但SP 端已存在订购关系, 且状态为暂停;4010:MISC 同步停止服务, 且SP 端存在订购关系, 但取消服务失败;4011:MISC 同步停止服务, 但SP 端不存在订购关系;4012:MISC 同步暂停服务, 且SP 端存在订购关系, 但暂停服务失败;4013:MISC 同步暂停服务, 但SP 端不存在订购关系;4014:MISC 同步暂停服务, 但SP 端已存在订购关系, 且状态为暂停;4015:MISC 同步激活服务, 但SP 端已存在订购关系, 且状态为开通;4016:MISC 同步激活服务, 但SP 端不存在订购关系;4017:MISC 同步激活服务, 且SP 端存在订购关系, 但激活服务失败;9000:系统磁盘读写错误;9001:网络异常;9002:网络错误;9003:业务网关忙,业务网关缓存;9004:业务网关忙,并且业务网关缓冲区满,MISC 缓存,并暂时不要发送消息,等待一段时间重试;9005:MISC 忙,MISC 缓存;9006:MISC 忙,并且MISC 缓冲区满,业务网关缓存,并暂时不要发送消息,等待一段时间重试;9007:业务网关超过限制的流量;9008:MISC 异常,并不可用;9009:业务网关异常,并不可用;9010:该业务网关没有权限调用该接口消息;9011:MISC 没有权限发送该接口消息给业务网关;9012:版本不支持;9013:消息类型不对,系统不支持;9014:验证错误,无法解析SOAP 和XML 结构、缺少必须存在的字段,或者消息,格式不正确;9015:拒绝消息,服务器无法完成请求的服务)。
 /// </param>
 protected abstract void OnSyncOrderRelationReq(
     string id,
     AddressInfo sendAddr,
     AddressInfo destAddr,
     UserID feeUserID,
     UserID destUserID,
     string linkID,
     int actionID,
     int actionReasonID,
     string spid,
     string serviceID,
     int accessMode,
     byte[] featureStr,
     out int hResult);