validate if credit card can be used in a country

This commit is contained in:
David Remer 2020-09-29 09:59:22 +03:00
parent fed6df2578
commit 82be811271
6 changed files with 298 additions and 11 deletions

View file

@ -5,6 +5,7 @@ class CreditCardRenderer {
constructor(defaultConfig, errorHandler) {
this.defaultConfig = defaultConfig;
this.errorHandler = errorHandler;
this.cardValid = false;
}
render(wrapper, contextConfig) {
@ -79,7 +80,7 @@ class CreditCardRenderer {
return state.fields[key].isValid;
});
if (formValid) {
if (formValid && this.cardValid) {
let vault = document.querySelector(wrapper + ' .ppcp-credit-card-vault') ?
document.querySelector(wrapper + ' .ppcp-credit-card-vault').checked : false;
@ -93,12 +94,21 @@ class CreditCardRenderer {
return contextConfig.onApprove(payload);
});
} else {
this.errorHandler.message(this.defaultConfig.hosted_fields.labels.fields_not_valid);
const message = ! this.cardValid ? this.defaultConfig.hosted_fields.labels.card_not_supported : this.defaultConfig.hosted_fields.labels.fields_not_valid;
this.errorHandler.message(message);
}
}
hostedFields.on('inputSubmitRequest', function () {
submitEvent(null);
});
hostedFields.on('cardTypeChange', (event) => {
if ( ! event.cards.length ) {
this.cardValid = false;
return;
}
const validCards = this.defaultConfig.hosted_fields.valid_cards;
this.cardValid = validCards.indexOf(event.cards[0].type) !== -1;
})
document.querySelector(wrapper + ' button').addEventListener(
'click',
submitEvent