For in person transactions, NFC is perfect. For internet payments, a dynamically generated QR code is secure and far superior to the current setup:
* find physical card or virtual in an app
* copy paste or insert "secret" numbers, and trust the website won't save them, because they are static
* insert a bunch of personal data which the merchant has no real reason to know, but that is used for "fraud detection" because they don't trust you are the real owner of the "secret" static password
* go back to your phone and get the SMS/3dsecure validation prompt, because it turns out your bank also doesn't trust the secrecy of the "secret" numbers they issued you
* finally, pray to the cave gods the transaction has gone trough the complex duct tape and bubble gum contraption, is not flagged for review or reversed by the various intermediaries etc.
It's all a baroque mess, multiple layers of cruft accumulated over the decades. To compare, even a crypto transaction is much smoother and simpler, navigate to checkout, scan the QR code with your wallet app, press pay and you are done. And that's not to praise crypto, any solution designed from scratch for the age of the internet will be much better.