Ideas on collecting payment before form submission?
Have you tried the Ubercart Webform Checkout Pane module?
You could define a simple product and use the webform as part of the checkout process.
Some more details about this module (from its project page):

This module allows you to define Webform nodes as checkout/order panes in Ubercart.
This is useful if you want to collect additional information during the checkout process. For example, you may want a quick survey or require additional fields that apply to the entire order.
Using the Webform module allows for many advantages: the forms/fields can easily be modified by an end-user; less development time is required to create database tables and code to store/retrieve the data; and the form will remember the user's previous answers.
Furthermore, this module now provides tokens for every field in each of your enabled webforms, making it easy for you to insert the submitted values into confirmation emails, invoices, etc.