.disable(); not working properly

I have a button on a page that after they click once its supposed to disable and hide but it does not always work. The button posts a message to an HTML window that then processes a CC payment through stripe. Every now and then I get someone who clicks it to fast or something (not sure since its never happened to me personally, but I do see it in stripe and then get a call from the customer) it processes multiple payments. Here is the code I use:


export function button2_click(event) {
    $w("#button2").disable();
    $w("#button2").hide();
    $w("#html1").postMessage("sendpay");
    console.log("clicked submit " + finalprice + " application fee " + finalapplicationfee);
}

Any tips? I can’t keep having people get double or triple charged but don’t know what other options there are out there.