-
Notifications
You must be signed in to change notification settings - Fork 6
/
script.js
140 lines (116 loc) · 3.24 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/**
* Initialize Mollie Components instance
*/
var mollie = Mollie(
"pfl_HgMrHhRAFm", // You can find your Profile ID in the Dashboard (https://www.mollie.com/dashboard/developers/api-keys)
{
locale: "en_US", // Optional. If not provided, we will determine the users' language by looking at the document and/or userAgent.
testmode: false // Set to true to enable test mode.
}
);
var options = {
styles: {
base: {
color: 'rgba(0, 0, 0, 0.8)',
}
}
}
/**
* Get elements
*/
var form = document.getElementById("mcForm");
var formError = document.getElementById("form-error");
var submitButton = document.getElementById("submit-button");
/**
* Create card holder input
*/
var cardHolder = mollie.createComponent("cardHolder", options);
cardHolder.mount("#card-holder");
var cardHolderError = document.getElementById("card-holder-error");
cardHolder.addEventListener("change", function (event) {
if (event.error && event.touched) {
cardHolderError.textContent = event.error;
} else {
cardHolderError.textContent = "";
}
});
/**
* Create card number input
*/
var cardNumber = mollie.createComponent("cardNumber", options);
cardNumber.mount("#card-number");
var cardNumberError = document.getElementById("card-number-error");
cardNumber.addEventListener("change", function (event) {
if (event.error && event.touched) {
cardNumberError.textContent = event.error;
} else {
cardNumberError.textContent = "";
}
});
/**
* Create expiry date input
*/
var expiryDate = mollie.createComponent("expiryDate", options);
expiryDate.mount("#expiry-date");
var expiryDateError = document.getElementById("expiry-date-error");
expiryDate.addEventListener("change", function (event) {
if (event.error && event.touched) {
expiryDateError.textContent = event.error;
} else {
expiryDateError.textContent = "";
}
});
/**
* Create verification code input
*/
var verificationCode = mollie.createComponent("verificationCode", options);
verificationCode.mount("#verification-code");
var verificationCodeError = document.getElementById(
"verification-code-error"
);
verificationCode.addEventListener("change", function (event) {
if (event.error && event.touched) {
verificationCodeError.textContent = event.error;
} else {
verificationCodeError.textContent = "";
}
});
/**
* Disables the form inputs and submit button
*/
function disableForm() {
submitButton.disabled = true;
}
/**
* Enables the form inputs and submit button
*/
function enableForm() {
submitButton.disabled = false;
}
/**
* Submit handler
*/
form.addEventListener("submit", function (event) {
event.preventDefault();
disableForm();
// Reset possible form error
formError.textContent = "";
// Get a payment token
mollie.createToken().then(function (result) {
var token = result.token;
var error = result.error;
if (error) {
enableForm();
formError.textContent = error.message;
return;
}
// Add token to the form
var tokenInput = document.createElement("input");
tokenInput.setAttribute("name", "token");
tokenInput.setAttribute("type", "hidden");
tokenInput.setAttribute("value", token);
form.appendChild(tokenInput);
// Re-submit form to the server
form.submit();
});
});