Как оптимально организовать процесс покупки незарегистрированным пользователем?
Хотелка - максимально просто и в то же время понятно для пользователя что без обмана - он будет зарегистрирован и все данные заказа увидит в личном кабинете. Я так понимаю что можно его автоматически зарегистрировать во время оплаты - брать данные и отсылать на регистрацию а потом на его ящик. Это нормальный вариант?
Это нормальный вариант. Делал нечто подобное в одном проекте.
Пользователь мог купить не регестрируясь, но при этом автоматически создавался аккаунт для него (по email)
Это удобно в т.ч. для пользователя. Если он когда-нибудь захочет зарегистрироваться, у нас (у него) автоматом будет вся история его заказов ДО регистрации.