mirror of https://github.com/testerSunshine/12306
109 lines
4.2 KiB
Python
109 lines
4.2 KiB
Python
# 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,
|
||
}
|
||
|
||
|
||
|
||
|