World pay is a Remote payment gateway meaning that the payment is processed on their site.
because of this, the order must be stored when the checkout page posts to the confirm page.
Using a remote payment gateway, you should not rely on the database for the order status, you shouldcheck for orders by logging into your world pay account.
As for the redirect on success, the world pay system will redirect to a page on their servers, you would need to customize that page to add a return perameter to return to your site.
see the following documentation:
Customizing your service -> customizing your payment service -> HTML Payment Service Pages -> Structure of the Result Pages
For the shipping, how is the shipping configured?