Luke, I've never seen an extension out there that does exactly what you need.
It's (probably) possible to implement this functionality with custom Magento code by rewriting the various quote, sales, quote item, sales item, credit memo, and credit memo, and payment module event handlers, and/or a class method rewrite or two. However, it's a rather large task and not easily answered in a single Stack Exchange question, and would require you to understand how all the above objects interact before tackling it.
This sort of programming can be more time consuming that you'd expect. Also, because it involves actual money, this needs more rigorous testing that can usually be applied in a client services environment. Also also, it gets extra tedious because each payment module type (authorizenet, paypal, stripe, etc.) seems to handle orders, credit memos, and invoices slightly differently, which means you'll often end up with subtle, hard to track down bugs. I have 4+ years Magento experience and I'd be wary of tackling this sort of problem — especially if the client needed a fixed bid.
If you're open to alternate solutions — right now it sounds like your client is handling this manually in the admin console and wants to be able to stop doing that. Instead of trying to come up with (clever and awesome) solutions using Magento's existing objects, I'd focus on automating what your client is currently doing manually. That'll likely be easier than messing around with custom account programming.
The answer would be in Magento 1.8.*.
They hide the button "Confirm/complete order" for HSS payment method when customer gets to payment step. They also added a message to let customers know that they have to complete the payment first and need to press "Pay" button.
If the customers do not press 'Pay' button, it makes sense to invalidate the order (cancel) because they didn't agree to pay - no authorize or capture sold was made.
Best Answer
There are two ways to do this:
1 - Partial Refund in Braintree
2 - To do an online refund in Magento 2