Как организовать платные услуги на сайте (премиум аккаунт и др)?
Бррр, если честно я не стал дочитывать ...
Думаю вам следует понять одну простую истину - Премиум Юзер это такая же группа как и любая другая (например "Админы", "Модераторы" итп. Соответственно пляшите от этого же. Хранить срок действия (день истечения) можно прямо в таблице юзера, или в привязочной таблице юзер<->группы. Каким то скриптом раз в определенное время шастать по базе и удалять устаревшие записи. Например если у вас сроки действий в днях, то это достаточно делать раз в сутки.
Ну типа групп и реализовано у меня уже, покупка услуг = покупка доступа к группе, услуги будут разные и с разным сроком действия, и их может быть несколько...Хранить срок действия (день истечения) можно прямо в таблице юзера - так не выйдет скорее всего, я же за это деньги беру и всегда должен сказать за что списались деньги в любой момент времени, если так хранить то данные затрутся... Сейчас все хранится в отдельной табличке , все связанно, каждая оплата с каждой услугой, можно всегда сказать куда делась определенная сумма со счета, когда и на что.
Наверное первый вариант более жизнеспособен...