Example #1
0
        /////////////////////////////////////////////////////////////////////////////////////

        #endregion

        /////////////////////////////////////////////////////////////////////////////////////

        // 返回成功信息
        private void ReNotice(string MessageID, string Type)
        {
            DateTime Now = DateTime.Now;

            string Body = "<body><response code=\"0000\" message=\"成功,系统处理正常\"/></body>";

            string TimeStamp = Now.ToString("yyyyMMdd") + Now.ToString("HHmmss");

            string Message = "<?xml version=\"1.0\" encoding=\"GBK\"?>";

            Message += "<message version=\"1.0\" id=\"" + MessageID + "\">";
            Message += "<header>";
            Message += "<messengerID>" + ElectronTicket_HPSH_UserName + "</messengerID>";
            Message += "<timestamp>" + TimeStamp + "</timestamp>";
            Message += "<transactionType>" + Type + "</transactionType>";
            Message += "<digest>" + Shove._Security.Encrypt.MD5(MessageID + TimeStamp + ElectronTicket_HPSH_UserPassword + Body, "gb2312") + "</digest>";
            Message += "</header>";
            Message += Body;
            Message += "</message>";

            WriteElectronTicketLog(true, Type, "transType=" + Type + "&transMessage=" + Message);

            PublicFunction.Post(ElectronTicket_HPSH_Getway, "transType=" + Type + "&transMessage=" + Message, TimeoutSeconds);
        }
