2021-10-14 18:45:48 +02:00
|
|
|
/**
|
|
|
|
* Invoice Ninja (https://invoiceninja.com).
|
|
|
|
*
|
|
|
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
|
|
|
*
|
|
|
|
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
|
|
|
|
*
|
2022-06-08 06:25:44 +02:00
|
|
|
* @license https://www.elastic.co/licensing/elastic-license
|
2021-10-14 18:45:48 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
class CheckoutCreditCardAuthorization {
|
|
|
|
constructor() {
|
|
|
|
this.button = document.querySelector('#pay-button');
|
|
|
|
}
|
|
|
|
|
|
|
|
init() {
|
|
|
|
this.frames = Frames.init(
|
|
|
|
document.querySelector('meta[name=public-key]').content
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
handle() {
|
|
|
|
this.init();
|
|
|
|
|
|
|
|
Frames.addEventHandler(
|
|
|
|
Frames.Events.CARD_VALIDATION_CHANGED,
|
|
|
|
(event) => {
|
|
|
|
this.button.disabled = !Frames.isCardValid();
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
Frames.addEventHandler(Frames.Events.CARD_TOKENIZED, (event) => {
|
|
|
|
document.querySelector(
|
|
|
|
'input[name="gateway_response"]'
|
|
|
|
).value = JSON.stringify(event);
|
|
|
|
|
|
|
|
document.getElementById('server_response').submit();
|
|
|
|
});
|
|
|
|
|
|
|
|
document
|
|
|
|
.querySelector('#authorization-form')
|
|
|
|
.addEventListener('submit', (event) => {
|
|
|
|
this.button.disabled = true;
|
|
|
|
|
|
|
|
event.preventDefault();
|
|
|
|
Frames.submitCard();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
new CheckoutCreditCardAuthorization().handle();
|