validate credit card data

This commit is contained in:
David Remer 2020-07-22 14:12:49 +03:00
parent 9d20d59b87
commit 29f712f185
3 changed files with 25 additions and 7 deletions

View file

@ -3,10 +3,12 @@ import SingleProductBootstap from './modules/ContextBootstrap/SingleProductBoots
import CartBootstrap from './modules/ContextBootstrap/CartBootstap';
import CheckoutBootstap from './modules/ContextBootstrap/CheckoutBootstap';
import Renderer from './modules/Renderer/Renderer';
import ErrorHandler from './modules/ErrorHandler';
import CreditCardRenderer from "./modules/Renderer/CreditCardRenderer";
const bootstrap = () => {
const creditCardRenderer = new CreditCardRenderer(PayPalCommerceGateway);
const errorHandler = new ErrorHandler();
const creditCardRenderer = new CreditCardRenderer(PayPalCommerceGateway, errorHandler);
const renderer = new Renderer(creditCardRenderer, PayPalCommerceGateway);
const context = PayPalCommerceGateway.context;

View file

@ -1,7 +1,8 @@
class CreditCardRenderer {
constructor(defaultConfig) {
constructor(defaultConfig, errorHandler) {
this.defaultConfig = defaultConfig;
this.errorHandler = errorHandler;
}
render(wrapper, contextConfig) {
@ -43,12 +44,23 @@ class CreditCardRenderer {
'submit',
event => {
event.preventDefault();
hostedFields.submit({
contingencies: ['3D_SECURE']
}).then((payload) => {
payload.orderID = payload.orderId;
return contextConfig.onApprove(payload);
this.errorHandler.clear();
const state = hostedFields.getState();
const formValid = Object.keys(state.fields).every(function (key) {
return state.fields[key].isValid;
});
if (formValid) {
hostedFields.submit({
contingencies: ['3D_SECURE']
}).then((payload) => {
payload.orderID = payload.orderId;
return contextConfig.onApprove(payload);
});
} else {
this.errorHandler.message(this.defaultConfig.hosted_fields.labels.fields_not_valid);
}
}
);
});

View file

@ -272,6 +272,10 @@ class SmartButton implements SmartButtonInterface
'credit_card_number' => __('Credit Card Number', 'woocommerce-paypal-commerce-gateway'),
'cvv' => __('CVV', 'woocommerce-paypal-commerce-gateway'),
'mm_yyyy' => __('MM/YYYY', 'woocommerce-paypal-commerce-gateway'),
'fields_not_valid' => __(
'Unfortunatly, your credit card details are not valid.',
'woocommerce-paypal-commerce-gateway'
),
],
],
];