Example #2
0
        // 代购票查询
        private void QueryTickets()
        {
            DataTable dt = new DAL.Views.V_SchemesSendToCenter().Open(ConnectionString, "distinct SchemeID", "(((Sends > 0) AND (Sends < 100)) or (sends = 3301) or (sends = 2148)) AND (HandleResult = 0) AND (IsOpened = 0) and LotteryID = 29 and buyed = 0", "");

            if (dt == null)
            {
                msg.Send("查询代购票出错(QueryTickets):读取未成功票错误。");
                log.Write("查询代购票出错(QueryTickets):读取未成功票错误。");

                return;
            }

            if (dt.Rows.Count < 1)
            {
                return;
            }

            DataTable dtSchemesSendToCenter = null;

            DAL.Tables.T_SchemesSendToCenter t_SchemesSendToCenter = new DAL.Tables.T_SchemesSendToCenter();

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                dtSchemesSendToCenter = new DAL.Tables.T_SchemesSendToCenter().Open(ConnectionString, "top 1 *", "schemeid=" + dt.Rows[i]["SchemeID"].ToString() + " and (Sends > 0) AND (Sends < 100)", "");

                if (dtSchemesSendToCenter == null)
                {
                    continue;
                }

                if (dtSchemesSendToCenter.Rows.Count < 1)
                {
                    continue;
                }

                System.Threading.Thread.Sleep(1000);

                string ticketid = dtSchemesSendToCenter.Rows[0]["Identifiers"].ToString();
                string Body     = "<body><ticketQuery>" + "<ticket id=\"" + ticketid + "\"/>" + "</ticketQuery></body>";

                string MessageID = ElectronTicket_HPSH_UserName + DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.ToString("HHmmss") + "1" + (i % 10).ToString();
                string TimeStamp = DateTime.Now.ToString("yyyyMMdd") + DateTime.Now.ToString("HHmmss");

                string Message = "<?xml version=\"1.0\" encoding=\"GBK\"?>";
                Message += "<message version=\"1.0\" id=\"" + MessageID + "\">";
                Message += "<header>";
                Message += "<messengerID>" + ElectronTicket_HPSH_UserName + "</messengerID>";
                Message += "<timestamp>" + TimeStamp + "</timestamp>";
                Message += "<transactionType>105</transactionType>";
                Message += "<digest>" + Shove._Security.Encrypt.MD5(MessageID + TimeStamp + ElectronTicket_HPSH_UserPassword + Body, "gb2312") + "</digest>";
                Message += "</header>";
                Message += Body;
                Message += "</message>";

                WriteElectronTicketLog(true, "105", "transType=105&transMessage=" + Message);

                string ReceiveString = "";

                try
                {
                    ReceiveString = PublicFunction.Post(ElectronTicket_HPSH_Getway, "transType=105&transMessage=" + Message, TimeoutSeconds);
                }
                catch
                {
                    continue;
                }

                if (ReceiveString.Length <= 10)
                {
                    continue;
                }

                string[] str_s = ReceiveString.Split('&');

                if ((str_s == null) || (str_s.Length < 1))
                {
                    continue;
                }

                string TransType    = str_s[0];
                string TransMessage = str_s[1];

                TransType    = TransType.Substring(10);
                TransMessage = TransMessage.Substring(13);

                WriteElectronTicketLog(false, TransType, ReceiveString);

                System.Xml.XmlDocument XmlDoc = new XmlDocument();
                System.Xml.XmlNodeList nodes  = null;

                try
                {
                    XmlDoc.Load(new StringReader(TransMessage));
                    nodes = XmlDoc.GetElementsByTagName("ticket");
                }
                catch { }

                if (nodes == null)
                {
                    continue;
                }

                for (int k = 0; k < nodes.Count; k++)
                {
                    string Identifiers = nodes[k].Attributes["id"].Value;
                    string Status      = nodes[k].Attributes["status"].Value;
                    string _Message    = nodes[k].Attributes["message"].Value;

                    if (Status == "0000")
                    {
                        string DealTime = nodes[k].Attributes["dealTime"].Value;

                        int    ReturnValue       = 0;
                        string ReturnDescription = "";

                        int Result = DAL.Procedures.P_SchemesSendToCenterHandleUniteAnte(ConnectionString, Shove._Convert.StrToLong(dt.Rows[i]["SchemeID"].ToString(), -1), DateTime.Now, true, ref ReturnValue, ref ReturnDescription);

                        if ((Result < 0) || (ReturnValue < 0))
                        {
                            msg.Send("对所查询到的电子票数据第一次处理出错(QueryTickets):数据读写错误。票号:" + Identifiers + "," + ReturnDescription);
                            log.Write("对所查询到的电子票数据第一次处理出错(QueryTickets):数据读写错误。票号:" + Identifiers + "," + ReturnDescription);

                            System.Threading.Thread.Sleep(1000);

                            ReturnValue       = 0;
                            ReturnDescription = "";

                            Result = DAL.Procedures.P_SchemesSendToCenterHandleUniteAnte(ConnectionString, Shove._Convert.StrToLong(dt.Rows[i]["SchemeID"].ToString(), -1), Shove._Convert.StrToDateTime(DealTime, DateTime.Now.ToString()), true, ref ReturnValue, ref ReturnDescription);

                            if ((Result < 0) || (ReturnValue < 0))
                            {
                                msg.Send("对所查询到的电子票数据第二次处理出错(QueryTickets):数据读写错误。票号:" + Identifiers + "," + ReturnDescription);
                                log.Write("对所查询到的电子票数据第二次处理出错(QueryTickets):数据读写错误。票号:" + Identifiers + "," + ReturnDescription);
                            }
                        }

                        continue;
                    }

                    if ("0010 0011 0014 0015 0016 0098 0097 1008 1009 1010 1012 1016 1017 2001 2002 2003 2004 2010 2011 2012 2013 2014 2015 2016 2017 2018 2030 2031 2040 2041 2042 -1 2043 2044 2046 3000 3002 3004 3005 3011 3012 3013 3014 3015 3016 3017 3018 3100 3101 3202 3203 3204 3205".IndexOf(Status) >= 0)
                    {
                        t_SchemesSendToCenter.Sends.Value = Status + 100;
                        t_SchemesSendToCenter.Update(ConnectionString, "SchemeID = " + dt.Rows[i]["SchemeID"].ToString());

                        continue;
                    }

                    if (Status == "2052")
                    {
                        System.Threading.Thread.Sleep(1000);

                        continue;
                    }

                    if (Status == "2032")
                    {
                        t_SchemesSendToCenter.Sends.Value = "99";
                        t_SchemesSendToCenter.Update(ConnectionString, "SchemeID = " + dt.Rows[i]["SchemeID"].ToString());

                        continue;
                    }
                }
            }
        }
