Ну, во-первых, вы определенно не хотите ссылаться непосредственно на файл. Возможно, вы захотите отправить пользователю ссылку на созданную вами службу (или даже просто страницу) с сгенерированным аргументом id, который приводит к загрузке файла, если соблюдены определенные критерии.
Эти критерии сложны, на самом деле, поскольку вам нужно разрешить пользователю загружать файл более одного раза (в случае, если он не сможет загрузить полный файл в первый раз или случайно удалит его и т. Д.), Но один ссылка работает, она работает, пока вы ее не убьете.
Я бы предложил использовать время или IP для фильтрации ваших запросов на загрузку.
Время: когда кто-то покупает файл у вас, сообщите ему, что он сможет загрузить файл только за 1 день или что-то подобное. Да, другие люди могут загрузить файл в течение этого дня, но только в течение 1 дня. Вы также можете установить ограничение на скачивание, чтобы они могли загружать его только 5 раз (это нормально).
IP: когда кто-то покупает файл у вас, сообщите ему, что он сможет загрузить файл только с этого IP. Ваша служба загрузки может это проверить, когда попытается загрузить файл.
Кажется, и то и другое можно легко использовать одновременно.
В любом случае (или в обоих случаях) будьте готовы обращаться с клиентами, которые не загрузили файл вовремя или хотят получить его снова по истечении определенного времени (или с другого компьютера / IP-адреса (некоторые люди не получают статичные)). Они не захотят платить снова, и, вероятно, не должны будут.