Следственно, мне нужно создать таблицу платежей и сначала проверять обработан ли платеж в БД (SELECT FOR UPDATE) и если нет, то запрос к QIWI API?
Нет. Не надо делать запросы внутри транзакции. Можешь сделать запрос в апи киви, затем сделать селект фор апдейт, затем делать всю твою работу с другими таблицами и в конце закоммитить транзакцию