Charge user after status of order is changed with eCommerce
You can use a payment gateway that allows for Authorization Only transactions. This will authorize a certain amount, but will not actually charge the credit card.  This is what gas stations, hotels, etc. do. They charge a preset amount, and then finalize the actual amount later.

commerce_authnet offers this capability. In the settings for the payment gateway you just set Authorize Only.

Once the administrator is ready to finalize the payment, they would go to the Orders page, and choose Payment on the Order.  You then 'capture' the amount to finalize the payment.

You can fine tune who has access to the Payments page on the Permissions page.