With the WePay API, you can process payments once a specific criteria has been met, like with "all or nothing" donation campaigns. You can accomplish this in two ways:
iFrame - the iFrame uses the /preapproval/create call to obtain a preapproval_id which can be used to charge the payer at a later date. This method lets you use WePay's pre-built and optimized form to collect credit card information. As information is shared securely between the browser and WePay, any PCI compliance is avoided.
Tokenization - Tokenization uses WePay's tokenization.js to obtain a credit card token which can be used to charge the payer at a later date. This method lets you use your own form to collect credit card information. As there is exposer to developer error or fraud, a minor amount of PCI compliance is required.
For more information, visit https://www.wepay.com/developer/usecases/tipping-point-payments