Light12306/Mobile12306New/js/no_complete.js
2014-09-01 13:50:43 +08:00

215 lines
8.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 += '<div class="orders_title">订单号:' + list[i]['sequence_no'] + '</div>';
html += '<div class="order_tickets">';
payLimitTime = new Date(list[i]['tickets'][0]['pay_limit_time'].replace(/\-/gi,'/')).getTime();
for (var j = 0; j < list[i]['tickets'].length; j++) {
html += '<div class="ticket">';
html += '<div class="ticket_title"><span class="pull_right">K2341</span>' + (new Date(list[i]['start_train_date_page'].replace(/\-/gi, '/'))).format('yyyy-M-d') + ' ' + (new Date(list[i]['start_train_date_page'].replace(/\-/gi, '/'))).day(3) + '</div>';
html += '<div class="stations_info">';
html += '<div class="station_info"><strong>' + list[i]['from_station_name_page'][0] + '</strong>' + list[i]['start_time_page'] + '</div>';
html += '<div class="station_info"><strong>' + list[i]['to_station_name_page'][0] + '</strong>' + list[i]['arrive_time_page'] + '</div>';
html += '</div>';
html += '<div class="ticket_passenger">';
html += '<strong class="text_lg">' + list[i]['tickets'][j]['passengerDTO']['passenger_name'] + '</strong>';
html += '<span class="text_gray">' + list[i]['tickets'][j]['passengerDTO']['passenger_id_no'] + '</span>';
html += '</div>';
html += '<div class="ticket_info"><span class="pull_right">' + list[i]['tickets'][j]['str_ticket_price_page'] + '元</span>';
html += list[i]['tickets'][j]['ticket_type_name'];
html += ' ' + list[i]['tickets'][j]['seat_type_name'];
html += ' ' + list[i]['tickets'][j]['coach_name'] + '车';
html += list[i]['tickets'][j]['seat_name'];
html += '</div>';
html += '</div>';
// html += '<p>' + 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'] + '</p>';
// html += '<p><a href="javascript:;" data-no="' + list[i]['sequence_no'] + '">支付</a></p>'
};
html += '</div>';
html += '<div class="order_pay_info">';
html += '<p>席位已成功锁定,请您在<strong class="pay_time" data-limittime="' + payLimitTime + '" data-orderno="' + list[i]['sequence_no'] + '"></strong>内进行网上支付,否则席位将自动释放给其他旅客。</p>';
html += '<div class="pay_info clearfix"><a href="javascript:;" class="btn btn_success pull_right" data-no="' + list[i]['sequence_no'] + '">立即支付</a><span class="pay_money">' + list[i]['ticket_total_price_page'] + '元</span></div>'
html += '</div>';
// html += '<p>订单日期:' + list[i]['order_date'] + '</p>';
// html += '<p>发车时间:' + list[i]['start_train_date_page'] + '</p>';
// html += '<p>车次:' + list[i]['train_code_page'] + '</p>';
// html += '<p>发到站:' + list[i]['from_station_name_page'][0] + ' dao ' + list[i]['to_station_name_page'][0] + '</p>';
// html += '<p>金额:' + list[i]['ticket_total_price_page'] + '</p>';
// for (var j = 0; j < list[i]['tickets'].length; j++) {
// html += '<p>' + 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'] + '</p>';
// html += '<p><a href="javascript:;" data-no="' + list[i]['sequence_no'] + '">支付</a></p>'
// };
};
$('#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 = /<input[\s\w\W]*?(name|value)="([\s\w\W]*?)"[\s\w\W]*?(name|value)=['"]([\s\w\W]*?)['"][\s\w\W]*?\/?>/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+</gi, '><').match(/<form.*\/form>/gi);
if (htmlbank.length > 0) {
$('span', NoComplete.payLoading).html('正在向银行提交支付请求');
$('#hideHtml').html(htmlbank[0]);
setTimeout(function() {
$('form[name="myform"]').submit();
}, 1000);
}
}).fail(function() {
});
}).fail(function() {
Public.alert("12306不给力啊唉。出现网络错误了请重试..");
});
}
}