var NoComplete = { token: '', bankId: '', payLoading: null, curNo: '', init: function() { if ($('#no_complete_page').length == 0) { return false; } Public.checkLogin(NoComplete.getOrder); NoComplete.getToken(); $('[data-no]').live('click', function() { NoComplete.curNo = $(this).attr('data-no'); NoComplete.selectBank(); }); $('[data-fn="close_bank"]').live('click', function() { Public.hideInnerPage(); }); $('#banks [data-bank]').live('click', function() { NoComplete.bankId = $(this).attr('data-bank'); NoComplete.payLoading = Public.showLoading('正在加载'); NoComplete.pay(); }); }, getOrder: function() { // Referer: https://dynamic.12306.cn/otsweb/loginAction.do?method=init bootStrap.get("queryOrder/queryMyOrderNoComplete", "json", null, "queryOrder/initNoComplete").done(function(json) { if (!!json['status'] && !!json['data'] && !!json['data']['orderDBList'] && json['data']['orderDBList'].length > 0) { NoComplete.setHtml(json['data']['orderDBList']); } }).fail(function(xhr, type) { console.log(xhr, type); }); }, getToken: function() { bootStrap.post('queryOrder/initNoComplete', 'html', null, "payOrder/init").done(function(json) { var token = json.match(/\S+\s+globalRepeatSubmitToken\s+=\s+\S+/)[0]; eval(json.match(/\S+\s+globalRepeatSubmitToken\s+=\s+\S+/)[0]); if (globalRepeatSubmitToken) { NoComplete.token = globalRepeatSubmitToken; } }).fail(function() { Public.alert("12306不给力啊,唉。出现网络错误了,请重试.."); }); }, setHtml: function(list) { var html = "", payLimitTime = 0; console.log(list); for (var i = 0, len = list.length; i < len; i++) { html += '
' + list[i]['tickets'][j]['passengerDTO']['passenger_name'] + // ' ' + list[i]['tickets'][j]['ticket_type_name'] + // ' ' + list[i]['tickets'][j]['seat_type_name'] + // ' ' + list[i]['tickets'][j]['seat_name'] + // ' ' + list[i]['tickets'][j]['str_ticket_price_page'] + '
'; // html += '' }; html += '席位已成功锁定,请您在内进行网上支付,否则席位将自动释放给其他旅客。
'; html += '订单日期:' + list[i]['order_date'] + '
'; // html += '发车时间:' + list[i]['start_train_date_page'] + '
'; // html += '车次:' + list[i]['train_code_page'] + '
'; // html += '发到站:' + list[i]['from_station_name_page'][0] + ' dao ' + list[i]['to_station_name_page'][0] + '
'; // html += '金额:' + list[i]['ticket_total_price_page'] + '
'; // for (var j = 0; j < list[i]['tickets'].length; j++) { // html += '' + list[i]['tickets'][j]['passengerDTO']['passenger_name'] + // ' ' + list[i]['tickets'][j]['ticket_type_name'] + // ' ' + list[i]['tickets'][j]['seat_type_name'] + // ' ' + list[i]['tickets'][j]['seat_name'] + // ' ' + list[i]['tickets'][j]['str_ticket_price_page'] + '
'; // html += '' // }; }; $('#orders').html(html); NoComplete.countdown(); }, countdown: function() { $('[data-limittime]').each(function(idx, el) { var $this = $(el), order = $this.attr('data-orderno'), time = (new Date(parseInt($this.attr('data-limittime')))).getTime() - (new Date()).getTime(); if (time > 2700000) { $this.closest('p').html('订单已过期'); $('[data-no="' + order + '"').html('订单已过期').addClass('btn_gray'); } else { $this.html(NoComplete.gm(time)); } }); setTimeout(NoComplete.countdown, 1000); }, gm: function(n) { var m = parseInt(n / 60000), s = parseInt(n % 60000 / 1000); if (m < 10) { m = '0' + m; } if (s < 10) { s = '0' + s; } return m + ':' + s; }, selectBank: function() { // $('#banks').show(); Public.showInnerPage('banks'); }, pay: function(no, type) { var data = { "sequence_no": NoComplete.curNo, "pay_flag": 'pay', "_json_att": "", "REPEAT_SUBMIT_TOKEN": NoComplete.token } $('span', NoComplete.payLoading).html('正在获取支付信息'); bootStrap.post('queryOrder/continuePayNoCompleteMyOrder', 'json', data, "queryOrder/initNoComplete").done(function(response) { if (response.status) { if (response.data.existError == "Y") { Public.alert(response.data.errorMsg); } else { bootStrap.post('payOrder/paycheck', 'json', { "_json_att": "" }, "payOrder/init").done(function(json) { NoComplete.submitPay(json['data']['payForm']); }).fail(function() { Public.alert("12306不给力啊,唉。出现网络错误了,请重试.."); }); } } }).fail(function() { Public.alert("12306不给力啊,唉。出现网络错误了,请重试.."); }); }, analyzeFormData: function(text) { var data = {}; var reg = //g; var m = null; while ((m = reg.exec(text)) != null) { if (m[1] == "name") data[m[2]] = m[4]; else data[m[4]] = m[2]; } return data; }, submitPay: function(formdata) { var data = { "_json_att": '', "interfaceName": formdata['interfaceName'], "interfaceVersion": formdata['interfaceVersion'], "tranData": formdata["tranData"], "merSignMsg": formdata["merSignMsg"], "appId": formdata['appId'], "transType": formdata['transType'] } $('span', NoComplete.payLoading).html('正在提交支付请求'); bootStrap.post('https://epay.12306.cn/pay/payGateway', 'html', data, "payOrder/init").done(function(html) { var data = NoComplete.analyzeFormData(html); data.bankId = NoComplete.bankId; bootStrap.post('https://epay.12306.cn/pay/webBusiness', 'html', data, "https://epay.12306.cn/pay/payGateway").done(function(result) { var formdata = NoComplete.analyzeFormData(result); var htmlbank = result.replace(/[\n\t\r]/gi, '').replace(/>\s+<').match(/