твой код без транзакций гарантирует, что при падение бд, перезапуске редиса, отвале платежной системы и т д консистентность данных будет?
Идентификатор платежа уникальный ты формируешь?