def login(self): logger.info('login starting...\n1#.get session id') begin_session_resp = http_handler.login.begin_session( self.partner, self.cc) logger.info('begin session resp:%s' % begin_session_resp) if begin_session_resp['success']: self.account['sessionid'] = begin_session_resp['data']['sessionId'] logger.info('get session id success,the id is %s' % self.account['sessionid']) logger.info('#2.login') login_resp = http_handler.login.login(self.account['sessionid'], self.account['username'], self.account['password'], self.partner, self.cc) logger.debug('login resp:%s' % login_resp) if login_resp['success']: logger.info('login success,the sessionid is %s' % self.account['sessionid']) return self.account['sessionid'] else: err = '2#.login faild' logger.info('account cant use,send to server') resp = requests.put(base_data.put_aacount_cantuse % self.accountid) logger.info(resp.text) logger.error(err) raise ValueError(err) else: err = 'get session id faild' logger.error(err) raise ValueError(err)
def __lookup_coupon(self, data): logger.info('looking for trainticket order coupon that can use ') train_order_coupon_resp = http_handler.account.get_account_train_order_can_use_coupon( { 'trainNumber': data['train_number'], 'startStationName': data['from'], 'arrivalStationName': data['to'], 'departureCityCode': '200', 'departDate': data['depart_date'], 'adultPrice': data['price'] }, self.account['sessionid'], self.partner, self.cc) # logger.debug('train order coupon resp:%s' % train_order_coupon_resp) if train_order_coupon_resp['success'] and train_order_coupon_resp[ 'data']['sortData']: coupon = train_order_coupon_resp['data']['sortData'][0] #random.randint(0, len(train_order_coupon_resp['data']['sortData'])) - 1] logger.info('find it.use %s' % coupon['number']) data['promotionList'].append(coupon['number']) data['price'] -= coupon['reduction'] return True else: logger.error('trainticket order coupon not found') return False
def des_encryption(mobile): url = 'http://115.28.102.142:8081/api/des/encode/%s' % mobile while True: try: resp = requests.get(url) mobile = resp.text return mobile except Exception, e: logger.error('des encryption faild') time.sleep(60) continue
def get_user_id(self): logger.info('get user id starting...') resp = http_handler.account.account_info(self.account['sessionid'], self.partner) logger.debug('account info:%s' % resp) if (resp['success']): logger.info('get user id %s' % resp['data']['userProfile']['userId']) self.account['userid'] = int(resp['data']['userProfile']['userId']) return self.account['userid'] else: err = 'get user id faild' logger.error(err) raise ValueError(err)
def callback_partner_and_save_order(data, success, order_id, pc_cookie=''): data['order_handler_complete_time'] = str(datetime.datetime.now()) if success: while True: try: pay_task_data = { "module": { "worker": [ { "assembly": "FBServer.Pay.TrainJD.Pay_RechargePhoneBillJD,FBServer.Pay.TrainJD.dll", "type": 0, "parms": '' } ], "payer": [ "{0}" ] }, "sessionId": '', "data": { "siteNo": "jingdong_phone", "ticketOrderNo": data['jd_order_id'], "sysOrderNo": data['trade_no'], "loginUser": data['account']["username"], "loginPwd": data['account']["password"], "exData": { "Cookie": pc_cookie.replace('"', ''), "userId": '', "mCookie": '', "orderId": "", "payurl": "" }, "creatTime": str(datetime.datetime.now()), "amount": float(data['money']) / 100, "isPay": "false" } } url = 'http://op.ykjd.com/JDTrainOpen/CreatePayTaskByPhone' pay_task_data = json.dumps(pay_task_data) logger.debug('POST %s\n%s' % (url, pay_task_data)) resp = requests.post(url, data={'send_data': pay_task_data}) logger.info(resp.text) data['pay_task_id'] = resp.text break except Exception, e: logger.error('callback pay faild') logger.error(traceback.format_exc()) time.sleep(60) continue
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())
def get_account(uuid): logger.info('get jd account') url = base_data.JD_ACCOUNT_API_GET try: logger.debug('GET %s' % url) resp = requests.get(url) logger.debug(resp.text) account_json = resp.json() account = json.loads(account_json['_data']) account['account_id'] = account_json['account_id'] return account except Exception, e: logger.error('get jd account faild') return None
def login_from_api(): while True: try: account = http_handler.account.getFromHttpSqs(adsl_service) if account: url = 'http://139.199.65.115:1218/?name=jd_login&opt=put&auth=Fb@345!' data = json.dumps(account) logger.info('send to queue...,%s' % data) resp = requests.put(url, data=data) if resp.text == 'HTTPSQS_PUT_OK': logger.info('ALL SUCCESS') else: logger.info('send to queue faild\n%s,exit' % resp.text) exit() except Exception, e: logger.error(traceback.format_exc()) time.sleep(5)
def login_from_txt(): root_path = os.path.abspath(os.path.join(os.path.dirname(__file__))) account_txt = os.path.normpath(os.path.join(root_path, 'account/account.txt')) while True: if not os.path.isfile(account_txt): print 'account txt not found' time.sleep(20) continue file_object = open(account_txt) try: accounts = file_object.readlines() except Exception, e: logger.error('read file faild') continue finally:
def save_order(data, id=0): while True: try: logger.info('save trade data') _data = {'order_id': id, 'data': data} logger.debug('POST %s\n%s' % (base_data.ORDER_SAVE_API_POST, json.dumps(_data))) resp = requests.post(base_data.ORDER_SAVE_API_POST, json=_data) logger.debug(resp.text) if resp.text == '-1' or resp.text == '0': logger.warn('maybe faild') time.sleep(60) else: logger.info('sucess') return resp.text except Exception: logger.error(traceback.format_exc()) time.sleep(60) continue
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() except Exception, e: logger.error(traceback.format_exc()) if partner_order_id: url = 'http://op.ykjd.com/JDTrainOpen/CallBackForMJD?order_id=%s&success=false&order_src=app&msg=%s' % ( partner_order_id, e.message or e) logger.info('callback start.%s' % url) resp = requests.get(url) logger.info(resp.text) time.sleep(PLACEORDERINTERVAL) def login_from_api(): while True: try: account = http_handler.account.getFromHttpSqs(adsl_service)
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')
def sync_status_from_jd(): pool = redis.ConnectionPool(host='139.199.65.115', port=6379, db=0, password='******') r = redis.Redis(connection_pool=pool) while True: retry = 0 try: print 'redis brpop' result = r.brpop('order_platform:phone_charge:order_pay_success', 5) if result: resp = result[1] logger.info('get order:%s' % resp, program='sync_status_from_jd') # resp = requests.get(base_data.ORDER_API_GET + id) # resp = resp.json() if (resp): order = json.loads(resp) order_sync_jd_status_time = str(datetime.datetime.now()) cookie = order['account']['cookie'] logger.info('get status', order['trade_no'], 'sync_status_from_jd') uuid = base_data.get_random_number() + '-' + base_data.get_random_letter_number(12).lower() headers = { 'Charset': 'UTF-8', 'jdc-backup': cookie, 'Connection': 'close', 'Cookie': cookie, 'User-Agent': 'okhttp/3.2.0', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'} body = {"orderId": order['jd_order_id']} sign = auth.sign('queryPczOrderInfo', uuid, json.dumps(body)) url = 'http://api.m.jd.com/client.action?functionId=queryPczOrderInfo&clientVersion=5.8.0&build=42523&client=android&screen=1920*1080&partner=waps007&uuid=%s&area=1_0_0_0&networkType=wifi&st=%s&sign=%s&sv=122' % ( uuid, sign[1], sign[0]) body = 'body=' + urllib.quote_plus(json.dumps(body)) + '&' while True: resp = requests.post(url, data=body, headers=headers) ret = resp.json() logger.debug('get jd response:%s' % resp.text, order['trade_no'], 'sync_status_from_jd') # print ret jd_order_status = ret['rechargeOrder']['orderStatusName'] logger.info(jd_order_status, order['trade_no'], 'sync_status_from_jd') if jd_order_status == u'充值成功': logger.info('send to queue order_platform:phone_charge:order_success', order['trade_no'], 'sync_status_from_jd') order['order_sync_jd_status_time'] = order_sync_jd_status_time r.lpush('order_platform:phone_charge:order_success', json.dumps(order)) break elif jd_order_status == u'等待付款' or u'充值失败' in jd_order_status: logger.info( 'lpush %s to queue order_platform:phone_charge:order_faild' % order['trade_no'], order['trade_no'], 'sync_status_from_jd') r.lpush('order_platform:phone_charge:order_faild', json.dumps( {'trade_no': order['trade_no'], 'order_faild_time': order_sync_jd_status_time})) break else: pay_callback_time = int( time.mktime(time.strptime(order['pay_callback_time'], '%Y-%m-%d %H:%M:%S'))) t = int(time.time()) if t - pay_callback_time < 15 * 60: retry += 1 if retry < 2: time.sleep(5) # time.sleep(2) continue else: logger.info( 'timeout,lpush %s to queue order_platform:phone_charge:order_pay_success' % order['trade_no'], order['trade_no'], 'sync_status_from_jd') r.lpush('order_platform:phone_charge:order_pay_success', order['trade_no']) break else: logger.info('charge timeout and need customer service verifies,set status', order['trade_no'], 'sync_status_from_jd') resp = requests.post(base_data.ORDER_SETSTATUS_API_POST, data={'order_id': order['trade_no'], 'status': '超时待人工核实'}) logger.info(resp.text, order['trade_no'], 'sync_status_from_jd') break else: logger.error('cant find order %s' % id, program='sync_status_from_jd') else: continue except Exception, e: logger.error(e.message, program='sync_status_from_jd') time.sleep(5) continue
def phone_charge(): pool = redis.ConnectionPool(host='139.199.65.115', port=6379, db=0, password='******') r = redis.Redis(connection_pool=pool) while True: order_id = 0 success = 0 try: print 'redis brpop' result = r.brpop('order_platform:phone_charge:order', 5) if result: trade_no = result[1] logger.info('get trade no:%s' % trade_no) data = r.hgetall('order_platform:phone_charge:trade_no:%s' % trade_no) logger.info('get trade data:%s' % data) data['partner'] = json.loads(data['partner']) if not data: # trade data loss save_order({'trade_no': trade_no, 'status': u'数据丢失'}) logger.error('trade_no %s data loss' % trade_no) continue else: continue except Exception, e: logger.error(e.message) time.sleep(5) continue data['order_handler_time'] = str(datetime.datetime.now()) data['status'] = '正在下单' data['partner_price'] = '' data['callback_status'] = '' if data.has_key('order_id'): order_id = data['order_id'] else: order_id = save_order(data) uuid = base_data.get_random_number() + '-' + base_data.get_random_letter_number(12).lower() # data = {'mobile':'15763563256','parterner_id':'123654','amount':100,callback:''} mobile = des_encryption(data['mobile']) account = get_account(uuid) if not account: r.set('order_platform:switch:order_accpet', 0) data['status'] = '下单失败' data['err'] = '账号不足' callback_partner_and_save_order(data, 0, order_id) continue data['account'] = account pc_cookie = account['pc_cookie'] try: headers = { 'Charset': 'UTF-8', 'jdc-backup': account['cookie'], 'Connection': 'close', 'Cookie': account['cookie'], 'User-Agent': 'Dalvik/1.6.0 (Linux; U; Android 4.4.2; Nexus Build/KOT49H)', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'} body = {"mobile": mobile} sign = auth.sign('searchPczPriceList', uuid, json.dumps(body)) url = 'http://api.m.jd.com/client.action?functionId=searchPczPriceList&clientVersion=5.8.0&build=42523&client=android&d_brand=nubia&screen=1920*1080&partner=waps007&uuid=%s&area=1_0_0_0&networkType=wifi&st=%s&sign=%s&sv=122' % ( uuid, sign[1], sign[0]) logger.info('get jd price') resp = requests.post(url, data='body=' + urllib.quote_plus(json.dumps(body)) + '&', headers=headers) resp = resp.json() data['providerName'] = resp['providerName'] data['areaName'] = resp['areaName'] data['partner_price'] = data['partner']['price'][resp['providerName']] # if data['providerName'] == u'移动': # data['partner_price'] = 98 # elif data['providerName'] == u'联通': # data['partner_price'] = 98 # else: # data['partner_price'] = 97 sku = filter(lambda s: s['facePrice'] == str(data['amount']), resp['skuList']) if len(sku) == 0: data['status'] = '数据丢失' callback_partner_and_save_order(data, 0, order_id) continue logger.info('get compon') sign = auth.sign('queryPczFavourableInfo', uuid, json.dumps(body)) url = 'http://api.m.jd.com/client.action?functionId=queryPczFavourableInfo&clientVersion=5.8.0&build=42523&client=android&d_brand=nubia&screen=1920*1080&partner=waps007&uuid=%s&area=1_0_0_0&networkType=wifi&st=%s&sign=%s&sv=122' % ( uuid, sign[1], sign[0]) resp = requests.post(url, data='body=' + urllib.quote_plus(json.dumps(body)) + '&', headers=headers) resp = resp.json() logger.debug(resp) if len(resp['dxqInfos']) > 0: data['discount'] = resp['dxqInfos'][0]['discount'] # 优惠金额 data['dxqids'] = resp['dxqInfos'][0]['id'] else: data['status'] = '没有优惠券' while True: try: logger.error('account compon not found,send to server') account['valid_message'] = '没有优惠券' account['valid'] = 0 resp = requests.post(base_data.JD_ACCOUNT_API_POST, json=account) logger.info('resp:%s' % resp.text) if resp.text == '1': logger.info('success') break else: time.sleep(60) continue except Exception, e: time.sleep(60) continue callback_partner_and_save_order(data, 0, order_id) continue data['jd_price'] = float(sku[0]['jdPrice']) / 100 - data['discount'] body = {"dxqids": data['dxqids'], "facePrice": data['amount'], "isBingding": "0", "isNote": "0", "jdPrice": str(data['jd_price']), "payType": "10", "type": "1", "contact": "false", "mobile": mobile} # data['jd_price'] = float(sku[0]['jdPrice']) / 100 # # "dxqids": "7929697981", # body = {"facePrice": data['amount'], "isBingding": "0", "isNote": "0", # "jdPrice": str(data['jd_price']), # "payType": "0", "type": "1", "contact": "false", "mobile": mobile} sign = auth.sign('submitPczOrder', uuid, json.dumps(body)) url = 'http://api.m.jd.com/client.action?functionId=submitPczOrder&client=android&clientVersion=5.8.0&build=42523&osVersion=4.4.2&screen=1280*720&partner=tencent&uuid=%s&area=1_0_0_0&networkType=wifi&st=%s&sign=%s&sv=122' % ( uuid, sign[1], sign[0]) body = 'body=' + urllib.quote_plus(json.dumps(body)) + '&' logger.debug('POST %s\n%s' % (url, body)) resp = requests.post(url, data=body, headers=headers) ret = resp.json() logger.debug(resp.text) if ret.has_key('orderId'): data['jd_order_id'] = ret['orderId'] data['money'] = ret['money'] data['status'] = u'下单成功' success = 1 logger.info('%s charge success,callback' % data['mobile']) else: data['status'] = u'下单失败' logger.error('%s charge faild\n%s' % (data['mobile'], traceback.format_exc()))
currentHour = int(time.strftime('%H', time.localtime(time.time()))) if currentHour > 22 or currentHour < 7: print 'sleep one hour' sleep(3600) continue try: logger.info('-----------------------') logger.info('get train data from %s' % base_data.get_train_order) req = requests.get(base_data.get_train_order) resp = '' try: resp = req.json() except Exception, e: print req.text logger.error('get train data error') sleep(5) continue logger.debug('response:%s' % resp) partner_order_id = resp['order_id'] while True: logger.info('save train data') resp['pay_channel'] = base_data.payChannel resp['target'] = 'tn' req = requests.post(base_data.save_order, data=json.dumps(resp), headers={'Content-Type': 'application/json'}) order_id = req.text
def place_order(self, data, partner_order_id, coupons): if coupons: if not self.__lookup_coupon(data): for id in coupons: self.get_coupon(id) self.__lookup_coupon(data) logger.info('READY:%s' % data) resp = http_handler.train_order.add_order(self.account['sessionid'], self.partner, self.cc, data) logger.debug('add order response:%s' % resp) if resp['success']: termId = str(uuid.uuid1()) pay_data = { 'bizOrderId': resp['data']['orderId'], 'price': data['price'] } logger.info('add order success.id:%s.submiting...' % pay_data['bizOrderId']) resp = http_handler.pay.submit({ 'userId': self.account['userid'], 'orderId': pay_data['bizOrderId'], 'price': pay_data['price'], 'sessionId': self.account['sessionid'], 'termId': termId }) logger.debug('order submit response:%s' % resp) if resp['success']: pay_data['partner_order_id'] = partner_order_id pay_data['tuniu_orderId'] = resp['data']['orderId'] pay_data['price'] = resp['data']['remainAmount'] pay_data['account'] = self.account pay_data['timeout'] = str(datetime.datetime.now() + datetime.timedelta(minutes=25)) 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.0; 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;' % ( str(time.time()).replace( '.', ''), base_data.get_random_number(), self.account['userid'], self.account['sessionid'], base64.b64encode(base_data.get_random_letter_number()), self.account['sessionid']) logger.info( 'order submit success,payid:%s,price:%s,confirming...' % (pay_data['tuniu_orderId'], pay_data['price'])) # --回调优惠券金额 headers = { 'content-type': 'application/json; charset=UTF-8', 'User-Agent': 'TuNiuApp/9.0.6/Dalvik/1.6.0 (Linux; U; Android 4.2.2)', 'cookie': cookie } req = requests.get( 'http://m.tuniu.com/userOrder/trainTicketOrderDetailAjax?data=%7B%22orderId%22%3A%22' + str(pay_data['bizOrderId']) + '%22%2C%22orderType%22%3A%2238%22%7D', headers=headers) resp = req.json() logger.debug('get order deails response:%s' % resp) logger.info('callback promotionPrice') if resp['success']: req = requests.get( 'http://op.yikao666.cn/JDTrainOpen/CallBackForTN?' 'order_id=%s&success=true&amount=%s&coupon_price=%s' % (pay_data['partner_order_id'], pay_data['price'], resp['data']['promotionPrice'])) logger.info('callback promotionPrice:%s' % req.text) else: logger.error('get order details faild') # 回调优惠券金额-- if base_data.payChannel == 8: pay_data['cookie'] = cookie return pay_data else: resp = http_handler.pay.confirm({ 'userId': self.account['userid'], 'orderId': pay_data['tuniu_orderId'], 'price': pay_data['price'], 'sessionId': self.account['sessionid'], 'termId': termId }) logger.debug('order confirm response:%s' % resp) if resp['success']: pay_data['finalOrderId'] = resp['data']['finalOrderId'] pay_data['url'] = resp['data']['url'] logger.info( 'order confirm success.alipay url:%s\nupload data' % pay_data['url']) return pay_data else: err = 'order confirm faild' logger.error(err) raise ValueError(err) else: err = 'order submit faild' logger.error(err) raise ValueError(err) else: err = 'add order faild' logger.error(err) raise ValueError(err)