I have to admit, I've been thinking about this for a while and have no clue how I'd do it.
Didn't think of this. So there's one clue. Although I'm not sure it's appropriate to charge at this point, since no post has been published yet.
So this would work, if it was only meant to work once per user. Otherwise, no additional payment would be collected on subsequent submitted posts unless a new account was created. Not an ideal UX.
To the OP, I know this isn't what you asked, but in case you weren't aware, this can be easily done with a combination of a form plugin and a payment addon.
For example, here's a tutorial on user-submitted posts via Gravity Forms. Then, just tack on a PayPal or Stripe addon, and you're set.