public async Task Execute12306cnAsync(Execute12306cnInfo execute12306cnInfo) { _execute12306cnInfo = execute12306cnInfo; _userOrderInfo = GetUserOrderInfo(execute12306cnInfo.UserName); var otnLeftTicketQueryInfo = new OtnLeftTicketQueryInfo { PurposeCode = _userOrderInfo.PurposeCode, Date = _userOrderInfo.RideDate, FromStation = _userOrderInfo.FromStationCode, ToStation = _userOrderInfo.ToStationCode }; otnLeftTicketQueryInfo.Referer = string.Format(UrlsIn12306cn._otnLeftTicketInitUrl, _userOrderInfo.TourFlag, string.Format("{0},{1}", _userOrderInfo.FromStationName, _userOrderInfo.FromStationCode), string.Format("{0},{1}", _userOrderInfo.ToStationName, _userOrderInfo.ToStationCode), _userOrderInfo.RideDate, "N,N,Y"); var otnLeftTicketQueryResult = await OtnLeftTicketQueryAsync(otnLeftTicketQueryInfo); if (otnLeftTicketQueryResult == null) { return; } var tickets = ParseToTickets(otnLeftTicketQueryResult.data); if (tickets == null || !tickets.Any()) { return; } var ticketInfo = tickets.FirstOrDefault(m => !string.IsNullOrEmpty(m.TrainNo) && m.TrainNo.ToUpper().StartsWith(_userOrderInfo.TrainType.ToString().ToUpper())); Console.WriteLine("Execute12306cnAsync,ticketInfo:{0} /r/n", JsonConvert.SerializeObject(ticketInfo)); Console.WriteLine("----------------------------------------------------------------"); if (ticketInfo == null) { return; } var submitOrderRequestInfo = new SubmitOrderRequestInfo { SecretStr = ticketInfo.SecretStr, TrainDate = _userOrderInfo.RideDate, BackTrainDate = _userOrderInfo.BackRideDate, FromStation = _userOrderInfo.FromStationName, ToStation = _userOrderInfo.ToStationName, TourFlag = _userOrderInfo.TourFlag, PurposeCode = _userOrderInfo.PurposeCode, Referer = otnLeftTicketQueryInfo.Referer }; var submitOrderRequestResult = await SubmitOrderRequestAsync(submitOrderRequestInfo); if (submitOrderRequestResult == null) { return; } var confirmPassengerInitDcResult = await OtnConfirmPassengerInitDcAsync(otnLeftTicketQueryInfo.Referer); if (confirmPassengerInitDcResult == null) { return; } var confirmPassengerDTOsResult = await ConfirmPassengerDTOsAsync(confirmPassengerInitDcResult.GlobalRepeatSubmitToken); if (confirmPassengerDTOsResult == null) { return; } var passengerInfo = confirmPassengerDTOsResult.data.normal_passengers.FirstOrDefault(); if (passengerInfo == null) { Console.WriteLine("ConfirmPassengerDTOsAsync,passengerInfo is null"); return; } var confirmPassengerCheckOrderInfo = new ConfirmPassengerCheckOrderInfo { RepeatSubmitToken = confirmPassengerInitDcResult.GlobalRepeatSubmitToken, JsonAtt = string.Empty, BedLevelOrderNum = "000000000000000000000000000000", CancelFlag = 2, OldPassengerStr = Enum12306Datas.OldPassengerStrFormat(passengerInfo), PassengerTicketStr = Enum12306Datas.PassengerTicketStrFormat(_userOrderInfo, passengerInfo), TourFlag = _userOrderInfo.TourFlag, WhatsSelect = 1, Referer = UrlsIn12306cn._otnConfirmPassengerInitDcUrl }; var confirmPassengerCheckOrderResult = await ConfirmPassengerCheckOrderAsync(confirmPassengerCheckOrderInfo); if (!confirmPassengerCheckOrderResult.data.submitStatus) { return; } var confirmPassengerQueueCountInfo = new ConfirmPassengerQueueCountInfo { TrainDate = DateTime.Parse(_userOrderInfo.RideDate).ToCst(), TrainNo = ticketInfo.TrainCode, RepeatSubmitToken = confirmPassengerInitDcResult.GlobalRepeatSubmitToken, FromStationTelecode = ticketInfo.FromStationTelecode, ToStationTelecode = ticketInfo.ToStationTelecode, LeftTicket = confirmPassengerInitDcResult.TicketInfoForPassengerInfo.leftTicketStr, PurposeCode = confirmPassengerInitDcResult.TicketInfoForPassengerInfo.purpose_codes, SeatType = _userOrderInfo.SeatType.ToString(), TrainLocation = confirmPassengerInitDcResult.TicketInfoForPassengerInfo.train_location, StationTrainCode = ticketInfo.TrainNo, Referer = UrlsIn12306cn._otnConfirmPassengerInitDcUrl }; var confirmPassengerQueueCountResult = await ConfirmPassengerQueueCountAsync(confirmPassengerQueueCountInfo); var confirmSingleForQueueInfo = new ConfirmSingleForQueueInfo (confirmPassengerCheckOrderInfo.Referer, confirmPassengerInitDcResult.GlobalRepeatSubmitToken, confirmPassengerCheckOrderInfo.JsonAtt, null, null, confirmPassengerInitDcResult.TicketInfoForPassengerInfo.key_check_isChange, confirmPassengerInitDcResult.TicketInfoForPassengerInfo.leftTicketStr, confirmPassengerCheckOrderInfo.OldPassengerStr, confirmPassengerCheckOrderInfo.PassengerTicketStr, _userOrderInfo.PurposeCode, null, null, null, ticketInfo.TrainLocation, confirmPassengerCheckOrderInfo.WhatsSelect.ToString() ); var confirmSingleForQueueResult = await ConfirmSingleForQueueAsync(confirmSingleForQueueInfo); }
public async Task <Base12306cnResult <ConfirmPassengerQueueCountResult> > ConfirmPassengerQueueCountAsync(ConfirmPassengerQueueCountInfo reqInfo) { var request = CreateRequest(UrlsIn12306cn._otnConfirmPassengerQueueCountUrl, reqInfo.Referer, HttpMethodOptions.Post); request.AddParameter("REPEAT_SUBMIT_TOKEN", reqInfo.RepeatSubmitToken, ParameterOptions.FormUrlEncodedContent); request.AddParameter("_json_att", reqInfo.JsonAtt, ParameterOptions.FormUrlEncodedContent); request.AddParameter("fromStationTelecode", reqInfo.FromStationTelecode, ParameterOptions.FormUrlEncodedContent); request.AddParameter("leftTicket", reqInfo.LeftTicket, ParameterOptions.FormUrlEncodedContent); request.AddParameter("purpose_codes", reqInfo.PurposeCode, ParameterOptions.FormUrlEncodedContent); request.AddParameter("seatType", reqInfo.SeatType, ParameterOptions.FormUrlEncodedContent); request.AddParameter("stationTrainCode", reqInfo.StationTrainCode, ParameterOptions.FormUrlEncodedContent); request.AddParameter("toStationTelecode", reqInfo.ToStationTelecode, ParameterOptions.FormUrlEncodedContent); request.AddParameter("train_date", reqInfo.TrainDate, ParameterOptions.FormUrlEncodedContent); request.AddParameter("train_location", reqInfo.TrainLocation, ParameterOptions.FormUrlEncodedContent); request.AddParameter("train_no", reqInfo.TrainNo, ParameterOptions.FormUrlEncodedContent); var res = await _netClientService.ExecuteAsync(request); Console.WriteLine("ConfirmPassengerQueueCountAsync,res.ResponseUri:{0},res.Content:{1}", res.ResponseUri, res.Content); return(res.Content.ToModel <Base12306cnResult <ConfirmPassengerQueueCountResult> >()); }