When users create a node, they should be redirected to a payment page; if payment is successful, the user can see the node.
Is there any way to achieve this?
Although not open source, there is the paid for module called 'pay to publish'.
I've not used this exact module, but have used this companies products before and they worked 100% as advertised...
For some reason my phone will not allow me to paste the URL in here, so just Google 'moneyscripts Drupal pay to publish'.
If you're using Drupal Commerce you could acheive this pretty easy using Rules and a custom defined user role.
Create a user role which is restricted from viewing the content type you want them to pay for. Then configure a Rule which assigns the newly define role to your customer once they have succesfully completed payment. This means that only users who have paid for your product will have access to the content type.
I think you're looking for Commerce Node Checkout.
Integrate with Commerce in order to allow you to charge users to create nodes. It is possible to have multiple different product offerings for each node type, so the user can pick the product they want to purchase when creating the node. An example use-case would be a classifieds site that charges people to post listings.
The module creates a Paid Posting product type. You created different products for different posting options (e.g. multiple options for how long the posting is published) you then associate those options with a content type you want a user to purchase.
After completing the node creation workflow and selecting the purchase option, a user is redirect to the cart for checkout. Upon checkout the node is published. There is optional functionality to make the node expire after a set amount of time.
You could also use Payment Reference field module of the Payment project.