Оплата проходит через Free-kassa
После оплаты на Ваш скрипт-обработчик приходит информация о платеже. Вы её проверяете, и если всё ок (хэш совпадает, сумма нужная и т.д.) -- генерируете ключ и сохраняете в БД, отправив его на почту клиенту.
Как мне сгенерировать сам ключ ? Какие плагины для этого существуют?
Стандартные функции PHP, гуглите "generate pass php"
Как клиент может авторизоваться по ключу ?
Пишите скрипт, который проверяет переданный через GET key в БД (наличие данного ключа в базе, время его жизни), и если всё ОК - выдаёт результат в виде товара.