Light12306/Mobile12306New/js/no_complete.js

214 lines
8.4 KiB
JavaScript
Raw Normal View History

2014-09-01 13:50:43 +08:00
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;
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));
$('.pay_tip_info .text_warning').html(NoComplete.gm(time));
2014-09-01 13:50:43 +08:00
}
});
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不给力啊唉。出现网络错误了请重试..");
});
}
}