I think it does what you want. In General settings set the default payment status as “incomplete” and “Send registration confirmation emails before payment is received? to “No”. Now anyone registering will not receive any notification of registration until they pay and the slots will not be allocated until they pay also. Effectively they register and pay, If they don’t pay they are not registered, but you do get contact information which could be useful.