Some of those requirements are vague, but yes, Patroni should probably be the first approach you look at. If the second datacenter is just for redundancy, then a simple setup would be:
DCA (data center A):
Postgres server 1
Postgres server 2
DCB:
Postgres server 3 (set no_failover: true)
You will also need a DCS system of some sort (e.g. etcd on all three nodes), as well as a backup system (e.g. pgBackRest). Will also need to decide how automated you want things to be (for example, cross datacenter failover in the above would be manually done). It should definitely be able to handle your RPO/RTO requirements easily enough.
[Patroni] However it seems relatively complex to set up and operate
Setting things up can be a little complex, yes, but once done it just works, so very little operation resources are needed.
We can not assume eg a load balancer.
Possible via the application: see https://www.postgresql.org/docs/current/libpq-connect.html (esp. target_session_attrs)
Cheers,
Greg