const routeId = "your-route-id";
// This could be some examples for tags
const securityTags = [
"jwt-authenticated",
"encrypted-transaction-date",
"high-security",
"client-reference-code"
];
async function initializeSecurePayment(routeId) {
// This would be populated by your server-side template
const jwtToken = {{myJWTToken}}
const FT = window.FTCaptures.init(routeId, "production", function (state) {
console.log('SDK initialized successfully');
}, securityTags, jwtToken);
return FT;
}
document.addEventListener('DOMContentLoaded', async function () {
const FT = await initSDK();
const css = {
"color": "#1b1d1f",
"::placeholder": {
"color": "lightgray"
},
"font-family" : "Arial"
};
FT.field("#cc-holder", {
type: "card-holder",
name: "card_holder",
placeholder: "Name on card",
autocomplete: "cc-holder",
errorColor: "750000",
required: "true",
css: css
});
FT.field("#cc-number", {
type: "card-number",
name: "card_number",
placeholder: "Card Number",
autocomplete: "cc-number",
errorColor: "750000",
required: "true",
css: css,
});
FT.field("#cc-expiration-date", {
type: "card-expiration-date",
name: "card_expiration_date",
placeholder: "MM / YY",
autocomplete: "cc-expiration-date",
errorColor: "750000",
required: "true",
css: css,
});
FT.field("#cc-cvv", {
type:"card-security-code",
name: "card_security_code",
placeholder: "CVV",
autocomplete: "cc-csc",
errorColor: "750000",
required: "true",
css: css,
});
FTCaptures.on("cardHolderValidationFailed", function (event) {
console.log(event.data.isValid)
});
FTCaptures.on("cardNumberValidationFailed", function (event) {
console.log(event.data.isValid)
});
FTCaptures.on("cardExpirationDateValidationFailed", function (event) {
console.log(event.data.isValid)
});
FTCaptures.on("cardSecurityCodeValidationFailed", function (event) {
console.log(event.data.isValid)
});
const form = document.querySelector('#collect-form');
form.addEventListener('submit', async function (e) {
e.preventDefault();
try {
const validationResults = await FTCaptures.validate(routeId);
if (!validationResults.hasErrors) {
const tokenizationResult = await FTCaptures.tokenize(routeId);
console.log(tokenizationResult)
form.submit();
}
else {
console.log(validationResults)
alert("There are one or more fields with errors.")
}
} catch (error) {
console.error(error);
}
});
});