Ejemplo n.º 1
0
 def test_login(self):
     user_agent = base_data.get_user_agent()
     uuid = base_data.get_random_number() + '-' + base_data.get_random_letter_number(12).lower()
     login = http_handler.login.Login('jd_60aaf2f598861', 'e4e333', uuid, user_agent)
     cookie = login.get_cookie()
     print cookie
     print login.get_h5_cookie(cookie)
Ejemplo n.º 2
0
def get_special_coupon(userid, sessionid, mark):
    headers = {
        'content-type':
        'application/json; charset=UTF-8',
        'User-Agent':
        base_data.get_user_agent(),
        'Origin':
        'http://m.tuniu.com',
        'Referer':
        'http://m.tuniu.com/event/couponCenter/mainCenter/index?utm_source=morecoupon&utm_medium=couponcenter&q=1005',
        'X-Requested-With':
        'com.tuniu.app.ui',
        'Cookie':
        'PageSwitch=2,%s; _tacau=MCwzYTY0MTU4Ni1mZDI3LTQyMWUtZDI3NS1kNGI1ZDEzNDU1ODcs; _tacz2=taccsr=(direct)|tacccn=(none)|taccmd=(none)|taccct=(none)|taccrt=(none); _taca=1477397184786.1477397184786.1477397184786.1; _tacc=1; SERVERID=dnionD; app_imei=%s; ov=1; tuniuuser_id=%d;  TUNIUmuser=%s; sessionId=MQ==; token=%s; appVersion=9.0.6; tuniu_partner=MTU0NDcsMCwsOWIxMTFkNWY3NGQ1NmQ1NjdhNjEyZDQzYjEzYjVlYjI=; deviceType=1; SsoSession=%s; clientType=20; page_flag=; __utma=1.1665134217.1477397186.1477397186.1477397188.2; __utmb=1.4.10.1477397188; __utmc=1; __utmz=1.1477397188.2.2.utmcsr=morecoupon|utmccn=(not set)|utmcmd=couponcenter; _tact=NTExZDJiZTYtNGUxOS05Y2E2LWJlNjEtMTM0ZDMwYmMwNDRh; _tacb=NTFiZjQ2ZjgtZWZmNi1iYzUzLWFkNmQtZGQwMTZkZGQ4ZmU1'
        % (str(time.time()).replace(
            '.', ''), base_data.get_random_number(), userid, sessionid,
           base64.b64encode(base_data.get_random_letter_number()), sessionid)
    }

    req = requests.get(
        'http://dynamic.m.tuniu.com/event/couponCenter/MainCenter/getSpecialAjax?tab_id=9&mark=%s&tel=&q=1005'
        % mark,
        headers=headers)
    logger.debug('GET %s \n%s' % (req.url, req.headers))
    try:
        return req.json()
    except Exception, e:
        raise HttpRequestException(
            e, {
                'function': 'click_special_coupon',
                'method': 'get',
                'url': req.url,
                'headers': headers,
                'resp_content': req.content
            })
