public HPResponseInfo DoBuy(UserInfo user, string gameName, string issueNumber
                                    , BuyType buyType, List <string> anteCodes, decimal money, int multiple)
        {
            try
            {
                HPBuyRequestInfo requestInfo  = new HPBuyRequestInfo();
                string           messengerId  = GetAgenceAccountUserName();
                string           userPassword = GetAgenceAccountPassword();
                string           messageId    = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
                string           timestamp    = DateTime.Now.ToString("yyyyMMddHHmmss");

                IssueMappingInfo issueInfo = new IssueMappingInfo();
                issueInfo.GameName = gameName;
                issueInfo.Number   = issueNumber;

                TicketMappingInfo ticket = new TicketMappingInfo();
                ticket.TicketId    = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
                ticket.BuyType     = buyType;
                ticket.Money       = money;
                ticket.Amount      = multiple;
                ticket.AnteCodes   = anteCodes;
                ticket.IssueInfo   = issueInfo;
                ticket.UserProfile = GetAgencyUserProfileInfo();

                HPBuyRequestInfo.Body requestBody = new HPBuyRequestInfo.Body();
                requestBody._Request            = new HPBuyRequestInfo.Body.Request();
                requestBody._Request.TicketList = new XmlMappingList <TicketMappingInfo>();
                requestBody._Request.TicketList.Add(ticket);

                string bodyXml = requestBody.ToXmlString("body");

                CommunicationObject.RequestHeaderObject requestHeader = new CommunicationObject.RequestHeaderObject();
                requestHeader.MessengerId     = GetAgenceAccountUserName();
                requestHeader.Timestamp       = timestamp;
                requestHeader.TransactionType = TranType.Request103;
                requestHeader.Digest          = PostManager.MD5(messageId + timestamp + userPassword + bodyXml, "gb2312");

                string headerXml   = requestHeader.ToXmlString("header");
                string requestXml  = "<?xml version=\"1.0\" encoding=\"GBK\"?><message version=\"1.0\" id=\"" + messageId + "\">" + headerXml + bodyXml + "</message>";
                string requestText = "transType=" + (int)TranType.Request103 + "&transMessage=" + requestXml;

                BuyTicket(ticket, user);
                string         xml  = PostManager.Post(GateWayManager.HPIssueQuery_GateWay, requestText, 1200);
                HPResponseInfo info = XmlAnalyzer.AnalyseResponse <HPResponseInfo>(xml);
                UpdateTicketStatus(ticket, user, info);

                return(info);
            }
            catch (Exception ex)
            {
                throw HandleException(LogCategory.Ticket, "认购失败!", ex);
            }
        }
        public HPResponseInfo DoBuy(UserInfo user, string gameName, string issueNumber
            , BuyType buyType, List<string> anteCodes, decimal money, int multiple)
        {
            try
            {
                HPBuyRequestInfo requestInfo = new HPBuyRequestInfo();
                string messengerId = GetAgenceAccountUserName();
                string userPassword = GetAgenceAccountPassword();
                string messageId = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
                string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");

                IssueMappingInfo issueInfo = new IssueMappingInfo();
                issueInfo.GameName = gameName;
                issueInfo.Number = issueNumber;

                TicketMappingInfo ticket = new TicketMappingInfo();
                ticket.TicketId = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
                ticket.BuyType = buyType;
                ticket.Money = money;
                ticket.Amount = multiple;
                ticket.AnteCodes = anteCodes;
                ticket.IssueInfo = issueInfo;
                ticket.UserProfile = GetAgencyUserProfileInfo();

                HPBuyRequestInfo.Body requestBody = new HPBuyRequestInfo.Body();
                requestBody._Request = new HPBuyRequestInfo.Body.Request();
                requestBody._Request.TicketList = new XmlMappingList<TicketMappingInfo>();
                requestBody._Request.TicketList.Add(ticket);

                string bodyXml = requestBody.ToXmlString("body");

                CommunicationObject.RequestHeaderObject requestHeader = new CommunicationObject.RequestHeaderObject();
                requestHeader.MessengerId = GetAgenceAccountUserName();
                requestHeader.Timestamp = timestamp;
                requestHeader.TransactionType = TranType.Request103;
                requestHeader.Digest = PostManager.MD5(messageId + timestamp + userPassword + bodyXml, "gb2312");

                string headerXml = requestHeader.ToXmlString("header");
                string requestXml = "<?xml version=\"1.0\" encoding=\"GBK\"?><message version=\"1.0\" id=\"" + messageId + "\">" + headerXml + bodyXml + "</message>";
                string requestText = "transType=" + (int)TranType.Request103 + "&transMessage=" + requestXml;

                BuyTicket(ticket, user);
                string xml = PostManager.Post(GateWayManager.HPIssueQuery_GateWay, requestText, 1200);
                HPResponseInfo info = XmlAnalyzer.AnalyseResponse<HPResponseInfo>(xml);
                UpdateTicketStatus(ticket, user, info);

                return info;
            }
            catch (Exception ex)
            {
                throw HandleException(LogCategory.Ticket, "认购失败!", ex);
            }
        }
    private void DoBuy()
    {
        string issueIdString = HidIsuseID.Value;
        string isuseNumber = HidIsuseNumber.Value;
        string endTime = HidIsuseEndTime.Value;
        string playTypeString = Shove._Web.Utility.GetRequest("playType");
        string lotteryNumber = Shove._Web.Utility.FilteSqlInfusion(base.Request["tb_LotteryNumber"]);
        string sumMoneyString = Shove._Web.Utility.GetRequest("tb_hide_SumMoney");
        string sumNumberString = Shove._Web.Utility.GetRequest("tb_hide_SumNum");
        string lotteryIdString = Shove._Web.Utility.GetRequest("HidLotteryID");
        string multipleString = Shove._Web.Utility.GetRequest("tb_Multiple");
        if (multipleString == "")
        {
            multipleString = "1";
        }
        StringBuilder sb = new StringBuilder();
        try
        {
            HPBuyRequestInfo requestInfo = new HPBuyRequestInfo();

            decimal money = decimal.Parse(sumMoneyString);
            int multiple = int.Parse(multipleString);
            int sumNumber = int.Parse(sumNumberString);
            int playType = int.Parse(playTypeString);
            int lotteryId = int.Parse(lotteryIdString);
            long isuseId = long.Parse(issueIdString);

            string messengerId = GetAgenceAccountUserName();
            string userPassword = GetAgenceAccountPassword();
            string messageId = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
            string timestamp = DateTime.Now.ToString("yyyyMMddHHmmss");

            IssueMappingInfo issueInfo = new IssueMappingInfo();
            issueInfo.GameName = LotteryCode;
            issueInfo.Number = isuseNumber;

            List<string> anteCodes = new List<string>();
            lotteryNumber = lotteryNumber.Replace(" + ", "#").Replace(' ', ',');
            anteCodes.AddRange(lotteryNumber.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries));

            TicketMappingInfo ticket = new TicketMappingInfo();
            ticket.TicketId = messengerId + DateTime.Now.ToString("yyyyMMdd") + PostManager.EightSerialNumber;
            ticket.BuyType = BuyType.A101;   // TODO
            ticket.Money = money;
            ticket.Amount = multiple;
            ticket.AnteCodes = anteCodes;
            ticket.IssueInfo = issueInfo;
            //ticket.UserProfile = GetAgencyUserProfileInfo();

            HPBuyRequestInfo.Body requestBody = new HPBuyRequestInfo.Body();
            requestBody._Request = new HPBuyRequestInfo.Body.Request();
            requestBody._Request.TicketList = new XmlMappingList<TicketMappingInfo>();
            requestBody._Request.TicketList.Add(ticket);

            string bodyXml = requestBody.ToXmlString("body");

            CommunicationObject.RequestHeaderObject requestHeader = new CommunicationObject.RequestHeaderObject();
            requestHeader.MessengerId = GetAgenceAccountUserName();
            requestHeader.Timestamp = timestamp;
            requestHeader.TransactionType = TranType.Request103;
            requestHeader.Digest = PostManager.MD5(messageId + timestamp + userPassword + bodyXml, "gb2312");

            string headerXml = requestHeader.ToXmlString("header");

            string requestXml = "<?xml version=\"1.0\" encoding=\"GBK\"?><message version=\"1.0\" id=\"" + messageId + "\">" + headerXml + bodyXml + "</message>";

            string result = @"投注结果\n\n";
            try
            {
                string requestText = "transType=" + (int)TranType.Request103 + "&transMessage=" + requestXml;
                string xml = PostManager.Post(GateWayManager.HPIssueQuery_GateWay, requestText, 1200);
                //string xml = gateway.LotteryRequest(accountN, transType, tickets);
                HPResponseInfo info = XmlAnalyzer.AnalyseResponse<HPResponseInfo>(xml);
                result += info.Code + " - " + info.Message;
            }
            catch (Exception ex)
            {
                result += "错误 - " + ex.Message;
                LogWriter.Write(LogCategory.Lottery, "投注错误", ex);
            }
            JavaScript.Alert(this.Page, result);
            return;
        }
        catch
        {
            JavaScript.Alert(this.Page, "输入有错误,请仔细检查。");
            return;
        }
    }