In my experience it is perfectly possible to use a free Cloudflare account for getting https on the www. I've set this up for dozens of domains using a free Cloudflare account. (Unless they have changed their policy recently)
The best way to achieve this is probably to let Cloudflare redirect http and https to your server.
You can do this in your domain's Crypto tab on Cloudflare. At the SSL settings choose "Full".
The "Full" settings only work if you have a certificate installed for your hosting account. This can be a self signed certificate or the default certificate for your hosting account.
In the DNS settings of cloudflare you can point the normal A record for the domain name as well as the www A record to your server's ip address. Make sure and set the status (the cloud with the arrow in the right column) to make use of cloudflare.
In my experience this is perfectly possible with free Cloudflare accounts.
Now that all www, non-www, http and https traffic is going through Cloudflare to your hosting account, make sure that you configure your hosting provider so that http and https are pointed to look to the same folder.
On your server redirect all non-www traffic to the www. domain. If you're using Apache you can use .htaccess for redirection of all non-www to www:
##### Redirect non-www to www -- BEGIN
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
##### Redirect non-www to www -- END
You can redirect all http traffic to https in Joomla's configuration:
Global Configuration > Server > Force https > Entire site
This can give errors if you haven't set Cloudflare's SSL settings to Full.
You could also do both www and https issues, and even more fine-tuning, with Akeeba Admin Tools Pro.