How can I give paid access to content?
You should be able to get this to work using the Rules module, using a variation of the rule shown/explained in the answer to "How to make the permissions of a module more granular?". I.e in your case:


you can use the same Rules Event (Drupal is initializing), which to my knowledge is the only Rules Event you can use for this (for any other Rules Event you're just "too late", i.e. the content is already being displayed).
you can perform similar Rules Actions (to perform an appropriate redirect and display a message that fits your needs).
you should use one or more of these Rules Conditions (combined with "OR", not with "AND"!):


check if the current user's role is "anonymous".
related to your field field_module_preview.