Stripe has a great in-built system for capturing data as a "customer" and a "card", which can then be processed at any time after the fact.
There's no guarantee your customer will have available credit on their card, but you can capture & verify their information without charging any amount.
This happens on Stripe's servers (and not stored on your own) so you're PCI-compliant out of the box, as long as your transaction occurs behind an SSL secured connection.