Hi,
1. I don't agree with you here. As far as I know the vast majority of websites will create the order before sending the customer to the payment gateway.
That's necessary because otherwise, the customer can change the cart after the redirection to the payment gateway and thus he would pay a different price than what is in his cart. Then, you don't know what to do as you already have a payment which doesn't correspond to anything.
The only exception to this is when the credit card information is asked during the checkout process. In that case, it's possible to process the payment just before the order is created, in the same PHP process.
That's actually what HikaShop does for payment plugins / gateways supporting that way of processing payments.
For example, the Stripe connects plugin on our marketplace, the PayPal Pro plugin, or the Authorize.net plugin in AIM mode all work like that and ask the credit card information before the user finishes the checkout on the website and then when the user clicks on the finish button, the payment is processed and the order is created if the payment is successful.
2. PayPal advanced requires the order information when displaying the PayPal form. Thus, it has to be after the checkout finish button is pressed, like PayPal standard. It can't be moved before that.