The right way to fix this is for something like Zelle to get a standardized payment request API. Then the merchant submits a payment request using the customer's email address (the only information the merchant needs from them, so no data breaches), and payments go through irreversibly if they haven't been contested in 30 days, or immediately if the customer affirmatively legitimates the payment on their bank's website/app because the merchant needs to be paid before delivering goods or services. (And payment requests from merchants the customer has never used before get denied after 30 days if not affirmatively legitimated.)
That also removes the credit card fees because it's really a bank transfer.
But where is it?