const payButton = document.getElementById("pay-button");
try {
const dropin = await Purse.createDropinCheckout({
session: clientSession.widget.data,
eventListener: (event) => {
if (event.code === "ready") {
document.getElementById("loading-spinner").style.display = "none";
}
if (event.code === "error") {
showError(event.payload.message);
}
}
});
await dropin.mount(container);
dropin.isPaymentFulfilled.subscribe((isFulfilled) => {
payButton.disabled = !isFulfilled;
});
payButton.addEventListener("click", async () => {
payButton.disabled = true;
payButton.textContent = "Processing...";
hideError();
try {
await dropin.submitPayment();
} catch (error) {
showError(error.message || "Payment failed. Please try again.");
payButton.disabled = false;
payButton.textContent = "Pay";
}
});
} catch (error) {
showError("Failed to load payment form. Please refresh.");
}