Both already exist. Setting up a direct debit generally only involves filling in a form. Sending money to someone else is as simple as authorising a payment to them with their account details.
What's needed is a better system for approving who is allowed to make withdrawals from your bank account instead of just "anyone in possession of your bank routing information" which makes customers reluctant to provide it.
This would be essentially solved with a standardized system for customers to give each merchant a separate bank account number (or equivalent) which really refers to the same bank account but could be revoked individually if that number is compromised or you want to remove the merchant's access, or could be set to automatically expire for non-recurring payments. But the banks don't have the incentive to provide this when they're the ones getting the credit card fees.
I like the idea of per merchant account numbers. Even better if we used some kind of cryptographic binding between the merchant account and your account, so it would not work for anyone else.
What problem needs to be solved?