Ejemplo n.º 3
0
def confirm(parms):
    headers = {'User-Agent': base_data.get_user_agent(),
               'baseParams': base64.b64encode(json.dumps({"fingerPrint": "", "sessionId": parms['sessionId'],
                                                          "termAppVersion": "1.4.0", "termSysVersion": "4.4.2",
                                                          "majorAppVersion": "9.0.0",
                                                          "termModel": "",
                                                          "appType": 2, "platformId": 1, "network": "WIFI",
                                                          "termId": parms['termId']})),
               'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}

    url = 'https://jr.tuniu.com/fmp-web/pay/confirm'
    data = {"downPaymentFlag": 0, "encodeTotalAmount": rsa.encode(parms['price']), "orderId": parms['orderId'],
            "orderType": 1, "payChannel": base_data.payChannel, "payMethod": 11, "sign": "", "userId": parms['userId']}

    sign_data = 'downPaymentFlag=0&encodeTotalAmount=%s&orderId=%s&orderType=1&payChannel=%d&payMethod=11&userId=%d' % (
        data['encodeTotalAmount'], data['orderId'], base_data.payChannel, data['userId'])
    sign_data = sign_data + '&*()%sd76@#$Dfs^YsfUJKDs'
    data['sign'] = hashlib.md5(sign_data).hexdigest()
    base64_data = base64.b64encode(json.dumps(data))
    req = requests.post(url, data=base64_data, headers=headers)

    logger.debug('POST %s\n%s\n%s\n%s' % (req.url, json.dumps(headers), data, base64_data))
    try:
        resp = json.loads(base64.b64decode(req.text))
        return resp
    except Exception, e:
        raise HttpRequestException(e, {'function': 'pay_confirm', 'method': 'post', 'url': req.url,
                                       'headers': headers, 'data': data,
                                       'resp_content': req.content})
Ejemplo n.º 4
0
def get_train_list(data):
    headers = {'User-Agent': base_data.get_user_agent(),
               'Content-Type': 'application/json; charset=UTF-8'}

    url = 'http://m.tuniu.com/api/train/product/ticketListWithFresh?c=%7B%22v%22%3A%228.1.6%22%2C%22ct%22%3A20%2C%22dt%22%3A1%2C%22ov%22%3A1%2C%22p%22%3A15447%2C%22cc%22%3A1502%7D'
    req = requests.post(url, json=data, headers=headers)

    logger.debug('POST #1 %s\n%s \n%s' % (req.url, req.headers, data))
    try:
        resp = req.json()
        if resp['success'] and 'rows' in resp['data'] and resp['data']['rows']:
            return resp
        else:
            kyfw_req = requests.get(
                'https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=%s&from_station=%s&to_station=%s' % (
                    data['departureDate'], base_data.get_station_code_12306(data['departureCityName']),
                    base_data.get_station_code_12306(data['arrivalCityName'])), verify=False)

            logger.debug('request 12306:GET %s' % kyfw_req.url)
            data['trainInfo'] = kyfw_req.text

            req = requests.post(url, json=data, headers=headers)
            logger.debug('POST #2 %s\n%s \n%s' % (req.url, req.headers, data))
            return req.json()

    except Exception, e:
        raise HttpRequestException(e, {'function': 'get_train_list', 'method': 'post', 'url': req.url,
                                       'headers': headers, 'data': data,
                                       'resp_content': req.content})
Ejemplo n.º 5
0
 def test_login(self):
     user_agent = base_data.get_user_agent()
     uuid = base_data.get_random_number(
     ) + '-' + base_data.get_random_letter_number(12).lower()
     login = http_handler.login.Login('13060470262', 'xf12345678', uuid,
                                      user_agent)
     cookie = login.get_cookie()
     print cookie
     print login.get_h5_cookie(cookie)
Ejemplo n.º 6
0
 def test_get_couponList(self):
     user_agent = base_data.get_user_agent()
     uuid = base_data.get_random_number(
     ) + '-' + base_data.get_random_letter_number(12).lower()
     login = http_handler.login.Login('17094020074', '95al4b', uuid,
                                      user_agent)
     print login.get_couponList(
         'pin=jd_7237cebe5e1e2; wskey=AAFYv7yjAEAY3oNhf4518qnKnh2T-kTanh8UVmUyIpPVAul2_XiQru8dX4xc1f-Lx2DmSoBGZgE46Ma0mK2OnBzYGPDR8LX1; whwswswws=',
         '9410795545')
Ejemplo n.º 7
0
 def test_login(self):
     user_agent = base_data.get_user_agent()
     uuid = base_data.get_random_number(
     ) + '-' + base_data.get_random_letter_number(12).lower()
     login = http_handler.login.Login('17044006148', 'qqqzzz123', uuid,
                                      user_agent)
     cookie = login.get_cookie()
     print cookie
     print login.get_h5_cookie(cookie)
Ejemplo n.º 8
0
 def test_login(self):
     user_agent = base_data.get_user_agent()
     uuid = base_data.get_random_number(
     ) + '-' + base_data.get_random_letter_number(12).lower()
     username = '******'
     login = http_handler.login.Login(username, '666xxxxx', uuid,
                                      user_agent)
     cookie = login.get_cookie()
     print cookie
     print login.get_h5_cookie(cookie)
Ejemplo n.º 9
0
def account_info(sessionid, partner):
    req = requests.get('https://m.tuniu.com/iapi/appserver/view/myAccountInfoV400?%s' % base64.b64encode(json.dumps(
        {"sessionID": sessionid, "r": time.time(), "partner": partner, "clientType": 20,
         "deviceType": 1, "version": "9.0.6"})), headers={'content-type': 'application/json; charset=UTF-8',
                                                          'User-Agent': base_data.get_user_agent()})  # "_currentCityCode": "1502"
    logger.debug('GET %s \n%s' % (req.url, req.headers))
    try:
        return json.loads(base64.b64decode(req.content))
    except Exception, e:
        raise HttpRequestException(e, {'function': 'account_info', 'method': 'get', 'url': req.url,
                                       'resp_content': req.content})
Ejemplo n.º 10
0
 def test_get_couponList(self):
     user_agent = base_data.get_user_agent()
     uuid = base_data.get_random_number(
     ) + '-' + base_data.get_random_letter_number(12).lower()
     login = http_handler.login.Login('jd_552fc39bc08ef', 'nodxbjh4', uuid,
                                      user_agent)
     coupon_list = login.get_couponList(
         'pin=jd_552fc39bc08ef; wskey=AAFasw3nAEBySSgEX1dtP_ksNfg4IgbF8HYscebuYTIUxfAilMdZMbmalnLGR2pGAtK9L48bnuCb-JHdzYIwi8yQk24TKaCg; whwswswws=',
         '32744086077')
     print coupon_list
     if not coupon_list:
         print 'not found'
     else:
         print 'find it'
Ejemplo n.º 11
0
 def test_get_couponList(self):
     user_agent = base_data.get_user_agent()
     uuid = base_data.get_random_number(
     ) + '-' + base_data.get_random_letter_number(12).lower()
     login = http_handler.login.Login('18311647121', '97abccycycy', uuid,
                                      user_agent)
     coupon_list = login.get_couponList(
         'pin=jd_45881dc641d96; wskey=AAFZ9shzAEAOOPsvYBESTeF1GcRTh7ECxJWYJYYEEHeLS8Dd4pTt9_BN8HfXUBymn97RQNn8_X_zZ8eicj_eS_eIgTMt0eP-; whwswswws=00',
         '21212811453')
     print coupon_list
     if not coupon_list:
         print 'not found'
     else:
         print 'find it'
Ejemplo n.º 12
0
def getFromHttpSqs(adsl):
    # url = 'http://vooaa.cn:98/give.do?pw=2985256&number=1'
    url = 'http://139.199.65.115:1218/?name=jd_wait_login&opt=get&auth=Fb@345!'
    logger.info('GET %s' % url)
    resp = requests.get(url)
    if resp.text == 'HTTPSQS_GET_END':
        time.sleep(5)
        return None

    _account = resp.json()

    logger.info('resp: %s' % json.dumps(_account))
    if not _account:
        return

    account = {
        'username': _account['username'],
        'password': _account['password'],
        'valid': 0,
        'cookie': '',
        'h5_cookie': ''
    }
    logger.info('uname:%s,pwd:%s,login...' %
                (account['username'], account['password']))
    uuid = base_data.get_random_number(
    ) + '-' + base_data.get_random_letter_number(12).lower()
    user_agent = base_data.get_user_agent()

    adsl.reconnect()

    try:
        login = http_handler.login.Login(account['username'],
                                         account['password'], uuid, user_agent)
        cookie = login.get_cookie()
        logger.info('login success,cookie:%s' % cookie)
        account['cookie'] = cookie

        h5_cookie = login.get_h5_cookie(cookie)
        logger.info('get h5 cookie:%s' % h5_cookie)

        cookie = 'pt_key=%s;pwdt_id=%s;sid=%s;guid=%s;pt_pin=%s;mobilev=%s' % (
            h5_cookie['pt_key'], h5_cookie['pwdt_id'], h5_cookie['sid'],
            h5_cookie['guid'], h5_cookie['pt_pin'], h5_cookie['mobilev'])

        account['h5_cookie'] = cookie
        account['valid'] = 1
    except Exception, e:
        logger.error('login faild\n%s' % traceback.format_exc())
Ejemplo n.º 13
0
def get_account_train_order_can_use_coupon(order, sessionid, partner, cc):
    headers = {'User-Agent': base_data.get_user_agent()}
    params = {'d': json.dumps(
        {"trainNumber": order['trainNumber'], "startStationName": order['startStationName'], "sessionId": sessionid,
         "arrivalStationName": order['arrivalStationName'], "departureCityCode": order['departureCityCode'],
         "departDate": order['departDate'],
         "adultPrice": order['adultPrice'], "insurancePrice": 0, "childCount": 0,
         "adultCount": 1,
         "absId": 0}), 'c': json.dumps({"v": "9.0.6", "ct": 20, "dt": 1, "ov": 1, "p": partner, "cc": cc})}
    # "seatId": order['seatId'],
    req = requests.get(
        'http://m.tuniu.com/api/train/order/getMyCoupons', params=params, headers=headers)

    logger.debug('GET %s \n%s' % (req.url, req.headers))

    try:
        return req.json()
    except Exception, e:
        raise HttpRequestException(e, {'function': 'get_account_coupon', 'method': 'get', 'url': req.url,
                                       'headers': headers,
                                       'resp_content': req.content})
Ejemplo n.º 14
0
def place_order():
    while True:
        partner_order_id = ''

        try:
            currentHour = int(time.strftime('%H', time.localtime(time.time())))
            if currentHour > 22 or currentHour < 7:
                print 'sleep a hour'
                time.sleep(600)
                continue

            logger.info('--------------------------')
            logger.info('get jingdong train data')
            try:
                resp = requests.get(
                    'http://op.ykjd.com/JDTrainOpen/getTaskForJD?order_src=app'
                )
                train = resp.json()
                # train = {"data":"{\"module\":{\"worker\":[{\"assembly\":\"FBServer.Order.TrainJD.Order_TrainJD,FBServer.Order.TrainJD.dll,1.0.0.0\",\"type\":0,\"parms\":None}],\"payer\":None},\"sessionId\":None,\"data\":{\"ticketsInfo\":[{\"coachNo\":\"G1278\",\"departure\":\"漯河西\",\"dptStation\":\"LBN\",\"destination\":\"邢台东\",\"arrStation\":\"EDP\",\"dptDate\":\"2017-04-07\",\"dptTime\":\"\",\"ticketPrice\":204.0000,\"optionType\":1}],\"contactInfo\":{\"name\":\"夏邦初\",\"IDCard\":\"130401197407226837\",\"mobileNo\":\"15077618216\"},\"passengersInfo\":[{\"name\":\"邹凡嘉\",\"IDType\":\"1\",\"IDCard\":\"510123197802174259\",\"mobileNo\":\"15077618216\"},{\"name\":\"夏邦初\",\"IDType\":\"1\",\"IDCard\":\"130401197407226837\",\"mobileNo\":\"15077618216\"}],\"count\":1,\"exData1\":\"O\",\"exData2\":{\"user\":\"15347531101\",\"pwd\":\"aa748578\",\"couponid\":\"9894437370\",\"couponPrice\":\"28.0000\",\"UseAmount\":\"399.0000\",\"cookie\":None,\"orderUser\":\"system\",\"taskType\":1,\"priceSection\":\"300\"},\"fee\":0}}","order_id":"fc9668d6d80d404d94825253ef53029f"}
                partner_order_id = train['order_id']
                logger.debug(json.dumps(train))
            except Exception, e:
                if resp:
                    print resp.text
                print 'get jingdong train data faild'
                time.sleep(5)
                continue

            train = json.loads(train['data'])
            # train={"module":{"worker":[{"assembly":"FBServer.Order.TrainJD.Order_TrainJD,FBServer.Order.TrainJD.dll,1.0.0.0","type":0,"parms":None}],"payer":None},"sessionId":None,"data":{"ticketsInfo":[{"coachNo":"G1278","departure":"漯河西","dptStation":"LBN","destination":"邢台东","arrStation":"EDP","dptDate":"2017-04-07","dptTime":"","ticketPrice":204.0000,"optionType":1}],"contactInfo":{"name":"夏邦初","IDCard":"130401197407226837","mobileNo":"15077618216"},"passengersInfo":[{"name":"邹凡嘉","IDType":"1","IDCard":"510123197802174259","mobileNo":"15077618216"},{"name":"夏邦初","IDType":"1","IDCard":"130401197407226837","mobileNo":"15077618216"}],"count":1,"exData1":"O","exData2":{"user":"******","pwd":"xaf888","couponid":"9837987575","couponPrice":"10.0000","UseAmount":"399.0000","cookie":None,"orderUser":"******","taskType":1,"priceSection":"300"},"fee":0}}
            username = train['data']['exData2']['user'].encode('utf-8')
            password = train['data']['exData2']['pwd']
            logger.info('get orderid:%s,username:%s,password:%s,logon...' %
                        (partner_order_id, username, password))

            uuid = base_data.get_random_number(
            ) + '-' + base_data.get_random_letter_number(12).lower()
            user_agent = base_data.get_user_agent()

            # while True:
            #     adsl_service.reconnect()
            #     return1 = os.system('ping baidu.com')
            #     if return1:
            #         continue
            #     else:
            #         break

            pc_cookie = train['data']['exData2']['pc_cookie']
            couponType = train['data']['exData2']['couponType']
            if not pc_cookie:
                try:
                    pc_cookie = http_handler.jd_pc_login.get_cookie(
                        username, password)
                except Exception:
                    if couponType == 4 or couponType == '4':
                        raise Exception("get pc cookie exception")

                if not pc_cookie:
                    if couponType == 4 or couponType == '4':
                        raise Exception("get pc cookie faild")

            cookie = train['data']['exData2']['app_cookie']
            if not cookie:
                login = http_handler.login.Login(username, password, uuid,
                                                 user_agent)
                cookie = login.get_cookie()
                logger.info('login success,cookie:%s' % cookie)

            h5_cookie = login.get_h5_cookie(cookie)
            logger.info('get h5 cookie:%s' % h5_cookie)

            couponid = ''
            couponPrice = ''
            if train['data']['exData2'].has_key('couponid'):
                couponid = train['data']['exData2']['couponid']
                logger.info('get couponid %s' % couponid)
            if train['data']['exData2'].has_key('couponPrice'):
                couponPrice = train['data']['exData2']['couponPrice']
                logger.info('get couponPrice %s' % couponPrice)

            if couponid:
                logger.info('find out couponid')
                if not login.get_couponList(cookie, couponid):
                    logger.info('faild')
                    raise Exception(u'没有找到优惠卷,%s' % couponid)

            order = http_handler.order.Order(uuid, user_agent, h5_cookie)
            passengers = train['data']['passengersInfo']
            logger.info('add passenger %s' % json.dumps(passengers))
            passenger_ids = ','.join(order.add_passenger(passengers))
            logger.info('add passenger success.ids:%s.' % passenger_ids)

            logger.info('add contract %s' %
                        json.dumps(train['data']['contactInfo']))
            train['data']['contactInfo']['contractId'] = order.add_contract(
                train['data']['contactInfo']['name'],
                train['data']['contactInfo']['mobileNo'])
            logger.info('add contract success.id:%s.' %
                        train['data']['contactInfo']['contractId'])

            order_data = order.gen_order(train, passenger_ids)
            logger.info('order generate success,id:%s.get token...' %
                        order_data['orderid'])

            order_data = order.get_token(order_data)
            logger.info('order token success,%s' % order_data['token'])

            if not (couponid and couponPrice):
                order_data[
                    'coupon'] = '&isGrab=false&payTypes=&couponIds=&couponFee=0'
            else:
                order_data[
                    'coupon'] = '&payTypes=allDCoupon&couponIds=%s&couponFee=%s&isGrab=false&subOrderType=1' % (
                        str(couponid), str(int(float(couponPrice) * 100)))
                # order_data['couponid'] = couponid
                # order_data['couponPrice'] = int(float(couponPrice) * 100)

            logger.info('submit:%s' % json.dumps(order_data))
            if order.submit(order_data):
                logger.info('get order details')
                order_details = order.get_details(order_data['orderid'])
                if order_details:
                    # try:
                    #     resp = requests.get(
                    #         'http://115.29.79.63:9000/api/Cookie/Get?username=%s&password=%s' % (username, password),
                    #         timeout=10)
                    #     data = resp.json()
                    #     if data['Status']:
                    #         pc_cookie = data['Cookie']
                    #     else:
                    #         logger.error(data['Message'])
                    # except requests.exceptions.ReadTimeout:
                    #     logger.error('timeout')
                    # except Exception, e:
                    #     logger.error(e.message)

                    logger.info('erpOrderId %s,callback start...' %
                                order_details['erpOrderId'])
                    resp = requests.get(
                        'http://op.ykjd.com/JDTrainOpen/CallBackForMJD?order_id=%s&jdorder_id='
                        '%s&success=true&order_no=%s&amount=%s&order_src=app&checi=%s&seatTyp=%s&cookie=%s'
                        % (partner_order_id, order_details['erpOrderId'],
                           order_data['orderid'],
                           order_details['onlinePayFee'], order_data['cheCi'],
                           order_data['seatType'], pc_cookie))
                    logger.info(resp.text)
                    logger.info('ALL SUCCESS')

                    time.sleep(PLACEORDERINTERVAL)
                else:
                    raise Exception('order place faild')
            else:
                raise Exception(u'已经3次预定')
        except requests.exceptions.ConnectionError, e:
            print 'adsl faild'
            print traceback.format_exc()
            adsl_service.reconnect()
Ejemplo n.º 15
0
        os.rename(
            account_txt,
            os.path.normpath(
                os.path.join(root_path,
                             'account/' + str(int(time.time())) + '.txt')))
        for account in accounts:
            try:
                ac = account.split(',')
                username = ac[0]
                password = ac[1]

                logger.info('uname:%s,pwd:%s,login...' % (username, password))
                uuid = base_data.get_random_number(
                ) + '-' + base_data.get_random_letter_number(12).lower()
                user_agent = base_data.get_user_agent()

                login = http_handler.login.Login(username, password, uuid,
                                                 user_agent)
                cookie = login.get_cookie()
                logger.info('login success,cookie:%s' % cookie)

                h5_cookie = login.get_h5_cookie(cookie)
                logger.info('get h5 cookie:%s' % h5_cookie)

                cookie = 'pt_key=%s;pwdt_id=%s;sid=%s;guid=%s;pt_pin=%s;mobilev=%s' % (
                    h5_cookie['pt_key'], h5_cookie['pwdt_id'],
                    h5_cookie['sid'], h5_cookie['guid'], h5_cookie['pt_pin'],
                    h5_cookie['mobilev'])

            except Exception, e:
Ejemplo n.º 16
0
def place_order():
    while True:
        partner_order_id = ''

        try:
            currentHour = int(time.strftime('%H', time.localtime(time.time())))
            if currentHour > 22 or currentHour < 7:
                print 'sleep a hour'
                time.sleep(3600)
                continue

            logger.info('--------------------------')
            logger.info('get jingdong train data')
            try:
                resp = requests.get(
                    'http://op.yikao666.cn/JDTrainOpen/getTaskForJD?order_src=app'
                )
                train = resp.json()
                partner_order_id = train['order_id']
                logger.debug(json.dumps(train))
            except Exception, e:
                if resp:
                    print resp.text
                print 'get jingdong train data faild'
                time.sleep(5)
                continue

            train = json.loads(train['data'])
            username = train['data']['exData2']['user'].encode('utf-8')
            password = train['data']['exData2']['pwd']
            logger.info('get orderid:%s,username:%s,password:%s,logon...' %
                        (partner_order_id, username, password))

            uuid = base_data.get_random_number(
            ) + '-' + base_data.get_random_letter_number(12).lower()
            user_agent = base_data.get_user_agent()

            # while True:
            #     adsl_service.reconnect()
            #     return1 = os.system('ping baidu.com')
            #     if return1:
            #         continue
            #     else:
            #         break

            login = http_handler.login.Login(username, password, uuid,
                                             user_agent)
            cookie = login.get_cookie()
            logger.info('login success,cookie:%s' % cookie)

            h5_cookie = login.get_h5_cookie(cookie)
            logger.info('get h5 cookie:%s' % h5_cookie)

            couponid = ''
            couponPrice = ''
            if train['data']['exData2'].has_key('couponid'):
                couponid = train['data']['exData2']['couponid']
                logger.info('get couponid %s' % couponid)
            if train['data']['exData2'].has_key('couponPrice'):
                couponPrice = train['data']['exData2']['couponPrice']
                logger.info('get couponPrice %s' % couponPrice)

            if couponid:
                logger.info('find out couponid')
                if not login.get_couponList(cookie, couponid):
                    logger.info('faild')
                    raise Exception(u'没有找到优惠卷,%s' % couponid)

            order = http_handler.order.Order(uuid, user_agent, h5_cookie)
            passengers = train['data']['passengersInfo']
            logger.info('add passenger %s' % json.dumps(passengers))
            passenger_ids = ','.join(order.add_passenger(passengers))
            logger.info('add passenger success.ids:%s.' % passenger_ids)

            order_data = order.gen_order(train, passenger_ids)
            logger.info('order generate success,id:%s.get token...' %
                        order_data['orderid'])

            order_data = order.get_token(order_data)
            logger.info('order token success,%s' % order_data['token'])

            if not (couponid and couponPrice):
                order_data[
                    'coupon'] = '&isGrab=false&payTypes=&couponIds=&couponFee=0'
            else:
                order_data[
                    'coupon'] = '&payTypes=allDCoupon&couponIds=%s&couponFee=%s' % (
                        str(couponid), str(int(float(couponPrice) * 100)))
                # order_data['couponid'] = couponid
                # order_data['couponPrice'] = int(float(couponPrice) * 100)

            logger.info('submit:%s' % json.dumps(order_data))
            if order.submit(order_data):
                logger.info('get order details')
                order_details = order.get_details(order_data['orderid'])
                if order_details:
                    logger.info('get pc cookie')
                    pc_cookie = ''
                    try:
                        resp = requests.get(
                            'http://115.29.79.63:9000/api/Cookie/Get?username=%s&password=%s'
                            % (username, password),
                            timeout=10)
                        data = resp.json()
                        if data['Status']:
                            pc_cookie = data['Cookie']
                        else:
                            logger.error(data['Message'])
                    except requests.exceptions.ReadTimeout:
                        logger.error('timeout')
                    except Exception, e:
                        logger.error(e.message)

                    logger.info('erpOrderId %s,callback start...' %
                                order_details['erpOrderId'])
                    resp = requests.get(
                        'http://op.yikao666.cn/JDTrainOpen/CallBackForMJD?order_id=%s&jdorder_id=%s&success=true&order_no=%s&amount=%s&order_src=app&checi=%s&seatTyp=%s&cookie=%s'
                        % (partner_order_id, order_details['erpOrderId'],
                           order_data['orderid'],
                           order_details['onlinePayFee'], order_data['cheCi'],
                           order_data['seatType'], pc_cookie))
                    logger.info(resp.text)
                    # logger.info('get pc cookie')

                    logger.info('ALL SUCCESS')
                    time.sleep(PLACEORDERINTERVAL)
                else:
                    raise Exception('order place faild')
            else:
                raise Exception('submit maybe faild')
Ejemplo n.º 17
0
def add_order(sessionid, partner, cc, data):
    from_ = base_data.get_station_code_by_city_name(data['from'])
    to_ = base_data.get_station_code_by_city_name(data['to'])

    if from_ is None:
        raise ValueError('cannot find from station')
    if to_ is None:
        raise ValueError('cannot find to station')

    logger.info('looking for train %s' % data['train_number'])
    get_train_list_resp = get_train_list(
        {"arrivalCityCode": to_['cityCode'], "arrivalCityName": data['to'], "departureCityCode": from_['cityCode'],
         "departureCityName": data['from'],
         "departureDate": data['depart_date'], "deviceNumber": base_data.get_random_number(), "sortName": 0,
         "sortType": 0,
         "start": 0,
         "showAvailableTickets": 0, "limit": 0})

    train = filter(lambda t: t['trainNum'] == data['train_number'], get_train_list_resp['data']['rows'])
    if train:
        logger.info('find train %s success,looking for seat %s' % (data['train_number'], data['seatName']))
        seat = filter(lambda t: t['seatName'] == data['seatName'], train[0]['seatDesc'])
        if seat:
            logger.info('seat lookup %s success,order place starting...' % data['seatName'])
            params = {'d': json.dumps(
                {"zipCode": "", "address": "", "verificationCode": "", "travelCouponId": "",
                 "arrivalCityCode": to_['cityCode'],
                 "arrivalCityName": data['to'], "arrivalStationName": to_['stationName'],
                 "arrivalStations": to_['stationId'],
                 "trainNumber": data['train_number'],
                 "contactList": {"appellation": "", "email": "", "name": "", "phone": "", "tel": data['phone']},
                 "departDate": data['depart_date'], "departureCityCode": from_['cityCode'],
                 "departureCityName": data['from'],
                 "departureStationName": from_['stationName'], "departureStations": from_['stationId'],
                 "deviceNumber": base_data.get_random_number(),
                 "trainId": train[0]['trainId'], "touristList": data['touristList'],
                 "telNum": "", "sessionId": sessionid, "seatId": seat[0]['seatId'],
                 "promotionList": data['promotionList'],
                 "resourceId": seat[0]['resId'], "receiverName": "",
                 "rate": 0,
                 "adultPrice": data['price'],
                 "isTransferToDispatchTicket": 0, "isExcess": 0, "isDispatchTicket": 0, "isCouponValuable": 0,
                 "insuranceResourceId": 0, "insurancePrice": 0, "childCount": 0, "ministryRailwaysId": 0,
                 "travelCouponUseValue": 0, "useTrainUniquePromotion": False, "adultCount": 1,
                 # len(data['promotionList']) > 0
                 "acceptStandingTicket": False}),
                'c': json.dumps({"v": "9.0.6", "ct": 20, "dt": 1, "ov": 1, "p": partner, "cc": cc})}

            s = requests.session()
            s.keep_alive = False

            headers = {'User-Agent': base_data.get_user_agent(),
                       'Content-Type': 'application/json; charset=UTF-8'}

            req = requests.get('http://m.tuniu.com/api/train/order/AddOrder', params, headers=headers)
            logger.debug('GET %s' % req.url)
            try:
                resp = req.json()
                return resp
            except Exception, e:
                raise HttpRequestException(e, {'function': 'addorder', 'method': 'get', 'url': req.url,
                                               'resp_content': req.content})
        else:
            raise ValueError('cant find trainNum %s,seat %s' % (data['train_number'], data['seatName']))