<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cashfree V3 Card</title>
<script src="https://sdk.cashfree.com/js/v3/cashfree.js"></script>
</head>
<body>
<div id="cardLayout" style="width:400px; padding: 20px; background:#f6f9fb">
<div id="cardNumber" style="margin-bottom: 10px;"></div>
<div id="cardHolder" style="margin-bottom: 10px;"></div>
<div style="display: flex; margin-bottom: 10px;">
<div id="cardExpiry" style="margin-right: 1rem"></div>
<div id="cardCvv"></div>
</div>
<div id="save" style="margin-bottom: 10px;"></div>
<button
type="submit" id="payNow"
style="width: 100%; height: 35px; cursor: pointer; border: 1px solid #2361d5; color: #2361d5; background: none; border-radius: 8px">
Pay Now
</button>
<p id="paymentMessage" style="color: #df1b41"></p>
</div>
</body>
<script>
const cashfree = Cashfree({
mode: "sandbox",
});
let paymentBtn = document.getElementById("payNow");
let paymentMessage = document.getElementById("paymentMessage");
let styleObject = {
fonts: [{
cssSrc: "https://fonts.googleapis.com/css2?family=Lato"
}],
base: {
fontSize: "16px",
fontFamily: "Lato",
backgroundColor: "#FFFFFF",
":focus": {
border: "1px solid #2361d5",
},
border: "1px solid #e6e6e6",
borderRadius: "5px",
padding: "16px",
color: "#000000",
},
invalid: {
color: "#df1b41",
},
};
let cardOptions = {
values: {
placeholder: "Enter Card Number",
},
style: styleObject,
};
let cardComponent = cashfree.create("cardNumber", cardOptions);
cardComponent.mount("#cardNumber");
let cvvOptions = {
style: styleObject,
};
let cvvComponent = cashfree.create("cardCvv", cvvOptions);
cvvComponent.mount("#cardCvv");
let cardHolderOptions = {
values: {
placeholder: "Enter Card Holder Name",
},
style: styleObject,
};
let cardHolder = cashfree.create("cardHolder", cardHolderOptions);
cardHolder.mount("#cardHolder");
let cardExpiryOptions = {
style: styleObject,
};
let cardExpiry = cashfree.create("cardExpiry", cardExpiryOptions);
cardExpiry.mount("#cardExpiry");
let saveOptions = {
values: {
label: "Save Card for later",
},
style: styleObject,
};
let save = cashfree.create("savePaymentInstrument", saveOptions);
save.mount("#save");
cardExpiry.on("change", function (data) {
toggleBtn();
});
cardHolder.on("change", function (data) {
toggleBtn();
});
cardComponent.on("change", function (data) {
cvvComponent.update({ cvvLength: data.value.cvvLength });
toggleBtn();
});
cvvComponent.on("change", function (data) {
toggleBtn();
});
function toggleBtn() {
if (
cardExpiry.isComplete() &&
cardHolder.isComplete() &&
cardComponent.isComplete() &&
cvvComponent.isComplete()
) {
paymentBtn.disabled = false;
} else {
paymentBtn.disabled = true;
}
}
paymentBtn.addEventListener("click", function () {
paymentBtn.disabled = true;
cashfree.pay({
paymentMethod: cardComponent,
paymentSessionId: "your-payment-session-id",
savePaymentInstrument: save,
}).then(function (data) {
if (data != null && data.error) {
paymentMessage.innerHTML = data.error.message;
}
paymentBtn.disabled = false;
});
});
</script>
</html>