Предлагаю переосмыслить то, что вы делаете. Я никогда не испытывал ни одного случая использования, когда требуются эти специальные знания. Следующий идентификатор - это особая деталь реализации, и я бы не стал рассчитывать, что он безопасен для ACID.
Сделайте одну простую транзакцию, которая обновит вставленную строку с последним идентификатором:
BEGIN;
INSERT INTO payments (date, item, method)
VALUES (NOW(), '1 Month', 'paypal');
UPDATE payments SET payment_code = CONCAT("sahf4d2fdd45", LAST_INSERT_ID())
WHERE id = LAST_INSERT_ID();
COMMIT;