The difference between a merchant gateway and non-merchant gateway is still not very clear to me. Even after reading the explanation. Is the only difference between the two the ability to use a callback URL or not? Why exactly can't they be combined?
What I will do now, as follows:
1) Customer has to pay a specific amount.
2) Get the Mollie customer data from Mollie using the mollie_customer_id as stored inside the Blesta customer's metadata.
3) If the Blesta customer does not exist in Mollie the customer will be created inside Mollie, the blesta_customer_id stored inside the Mollie customer's metadata and the mollie_customer_id stored inside Blesta customer's metdata.
4) Customer gets redirected to the Mollie payment page (outside of Blesta) with the callback URL and the return URL (how to get back to Blesta) passed as one of parameters. This way Mollie will know how to return the transaction status back to the payment plugin's validate method inside Blesta.
5) The customer does its payment inside Mollie and gets redirected back to the payment plugin's success (or another depending on the status) method inside Blesta and Mollie also returns the status of the transaction to the payment plugin's validate method inside Blesta.
6) Blesta will manage everything from there.
I still have to figure out how it will work with recurring payments.