# coding=utf-8 import urllib from collections import OrderedDict from config.TicketEnmu import ticket class autoSubmitOrderRequest: """ 快读提交订单通道 """ def __init__(self, session, secretStr, train_date, query_from_station_name, query_to_station_name, passengerTicketStr, oldPassengerStr): self.secretStr = urllib.unquote(secretStr) self.train_date = train_date self.query_from_station_name = query_from_station_name self.query_to_station_name = query_to_station_name self.passengerTicketStr = passengerTicketStr self.oldPassengerStr = oldPassengerStr self.session = session def data_par(self): """ 参数结构 自动提交代码接口-autoSubmitOrderRequest - 字段说明 - secretStr 车票代码 - train_date 乘车日期 - tour_flag 乘车类型 - purpose_codes 学生还是成人 - query_from_station_name 起始车站 - query_to_station_name 结束车站 - cancel_flag 默认2,我也不知道干嘛的 - bed_level_order_num 000000000000000000000000000000 - passengerTicketStr 乘客乘车代码 - oldPassengerStr 乘客编号代码 :return: """ data = OrderedDict() data["secretStr"] = self.secretStr data["train_date"] = self.train_date data["tour_flag"] = "dc" data["purpose_codes"] = "ADULT" data["query_from_station_name"] = self.query_from_station_name data["query_to_station_name"] = self.query_to_station_name data["cancel_flag"] = 2 data["bed_level_order_num"] = "000000000000000000000000000000" data["passengerTicketStr"] = self.passengerTicketStr data["oldPassengerStr"] = self.oldPassengerStr return data def sendAutoSubmitOrderRequest(self): """ 请求下单接口 :return: """ urls = self.session.urls["autoSubmitOrderRequest"] data = self.data_par() autoSubmitOrderRequestResult = self.session.httpClint.send(urls, data) if autoSubmitOrderRequestResult and \ autoSubmitOrderRequestResult.get("status", False) and\ autoSubmitOrderRequestResult.get("httpstatus", False) == 200: requestResultData = autoSubmitOrderRequestResult.get("data", {}) if requestResultData: result = requestResultData.get("result", "") ifShowPassCode = requestResultData.get("ifShowPassCode", "N") print(ticket.AUTO_SUBMIT_ORDER_REQUEST_C) if ifShowPassCode == "Y": # 如果需要验证码 print(ticket.AUTO_SUBMIT_NEED_CODE) return { "result": result, "ifShowPassCode": ifShowPassCode, "code": ticket.SUCCESS_CODE, "ifShowPassCodeTime": requestResultData.get("requestResultData", 2000) / float(1000), "status": True, } else: print(ticket.AUTO_SUBMIT_NOT_NEED_CODE) return { "result": result, "ifShowPassCode": ifShowPassCode, "code": ticket.SUCCESS_CODE, "ifShowPassCodeTime": requestResultData.get("requestResultData", 2000) / float(1000), "status": True, } else: print(ticket.AUTO_SUBMIT_ORDER_REQUEST_F) if autoSubmitOrderRequestResult.get("messages", ""): print(autoSubmitOrderRequestResult.get("messages", "")) return { "code": ticket.FAIL_CODE, "status": False, } elif autoSubmitOrderRequestResult.get("validateMessages", ""): print(autoSubmitOrderRequestResult.get("validateMessages", "")) return { "code": ticket.FAIL_CODE, "status": False, }