Pager.prototype.goJBS0090 = function(params) {
var self = this;
indicator.on();
self.execApi('/SJB_UII_JBS0090.json', params, function(response) {
self.pageInfo = response.pageInfo;
self.getHtml('JBS0090.html', function() {
$('#goJBS0100').click(function() {
// 20180112 修正 START
// 入力チェック1
if (inputJBS0090Check1() == false) {
// チェック不正あり。
return;
}
// 入力チェック2
var errorMessageList = inputJBS0090Check2();
if (errorMessageList.length > 0) {
// チェック不正あり。エラーメッセージを出力する。
setErrorMessage(errorMessageList);
self.scrollTo();
alert('画面上部のエラーメッセージをご覧いただき、入力内容を確認ください。');
return;
}
// 入力内容の確認ダイアログ表示
var result = window.confirm(Messages.get(
'SPMSG009001', [
$('#KYK_NAME_KANJI').text(),
maskCardNumber('*', 0, 4, $('#CARD_NO1').val(), $('#CARD_NO2').val(), $('#CARD_NO3').val(), $('#CARD_NO4').val()),
$('#CARD_YUKO_DATE_MM option:selected').val(),
$('#CARD_YUKO_DATE_YY option:selected').val(),
$('#SECURITY_CD').val().replace(/./g, '*')
]));
if (result == false) {
// ユーザーがキャンセルを選択
return;
}
try {
// SBPS決済用トークン取得
indicator.on();
com_sbps_system.generateToken({
merchantId : self.pageInfo.elm_SBPS_MERCHANT_ID, // マーチャントID
serviceId : self.pageInfo.elm_SBPS_SERVICE_ID, // サービスID
ccNumber : $('#CARD_NO1').val() + $('#CARD_NO2').val() + $('#CARD_NO3').val() + $('#CARD_NO4').val(), // カード番号
ccExpiration : $('#CARD_YUKO_DATE_YY').val() + $('#CARD_YUKO_DATE_MM').val(), // カード有効期限
securityCode : $('#SECURITY_CD').val() // セキュリティコード
},
function(response) {
self.afterGenerateToken(response);
}
);
} catch (e) {
console.log(e);
self.afterGenerateToken({result : 'NG'});
}
indicator.off();
// 20180112 修正 END
return false;
});
var count = 3;
// 「カード有効期限 年」リスト作成select
commonApi.get('/NET_UII_ListItem.json', {List_ITEM: 'CARD_YUKO_DATE_YY'}, function(response) {
var optlist = response.listInfo;
$.each(optlist,function(index, elem) {
$('#CARD_YUKO_DATE_YY').append($('').attr('value', elem.code).text(elem.name));
});
if (--count == 0) {
self.setJBS0090DefaultParams(self.pageInfo);
indicator.off();
}
});
// 「カード有効期限 月」リスト作成select
commonApi.get('/NET_UII_ListItem.json', {List_ITEM: 'CARD_YUKO_DATE_MM'}, function(response) {
var optlist = response.listInfo;
$.each(optlist,function(index, elem) {
$('#CARD_YUKO_DATE_MM').append($('').attr('value', elem.code).text(elem.name));
});
if (--count == 0) {
self.setJBS0090DefaultParams(self.pageInfo);
indicator.off();
}
});
// 20180112 追加 START
// 使用可能なカード会社のロゴイメージ取得・設定
commonApi.get('/NET_UII_CreditCardCompanyInfo.json', {}, function(response) {
var listInfo = response.listInfo;
var target = $('#creditCardImagesPC');
listInfo.forEach(function(elem) {
if("" != elem.imageFileName && null != elem.imageFileName){
if ("901" == elem.code){
target.append($(' ').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("902" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("102" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("101" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("209" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("103" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
}
}
});
var target = $('#creditCardImagesSP');
listInfo.forEach(function(elem) {
if("" != elem.imageFileName && null != elem.imageFileName){
if ("901" == elem.code){
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("902" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("102" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("101" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("209" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
} else if ("103" == elem.code) {
target.append($('
').attr({src: 'images/common/'+elem.imageFileName + '_sp.gif', alt: elem.name}).addClass("mr10"));
}
}
});
if (--count == 0) {
self.setJBS0090DefaultParams(self.pageInfo);
indicator.off();
}
});
// 20180112 追加 END
});
});
};
Pager.prototype.setJBS0090DefaultParams = function(pageInfo) {
$('#TOTAL_HKN_RYO').text(pageInfo.elm_TOTAL_HKN_RYO);
$('#KYK_NAME_KANJI').text(pageInfo.elm_KYK_NAME_KANJI);
$('#CARD_YUKO_DATE_MM').val([pageInfo.elm_CARD_YUKO_DATE_MM]);
$('#CARD_YUKO_DATE_YY').val([pageInfo.elm_CARD_YUKO_DATE_YY]);
$('input[name=CARD_SYURUI_CHECK]').val([pageInfo.elm_CARD_SYURUI_CHECK]);
$('input[name=CARD_NAME_CHECK]').val([pageInfo.elm_CARD_NAME_CHECK]);
//2016/05/18
var senimotoFlg = pageInfo.senimotoFlg;
if(senimotoFlg == 2){
$('#g1').text("6.事前申込手続きとクレジットカード情報の入力");
$('#g2_1').hide();
$('#g2_2').hide();
$('#g3').text("「事前申込み」ボタンをクリックし、「事前申込手続きの完了」画面が表示されると、事前申込が成立します。");
$('#g4').hide();
$('#g5').hide();
$('#g6').hide();
$('#g7').hide();
$("#IP1").hide();
$("#JZ1").show();
}else{
$('#g1').text("6.ご契約申込と保険料のお支払い");
$('#g3').text("「お申込み」ボタンをクリックし、「契約引受通知書画面」が表示されると、保険契約は成立します。");
$('#j1').hide();
}
// ADD タイトル設定 20160912 START
$("#TT").text("お申込み2 / 自賠責保険〜原付・250cc以下バイク用〜[自動車損害賠償責任保険]");
// ADD タイトル設定 20160912 END
// 20180112 追加 START
// SBPSトークン連携スクリプトをロードする
var script = document.createElement('script');
script.src = pageInfo.elm_SBPS_SCRIPT_URL;
document.body.appendChild(script);
// 20180112 追加 END
this.pageId = 'JBS0090';
};
//20180112 追加 START
Pager.prototype.afterGenerateToken = function(response) {
if (response.result == 'OK') {
// トークン取得成功
this.scrollTo();
this.goJBS0100({
"MODE" : "JBS0100_DISPLAY",
"CARD_YUKO_DATE_MM" : $('#CARD_YUKO_DATE_MM').val(),
"CARD_YUKO_DATE_YY" : $('#CARD_YUKO_DATE_YY').val(),
"CARD_SYURUI_CHECK" : $('input[name=CARD_SYURUI_CHECK]:checked').val(),
"CARD_NAME_CHECK" : $('input[name=CARD_NAME_CHECK]:checked').val(),
"MASKED_CARD_NO" : maskCardNumber('@', 6, 4, $('#CARD_NO1').val(), $('#CARD_NO2').val(), $('#CARD_NO3').val(), $('#CARD_NO4').val()).replace(/[-]+/g, ''),
"SBPS_TOKEN" : response.tokenResponse.token,
"SBPS_TOKEN_KEY" : response.tokenResponse.tokenKey
});
} else {
// トークン取得失敗
alert('誠に申し訳ありませんが、クレジットカードエラーが発生したため、処理が継続できません。');
}
};
//20180112 追加 END
// 入力チェック1
//【戻り値】
// true :チェックOK
// false:チェックNG
function inputJBS0090Check1(){
// 入力値を取得
var cardSyuruiRadio = $('input[name="CARD_SYURUI_CHECK"]:checked').val(); // カード種類確認
var cardNameRadio = $('input[name=CARD_NAME_CHECK]:checked').val(); // カード名義確認
/*
* 「カード種類確認」チェック
*/
if ("1" == cardSyuruiRadio) {
// 「いいえ」が選択されている
alert(Messages.get('SPMSG009004'));
return false;
}
if ("" == cardSyuruiRadio || cardSyuruiRadio == null) {
// 未選択
alert(Messages.get('SPMSG009005'));
return false;
}
/*
* 「カード名義確認」チェック
*/
if ("1" == cardNameRadio) {
// 「いいえ」が選択されている
alert(Messages.get('SPMSG009002'));
return false;
}
if ("" == cardNameRadio || cardNameRadio == null) {
// 未選択
alert(Messages.get('SPMSG009003'));
return false;
}
return true;
}
// 入力チェック2
//【戻り値】
// errorMessageList チェックエラーメッセージのリスト
// ※チェック成功時は空
function inputJBS0090Check2(){
// チェックエラーメッセージのリスト(本メソッドの戻り値)
var errorMessageList = new Array();
// 入力値を取得
var card1 = $('#CARD_NO1').val(); // カード番号1
var card2 = $('#CARD_NO2').val(); // カード番号2
var card3 = $('#CARD_NO3').val(); // カード番号3
var card4 = $('#CARD_NO4').val(); // カード番号4
var yer = $('#CARD_YUKO_DATE_YY').val(); // カード有効期限(年)
var mon = $('#CARD_YUKO_DATE_MM').val(); // カード有効期限(月)
var secu = $('#SECURITY_CD').val(); // セキュリティコード
/*
* 「カード番号」チェック
*/
CHECK_CARD_NO: {
if (card1.length == 0) {
// カード番号1が空白
errorMessageList.push(Messages.get('SPMSG009006', ['「カード番号」']));
break CHECK_CARD_NO;
}
if (card2.length == 0) {
// カード番号2が空白
errorMessageList.push(Messages.get('SPMSG009006', ['「カード番号」']));
break CHECK_CARD_NO;
}
if (card1.length != 4) {
// カード番号1が4桁以外
errorMessageList.push(Messages.get('SPMSG009006', ['「カード番号」']));
break CHECK_CARD_NO;
}
if (card2.length != 4) {
// カード番号2が4桁以外
errorMessageList.push(Messages.get('SPMSG009006', ['「カード番号」']));
break CHECK_CARD_NO;
}
if (checkHalfNumber(card1) == false) {
// カード番号1が半角数字以外
errorMessageList.push(Messages.get('SPMSG009006', ['「カード番号」']));
break CHECK_CARD_NO;
}
if (checkHalfNumber(card2) == false) {
// カード番号2が半角数字以外
errorMessageList.push(Messages.get('SPMSG009006', ['「カード番号」']));
break CHECK_CARD_NO;
}
if (checkHalfNumber(card3) == false) {
// カード番号3が半角数字以外
errorMessageList.push(Messages.get('SPMSG009006', ['「カード番号」']));
break CHECK_CARD_NO;
}
if (checkHalfNumber(card4) == false) {
// カード番号4が半角数字以外
errorMessageList.push(Messages.get('SPMSG009006', ['「カード番号」']));
break CHECK_CARD_NO;
}
}
/*
* 「カード有効期限」チェック
*/
CHECK_CARD_YUKO_DATE: {
// 現在のシステム日付を取得
var date = new Date();
var nowYear = date.getFullYear();
var nowMonth = (date.getMonth() + 1);
if ((yer.length == 0) || (mon.length == 0)) {
if (yer.length == 0) {
// カード有効期限(年)が空白
errorMessageList.push(Messages.get('SPMSG009010', ['「カード有効期限 年」']));
}
if (mon.length == 0) {
// カード有効期限(月)が空白
errorMessageList.push(Messages.get('SPMSG009010', ['「カード有効期限 月」']));
}
break CHECK_CARD_YUKO_DATE;
}
if ((checkHalfNumber(yer) == false) || (yer < nowYear) || (yer > (nowYear + 10))) {
// カード有効期限(年)が[システム年]~[システム年 + 10]の範囲外
errorMessageList.push(Messages.get('SPMSG009006', ['「カード有効期限」']));
break CHECK_CARD_YUKO_DATE;
}
if ((checkHalfNumber(mon) == false) || ((mon < 1) || (mon > 12))) {
// カード有効期限(月)が1~12の範囲外
errorMessageList.push(Messages.get('SPMSG009006', ['「カード有効期限」']));
break CHECK_CARD_YUKO_DATE;
}
if ((yer < nowYear) || ((yer == nowYear) && (mon < nowMonth))) {
// カード有効期限がシステム日付の年月より過去
errorMessageList.push(Messages.get('SPMSG009008'));
break CHECK_CARD_YUKO_DATE;
}
}
/*
* 「セキュリティコード」チェック
*/
CHECK_SECURITY_CD: {
if (secu.length == 0) {
// セキュリティコードが空白
errorMessageList.push(Messages.get('SJBAS101000', ['「セキュリティコード」']));
break CHECK_SECURITY_CD;
}
if ((secu.length != 3) && (secu.length != 4)) {
// セキュリティコードが3桁でも4桁でもない
errorMessageList.push(Messages.get('SPMSG009009'));
break CHECK_SECURITY_CD;
}
if (checkHalfNumber(secu) == false) {
// セキュリティコードが半角数字以外
errorMessageList.push(Messages.get('SJBAS101001', ['「セキュリティコード」']));
break CHECK_SECURITY_CD;
}
}
return errorMessageList;
}
//半角数値チェック
function checkHalfNumber(argValue){
var flag = true;
if(argValue.match(/[^0-9]+/)){
flag = false;
}
return flag;
}
// 20180112 追加 START
// カード番号の一部をにマスクする。マスク文字とマスク範囲は引数で指定する。
// 【引数】
// maskChar マスク文字
// unmaskDigitFirst マスクしない上N桁を指定する。
// unmaskDigitLast マスクしない下N桁を指定する。
// cardNo1 カード番号1
// cardNo2 カード番号2
// cardNo3 カード番号3
// cardNo4 カード番号4
// 【戻り値】
// マスク後のカード番号文字列
// ※カード番号1~4はセパレータ「-」で連結される。
function maskCardNumber(maskChar, unmaskDigitFirst, unmaskDigitLast, cardNo1, cardNo2, cardNo3, cardNo4) {
var separater = '-'; // セパレータ
var cardNo = cardNo1 + separater + cardNo2 + separater + cardNo3 + separater + cardNo4;
var maskStartIndex = 0;
var maskEndIndex = 0;
cardNo = cardNo.split('');
// マスク化を開始する位置を特定する
for (var i = 0, count = 0; i < cardNo.length; i++) {
if (cardNo[i] == separater) {
continue;
}
if (count < unmaskDigitFirst) {
count++;
continue;
}
maskStartIndex = i;
break;
}
// マスク化を終了する位置を特定する
for (var i = (cardNo.length - 1), count = 0; i >= 0; i--) {
if (cardNo[i] == separater) {
continue;
}
if (count < unmaskDigitLast) {
count++;
continue;
}
maskEndIndex = i;
break;
}
// マスク処理を実施する
for (var i = 0; i <= cardNo.length; i++) {
if (cardNo[i] == separater) {
// セパレーターなのでマスク化処理不要
} else if ((i < maskStartIndex) || (i > maskEndIndex)) {
// マスク対象範囲ではないのでマスク化処理不要
} else {
// マスク化
cardNo[i] = maskChar;
}
}
cardNo = cardNo.join('');
cardNo = cardNo.replace(/[-]+/g, '-'); // 文字列中の連続するセパレータを削除
cardNo = cardNo.replace(/[-]+$/g, ''); // 文字列末尾の連続するセパレータを削除
return cardNo;
}
function setErrorMessage(errorMessageList) {
var errorMessageTags = [];
errorMessageTags.push('