Мне больше нравится идея с личным кабинетом (ЛК). Все купленные пользователем ресурсы всегда должны быть ему доступны через ЛК. Пользователь заходит в ЛК, там проверяется какие ресурсы у него куплены и при нажатии на кнопку Скачать, соответствующие файлы отдаются пользователю.
Если хочется действительно разадавать именно ссылки, а ЛК нету (например пользователь отправляет платное смс, а обратно ему высылается ссылка), то внутрь каждой ссылки нужно вставлять ключ. Данный ключ создается для определенного ресурса и действует скажем неделю или 2 дня (тут уже вам надо подумать).
Хочу сказать, что пользователю ничего не мешает залить скачанный у вас файл на любой файлообменник и раздать всем публичную ссылку, поэтому сильно заморачиваться тут не стоит (делать ссылки, которые действуют только 10 минут или разрешают только одно скачивание).