Example #3
0
        // 发送代购电子票
        private void SendTickets()
        {
            DAL.Views.V_SchemesSendToCenter v_SchemesSendToCenter = new DAL.Views.V_SchemesSendToCenter();

            DataTable dt = v_SchemesSendToCenter.Open(ConnectionString, "distinct SchemeID, SiteID, UserType", "Buyed = 0 and (GetDate() between StartTime and EndTime) and Sends < 99 and HandleResult = 0 and State = 1 and LotteryID = 29", " UserType desc");

            if (dt == null)
            {
                msg.Send("发送代购票出错(SendTickets):读取方案错误。");
                log.Write("发送代购票出错(SendTickets):读取方案错误。");

                return;
            }

            DAL.Tables.T_SchemesSendToCenter t_SchemesSendToCenter = new DAL.Tables.T_SchemesSendToCenter();

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (i % 10 == 0)
                {
                    System.Threading.Thread.Sleep(1000);
                }

                DataTable dtSchemesSend = v_SchemesSendToCenter.Open(ConnectionString, "", "SchemeID=" + dt.Rows[i]["SchemeID"].ToString() + " and Buyed = 0 and (GetDate() between StartTime and EndTime) and Sends < 99 and HandleResult = 0 and State = 1", "");

                if (dtSchemesSend == null)
                {
                    msg.Send("发送代购票出错(SendTickets):读取方案错误。方案号:" + dt.Rows[i]["SchemeID"].ToString());
                    log.Write("发送代购票出错(SendTickets):读取方案错误。方案号:" + dt.Rows[i]["SchemeID"].ToString());

                    continue;
                }

                if (dtSchemesSend.Rows.Count < 1)
                {
                    continue;
                }

                string Sends = dtSchemesSend.Rows[0]["Sends"].ToString();

                if (MSSQL.ExecuteNonQuery(ConnectionString, "update T_SchemesSendToCenter set Sends = Sends + 1 where SchemeID = " + dt.Rows[i]["SchemeID"].ToString()) < 0)
                {
                    msg.Send("更新票发送状态时出错(SendTickets)。方案ID:" + dt.Rows[i]["SchemeID"].ToString());
                    log.Write("更新票发送状态时出错(SendTickets)。方案ID:" + dt.Rows[i]["SchemeID"].ToString());

                    continue;
                }

                string   ticketid      = "";
                string   LotteryNumber = "";
                DateTime Now           = DateTime.Now;

                string Body = "<body><lotteryRequest>";

                for (int j = 0; j < dtSchemesSend.Rows.Count; j++)
                {
                    DataRow dr = dtSchemesSend.Rows[j];

                    ticketid = dr["Identifiers"].ToString();

                    Body += "<ticket id=\"" + ticketid + "\"";
                    Body += " playType=\"" + dr["PlayTypeID"].ToString() + "\" money=\"" + double.Parse(dr["Money"].ToString()).ToString("N").Replace(",", "") + "\" amount=\"" + dr["Multiple"].ToString() + "\">";
                    Body += "<issue number=\"" + dr["IsuseName"].ToString() + "\" gameName=\"" + GetLotteryName(int.Parse(dr["LotteryID"].ToString())) + "\"/>";
                    Body += "<userProfile userName=\"" + ElectronTicket_PrintOut_AlipayName + "\" cardType=\"1\" mail=\"" + ElectronTicket_PrintOut_Email + "\" cardNumber=\"" + ElectronTicket_PrintOut_IDCardNumber + "\" mobile=\"" + ElectronTicket_PrintOut_Mobile + "\" realName=\"" + ElectronTicket_PrintOut_RealityName + "\" bonusPhone=\"" + ElectronTicket_PrintOut_Mobile + "\"/>";

                    try
                    {
                        LotteryNumber = dr["Ticket"].ToString();
                    }
                    catch
                    {
                        continue;
                    }

                    string[] strs = LotteryNumber.Split('\n');

                    foreach (string str in strs)
                    {
                        if (str.Trim() == "")
                        {
                            continue;
                        }

                        Body += "<anteCode>" + str + "</anteCode>";
                    }

                    Body += "</ticket>";
                }

                Body += "</lotteryRequest></body>";

                string MessageID = ElectronTicket_HPSH_UserName + Now.ToString("yyyyMMdd") + Now.ToString("HHmmss") + "1" + (i % 10).ToString();
                string TimeStamp = Now.ToString("yyyyMMdd") + Now.ToString("HHmmss");

                string Message = "<?xml version=\"1.0\" encoding=\"GBK\"?>";
                Message += "<message version=\"1.0\" id=\"" + MessageID + "\">";
                Message += "<header>";
                Message += "<messengerID>" + ElectronTicket_HPSH_UserName + "</messengerID>";
                Message += "<timestamp>" + TimeStamp + "</timestamp>";
                Message += "<transactionType>103</transactionType>";
                Message += "<digest>" + Shove._Security.Encrypt.MD5(MessageID + TimeStamp + ElectronTicket_HPSH_UserPassword + Body, "gb2312") + "</digest>";
                Message += "</header>";
                Message += Body;
                Message += "</message>";

                WriteElectronTicketLog(true, "103", "transType=103&transMessage=" + Message);

                string ReceiveString = "";

                try
                {
                    ReceiveString = PublicFunction.Post(ElectronTicket_HPSH_Getway, "transType=103&transMessage=" + Message, TimeoutSeconds);
                }
                catch
                {
                    msg.Send("电子票-103 发送失败(SendTickets)。方案ID:" + dt.Rows[i]["SchemeID"].ToString());
                    log.Write("电子票-103 发送失败(SendTickets)。方案ID:" + dt.Rows[i]["SchemeID"].ToString());

                    continue;
                }

                if (ReceiveString.Length <= 10)
                {
                    continue;
                }

                string[] str_s = ReceiveString.Split('&');

                if ((str_s == null) || (str_s.Length < 1))
                {
                    continue;
                }

                string TransType    = str_s[0];
                string TransMessage = str_s[1];

                TransType    = TransType.Substring(10);
                TransMessage = TransMessage.Substring(13);

                WriteElectronTicketLog(false, TransType, ReceiveString);

                System.Xml.XmlDocument XmlDoc = new XmlDocument();
                System.Xml.XmlNodeList nodes  = null;

                try
                {
                    XmlDoc.Load(new StringReader(TransMessage));
                    nodes = XmlDoc.GetElementsByTagName("*");
                }
                catch
                {
                    continue;
                }

                string code = "";

                for (int j = 0; j < nodes.Count; j++)
                {
                    if (nodes[j].Name.ToUpper() == "RESPONSE")
                    {
                        code = nodes[j].Attributes["code"].Value;
                    }
                }

                int    ReturnValue       = 0;
                string ReturnDescription = "";

                if (code == "0000")
                {
                    int Result = DAL.Procedures.P_SchemesSendToCenterHandleUniteAnte(ConnectionString, Shove._Convert.StrToLong(dt.Rows[i]["SchemeID"].ToString(), -1), DateTime.Now, true, ref ReturnValue, ref ReturnDescription);

                    if ((Result < 0) || (ReturnValue < 0))
                    {
                        msg.Send("对所发送的成功落地的代购票第一次处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + ReturnDescription);
                        log.Write("对所发送的成功落地的代购票第一次处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + ReturnDescription);

                        System.Threading.Thread.Sleep(1000);

                        ReturnValue       = 0;
                        ReturnDescription = "";

                        Result = DAL.Procedures.P_SchemesSendToCenterHandleUniteAnte(ConnectionString, Shove._Convert.StrToLong(dt.Rows[i]["SchemeID"].ToString(), -1), DateTime.Now, true, ref ReturnValue, ref ReturnDescription);

                        if ((Result < 0) || (ReturnValue < 0))
                        {
                            msg.Send("对所发送的成功落地的代购票第二次处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + ReturnDescription);
                            log.Write("对所发送的成功落地的代购票第二次处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + ReturnDescription);
                        }
                    }

                    continue;
                }

                int State  = 0;
                int SiteID = Shove._Convert.StrToInt(dt.Rows[i]["SiteID"].ToString(), 1);

                try
                {
                    State = int.Parse(code);
                }
                catch { }

                if (code == "2032")     // 限号
                {
                    if (Shove._Convert.StrToInt(Sends, 0) < 99)
                    {
                        t_SchemesSendToCenter.Sends.Value = 99;
                        t_SchemesSendToCenter.Update(ConnectionString, "SchemeID = " + dt.Rows[i]["SchemeID"].ToString());
                    }
                    else
                    {
                        int Result = DAL.Procedures.P_QuashScheme(ConnectionString, SiteID, Shove._Convert.StrToLong(dt.Rows[i]["SchemeID"].ToString(), 0), true, false, ref ReturnValue, ref ReturnDescription);

                        if ((Result < 0) || (ReturnValue < 0))
                        {
                            msg.Send("对所发送落地失败的代购票【作撤单】处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + code + "," + ReturnDescription);
                            log.Write("对所发送落地失败的代购票【作撤单】处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + code + "," + ReturnDescription);
                        }
                    }

                    continue;
                }

                if ("2048 3003 9999 1011".IndexOf(code) >= 0)     // 重复发送的投注票
                {
                    continue;
                }

                t_SchemesSendToCenter.Sends.Value = 100 + State;
                t_SchemesSendToCenter.Update(ConnectionString, "SchemeID = " + dt.Rows[i]["SchemeID"].ToString());

                if ("2010 2011 2012 2013 2014 2015 2016 2017 2018 2030 2031".IndexOf(code) >= 0)
                {
                    int Result = DAL.Procedures.P_QuashScheme(ConnectionString, SiteID, Shove._Convert.StrToLong(dt.Rows[i]["SchemeID"].ToString(), 0), true, false, ref ReturnValue, ref ReturnDescription);

                    if ((Result < 0) || (ReturnValue < 0))
                    {
                        msg.Send("对所发送落地失败的代购票【作撤单】处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + code + "," + ReturnDescription);
                        log.Write("对所发送落地失败的代购票【作撤单】处理出错(SendTickets):数据读写错误。票号:" + dt.Rows[i]["SchemeID"].ToString() + "," + code + "," + ReturnDescription);
                    }
                }
            }
        }
Example #4
0
        //向系统发送票的XML格式  发送类型103(投注请求)
        private void Send()
        {
            DataTable dt = new DAL.Views.V_SchemesSendToCenter().Open(ConnectionString, "", "Buyed = 0 and PrintOutType = 101 and (GetDate() between StartTime and EndTime) and ((Sends = 0) or (Sends < 3 and HandleResult = 0 and datediff(minute, [Datetime], GetDate()) > 3))", "[ID]");

            if (dt == null)
            {
                log.Write("向恒朋-重庆电子票网关发送数据出错:读取方案错误。");

                return;
            }

            if (dt.Rows.Count < 1)
            {
                return;
            }

            int SendCount = 0;

            if ((dt.Rows.Count % 500) != 0)
            {
                SendCount = (dt.Rows.Count - (dt.Rows.Count % 500)) / 500 + 1;
            }
            else
            {
                SendCount = dt.Rows.Count / 500;
            }

            for (int i = 0; i < SendCount; i++)
            {
                DateTime Now          = DateTime.Now;
                string   SendedIDList = "";

                string Body = "<body><lotteryRequest>";

                for (int j = i * 500; j < (i * 500) + 500; j++)
                {
                    if (j >= dt.Rows.Count)
                    {
                        break;
                    }

                    DataRow dr = dt.Rows[j];

                    Body += "<ticket id=\"" + ElectronTicket_HPCQ_UserName + Now.ToString("yyyyMMdd") + dr["TicketID"].ToString().PadLeft(8, '0') + "\"";
                    Body += " playType=\"" + dr["PlayTypeID"].ToString() + "\" money=\"" + double.Parse(dr["Money"].ToString()).ToString("N") + "\" amount=\"" + dr["Multiple"].ToString() + "\">";
                    Body += "<issue number=\"" + dr["IsuseName"].ToString() + "\" gameName=\"" + GetGameName(int.Parse(dr["LotteryID"].ToString())) + "\"/>";
                    Body += "<userProfile cardType=\"1\" mail=\"" + dr["Email"].ToString() + "\" cardNumber=\"" + dr["IDCardNumber"].ToString() + "\" mobile=\"" + dr["Mobile"].ToString() + "\" realName=\"" + dr["RealityName"].ToString() + "\" bonusPhone=\"" + dr["Telephone"].ToString() + "\"/>";

                    string   LotteryNumber = dr["Ticket"].ToString();
                    string[] strs          = LotteryNumber.Split('\n');

                    foreach (string str in strs)
                    {
                        if (str.Trim() == "")
                        {
                            continue;
                        }

                        Body += "<anteCode>" + str + "</anteCode>";
                    }

                    Body += "</ticket>";

                    SendedIDList += ((SendedIDList != "") ? "," : "") + dr["ID"].ToString();
                }

                Body += "</lotteryRequest></body>";

                string MessageID = ElectronTicket_HPCQ_UserName + Now.ToString("yyyyMMdd") + Now.ToString("HHmmss") + i.ToString().PadLeft(2, '0');
                string TimeStamp = Now.ToString("yyyyMMdd") + Now.ToString("HHmmss");

                string Message = "<?xml version=\"1.0\" encoding=\"GBK\"?>";
                Message += "<message version=\"1.0\" id=\"" + MessageID + "\">";
                Message += "<header>";
                Message += "<messengerID>" + ElectronTicket_HPCQ_UserName + "</messengerID>";
                Message += "<timestamp>" + TimeStamp + "</timestamp>";
                Message += "<transactionType>103</transactionType>";
                Message += "<digest>" + Shove._Security.Encrypt.MD5(MessageID + TimeStamp + ElectronTicket_HPCQ_UserPassword + Body, "gb2312") + "</digest>";
                Message += "</header>";
                Message += Body;
                Message += "</message>";

                PublicFunction.Post(ElectronTicket_HPCQ_Getway, "transType=103&transMessage=" + Message, TimeoutSeconds);

                MSSQL.ExecuteNonQuery(ConnectionString, "update T_SchemesSendToCenter set Sends = Sends + 1, [DateTime] = GetDate() where [ID] in (" + SendedIDList + ")");
            }
        }