Eu verifico wuando o usuário tenta acessar o sistema. O frontend chama uma API para validar o acesso e outra para autenticar, caso o acesso esteja válido.
O pagamento por recorrência depende do seu Gateway de pagamento. Mas, são bem parecidos no final.
Todo pagamento é registrado no banco de dados, isso é importante para auditoria, controle fiscal etc.
O status de pagamento é atualizado por uma outra API, que é meu webhook para o Gateway de pagamento. O Gateway de acordo com o evento, pago, não pago etc .. vai mandar um json (por exemplo) para você! aí você segue a documentação e de acordo com a resposta faz o que quiser, no caso atualizar o pagamento.
a verificação da assinatura você pode deixar de responsabilidade do Gateway ou cuidar 100% dela (eu prefiro). assim o Gateway só recebe pagamento mesmo e não gerencia assinatura.
existe uma tabela no banco de dados que cruza o pagamento, com o usuário e o plano. com isso voce consegue validar. acho desnecessário validar em toda hora que usuário recarregar a página, somente no login constuma ser suficiente.