| Current Path : /home/rtorresani/www/vendor/magento/module-payment/view/frontend/web/js/view/payment/ |
| Current File : //home/rtorresani/www/vendor/magento/module-payment/view/frontend/web/js/view/payment/cc-form.js |
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
/* @api */
define([
'underscore',
'Magento_Checkout/js/view/payment/default',
'Magento_Payment/js/model/credit-card-validation/credit-card-data',
'Magento_Payment/js/model/credit-card-validation/credit-card-number-validator',
'mage/translate'
], function (_, Component, creditCardData, cardNumberValidator, $t) {
'use strict';
return Component.extend({
defaults: {
creditCardType: '',
creditCardExpYear: '',
creditCardExpMonth: '',
creditCardNumber: '',
creditCardSsStartMonth: '',
creditCardSsStartYear: '',
creditCardSsIssue: '',
creditCardVerificationNumber: '',
selectedCardType: null
},
/** @inheritdoc */
initObservable: function () {
this._super()
.observe([
'creditCardType',
'creditCardExpYear',
'creditCardExpMonth',
'creditCardNumber',
'creditCardVerificationNumber',
'creditCardSsStartMonth',
'creditCardSsStartYear',
'creditCardSsIssue',
'selectedCardType'
]);
return this;
},
/**
* Init component
*/
initialize: function () {
var self = this;
this._super();
//Set credit card number to credit card data object
this.creditCardNumber.subscribe(function (value) {
var result;
self.selectedCardType(null);
if (value === '' || value === null) {
return false;
}
result = cardNumberValidator(value);
if (!result.isPotentiallyValid && !result.isValid) {
return false;
}
if (result.card !== null) {
self.selectedCardType(result.card.type);
creditCardData.creditCard = result.card;
}
if (result.isValid) {
creditCardData.creditCardNumber = value;
self.creditCardType(result.card.type);
}
});
//Set expiration year to credit card data object
this.creditCardExpYear.subscribe(function (value) {
creditCardData.expirationYear = value;
});
//Set expiration month to credit card data object
this.creditCardExpMonth.subscribe(function (value) {
creditCardData.expirationMonth = value;
});
//Set cvv code to credit card data object
this.creditCardVerificationNumber.subscribe(function (value) {
creditCardData.cvvCode = value;
});
},
/**
* Get code
* @returns {String}
*/
getCode: function () {
return 'cc';
},
/**
* Get data
* @returns {Object}
*/
getData: function () {
return {
'method': this.item.method,
'additional_data': {
'cc_cid': this.creditCardVerificationNumber(),
'cc_ss_start_month': this.creditCardSsStartMonth(),
'cc_ss_start_year': this.creditCardSsStartYear(),
'cc_ss_issue': this.creditCardSsIssue(),
'cc_type': this.creditCardType(),
'cc_exp_year': this.creditCardExpYear(),
'cc_exp_month': this.creditCardExpMonth(),
'cc_number': this.creditCardNumber()
}
};
},
/**
* Get list of available credit card types
* @returns {Object}
*/
getCcAvailableTypes: function () {
return window.checkoutConfig.payment.ccform.availableTypes[this.getCode()];
},
/**
* Get payment icons
* @param {String} type
* @returns {Boolean}
*/
getIcons: function (type) {
return window.checkoutConfig.payment.ccform.icons.hasOwnProperty(type) ?
window.checkoutConfig.payment.ccform.icons[type]
: false;
},
/**
* Get list of months
* @returns {Object}
*/
getCcMonths: function () {
return window.checkoutConfig.payment.ccform.months[this.getCode()];
},
/**
* Get list of years
* @returns {Object}
*/
getCcYears: function () {
return window.checkoutConfig.payment.ccform.years[this.getCode()];
},
/**
* Check if current payment has verification
* @returns {Boolean}
*/
hasVerification: function () {
return window.checkoutConfig.payment.ccform.hasVerification[this.getCode()];
},
/**
* @deprecated
* @returns {Boolean}
*/
hasSsCardType: function () {
return window.checkoutConfig.payment.ccform.hasSsCardType[this.getCode()];
},
/**
* Get image url for CVV
* @returns {String}
*/
getCvvImageUrl: function () {
return window.checkoutConfig.payment.ccform.cvvImageUrl[this.getCode()];
},
/**
* Get image for CVV
* @returns {String}
*/
getCvvImageHtml: function () {
return '<img src="' + this.getCvvImageUrl() +
'" alt="' + $t('Card Verification Number Visual Reference') +
'" title="' + $t('Card Verification Number Visual Reference') +
'" />';
},
/**
* Get unsanitized html for image for CVV
* @returns {String}
*/
getCvvImageUnsanitizedHtml: function () {
return this.getCvvImageHtml();
},
/**
* @deprecated
* @returns {Object}
*/
getSsStartYears: function () {
return window.checkoutConfig.payment.ccform.ssStartYears[this.getCode()];
},
/**
* Get list of available credit card types values
* @returns {Object}
*/
getCcAvailableTypesValues: function () {
return _.map(this.getCcAvailableTypes(), function (value, key) {
return {
'value': key,
'type': value
};
});
},
/**
* Get list of available month values
* @returns {Object}
*/
getCcMonthsValues: function () {
return _.map(this.getCcMonths(), function (value, key) {
return {
'value': key,
'month': value
};
});
},
/**
* Get list of available year values
* @returns {Object}
*/
getCcYearsValues: function () {
return _.map(this.getCcYears(), function (value, key) {
return {
'value': key,
'year': value
};
});
},
/**
* @deprecated
* @returns {Object}
*/
getSsStartYearsValues: function () {
return _.map(this.getSsStartYears(), function (value, key) {
return {
'value': key,
'year': value
};
});
},
/**
* Is legend available to display
* @returns {Boolean}
*/
isShowLegend: function () {
return false;
},
/**
* Get available credit card type by code
* @param {String} code
* @returns {String}
*/
getCcTypeTitleByCode: function (code) {
var title = '',
keyValue = 'value',
keyType = 'type';
_.each(this.getCcAvailableTypesValues(), function (value) {
if (value[keyValue] === code) {
title = value[keyType];
}
});
return title;
},
/**
* Prepare credit card number to output
* @param {String} number
* @returns {String}
*/
formatDisplayCcNumber: function (number) {
return 'xxxx-' + number.substr(-4);
},
/**
* Get credit card details
* @returns {Array}
*/
getInfo: function () {
return [
{
'name': 'Credit Card Type', value: this.getCcTypeTitleByCode(this.creditCardType())
},
{
'name': 'Credit Card Number', value: this.formatDisplayCcNumber(this.creditCardNumber())
}
];
}
});
});