{#
Copyright (c) 2018 VeriTrans Inc., a Digital Garage company. All rights reserved.
http://www.veritrans.co.jp/
#}
<script src= "{{ asset(tokenJsPath, 'plugin') }} "></script>
<script>
// 名前空間を設定
window.VeriTrans4G = window.VeriTrans4G || {};
VeriTrans4G.isProcessing = false;
// 支払方法のバリデーション
VeriTrans4G.validateOneClickPaymentType = function(formKey) {
var paymentTypeSelect = document.querySelector('select[name="'+formKey+'[payment_type]"]');
VeriTrans4G.hideErrorMessage(paymentTypeSelect);
return VeriTrans4G.validateNotBlank('payment_type', 'お支払い方法', null, formKey);
}
// カード名義人名のバリデーションチェック
VeriTrans4G.validateOneClickCardName = function(formKey) {
var nameKey = 'card_name';
var name = 'カード名義人名';
var cardNameSelect = document.querySelector('input[name="'+formKey+'['+nameKey+']"]');
//本人認証無しの場合は入力フォームが存在しないので、処理を終了する。
if(cardNameSelect == undefined){
return true;
}
var minLength = cardNameSelect.getAttribute('minlength');
var maxLength = cardNameSelect.getAttribute('maxlength');
VeriTrans4G.hideErrorMessage(cardNameSelect);
return VeriTrans4G.validateNotBlank(nameKey, name, null, formKey) &&
VeriTrans4G.validateRegex(nameKey, name, '[^a-zA-Z ]', '※ '+name+'は半角英字(半角スペースのみ許可)で入力してください', formKey) &&
VeriTrans4G.validateRange(nameKey, name, minLength, maxLength, formKey);
}
VeriTrans4G.setSubmit = function(e, targetId) {
e.preventDefault();
var elm = e.currentTarget;
var form = $(elm).parents('form');
if (VeriTrans4G.isProcessing) {
alert('只今、処理中です。しばらくお待ちください。');
return false;
}
VeriTrans4G.isProcessing = false;
switch (targetId) {
case 'vt4g-credit':
VeriTrans4G.fetchMdkToken(e, form, "{{ useRecaptcha }}", "{{ recaptchaSiteKey }}");
return true;
case 'vt4g-credit-account':
case 'vt4g-credit-retrade':
var formKey = {
'vt4g-credit-account': 'payment_credit_account',
'vt4g-credit-retrade': 'payment_credit_one_click'
}[targetId];
var isValid = true;
if (!VeriTrans4G.validateOneClickPaymentType(formKey)) {
isValid = false;
}
if (!VeriTrans4G.validateOneClickCardName(formKey)) {
isValid = false;
}
if(!isValid){
document.getElementById(targetId).scrollIntoView({
behavior: "smooth",
block: "start",
inline: "start"
});
e.stopPropagation();
loadingOverlay("hide");
return false;
}
break;
default:
break;
}
VeriTrans4G.executeSubmit(form);
return true;
}
// カード登録情報にカード名義人名が登録済みかどうかを確認し、使用するカード情報をセットする。
VeriTrans4G.changeUseCardInfo = function() {
$('input[name="payment_order_id"], input[name="card_id"]').change(function(){
//カード番号
var cardNumber = $('input[name="payment_order_id"]:checked').parents('tr').find('input[name="registered_mask_card_number"]').val();
if(cardNumber !== undefined){
$('#retrade_mask_card_number').val(cardNumber)
}
var cardNumber = $('input[name="card_id"]:checked').parents('tr').find('input[name="registered_mask_card_number"]').val();
if(cardNumber !== undefined){
$('#account_mask_card_number').val(cardNumber)
}
//カード名義人名
var cardName = $('input[name="payment_order_id"]:checked').parents('tr').find('.registered_card_name').val();
if(cardName !== undefined){
cardName.length == 0 ? $('#payment_credit_one_click_card_name').parents('dl').show() : $('#payment_credit_one_click_card_name').parents('dl').hide();
$('#payment_credit_one_click_card_name').val(cardName)
}
var cardName = $('input[name="card_id"]:checked').parents('tr').find('.registered_card_name').val();
if(cardName !== undefined){
cardName.length == 0 ? $('#payment_credit_account_card_name').parents('dl').show() : $('#payment_credit_account_card_name').parents('dl').hide();
$('#payment_credit_account_card_name').val(cardName)
}
});
$('input[name="payment_order_id"], input[name="card_id"]').trigger('change');
}
// アコーディオン開閉時の処理
VeriTrans4G.moveAccordion = function() {
//初期表示の時に表示内容やエラーに応じてアコーディオンを一つ開く
var vt4gCredit = '';
var scrollPosition = '';
var formErrorCount = "{{ form.vars.errors.form.getErrors(true) | length }}"
if($('#vt4g-credit-account').length > 0 && formErrorCount === "0"){
vt4gCredit = $('#vt4g-credit-account');
formErrorCount = "{{ accountForm.vars.errors.form.getErrors(true) | length }}"
scrollPosition = document.getElementById('vt4g-credit-account');
} else if($('#vt4g-credit-retrade').length > 0 && formErrorCount === "0"){
vt4gCredit = $('#vt4g-credit-retrade');
formErrorCount = "{{ oneClickForm.vars.errors.form.getErrors(true) | length }}"
scrollPosition = document.getElementById('vt4g-credit-retrade');
} else {
vt4gCredit = $('#vt4g-credit');
scrollPosition = document.getElementById('vt4g-credit');
}
$.when(
$('.accordion_inner').hide(),
$('.accordion_inner').find('input').prop('disabled', true),
$('.accordion_inner').find('select').prop('disabled', true),
vt4gCredit.find('.accordion_inner').slideToggle(),
vt4gCredit.find('.change-class').toggleClass('plus-dark-icon'),
vt4gCredit.find('.change-class').toggleClass('minus-dark-icon'),
vt4gCredit.find('input').prop('disabled', false),
vt4gCredit.find('select').prop('disabled', false),
).done(function(){
if(formErrorCount != "0"){
scrollPosition.scrollIntoView({
behavior: "smooth",
block: "start",
inline: "start"
});
}
});
//アコーディオンが1個のみ場合は開閉する必要がないため処理を終了する
if ($('.vt4g_toggle_title').length === 1) {
$('.vt4g_toggle_btn').remove();
return;
}
//アコーディオン押下時の開閉イベント
$(document).on('click', '.vt4g_toggle_title', function(){
$.when(
$('.accordion_inner').toggle('normal'),
$('.change-class').toggleClass('plus-dark-icon'),
$('.change-class').toggleClass('minus-dark-icon'),
//一度全ての選択項目を非表示とする
$('.accordion_inner').find('input').prop('disabled', true),
$('.accordion_inner').find('select').prop('disabled', true),
).done(function(){
//指定されたアコーディオンの選択項目を表示する
$('.accordion_inner:visible').find('input').prop('disabled', false),
$('.accordion_inner:visible').find('select').prop('disabled', false);
});
});
}
$(function() {
VeriTrans4G.changeUseCardInfo();
VeriTrans4G.moveAccordion();
VeriTrans4G.tokenApiUrl = "{{ tokenApiUrl }}";
VeriTrans4G.tokenApiKey = "{{ tokenApiKey }}";
{% if paymentInfo.security_flg is defined %}
VeriTrans4G.securityFlg = !!{{ paymentInfo.security_flg }};
{% else %}
VeriTrans4G.securityFlg = true;
{% endif %}
})
</script>