У вас серьезное осложнение в задаче - сохранить имеющийся механизм транзакций.
Конечно, правильнее всего было бы слать запрос на сервер для генерации id пустой транзакции, а затем с ней работать. Но поскольку по условиям задачи этого уже не сделать, то остаются только костыли.
Ни apache, ни nginx вам не ответят о судьбе пакета в условиях плохой связи. Всё, что можно делать в данной ситуации, это регистрировать событие по ожиданию подтверждения операции и ждать соответствующего запроса от клиента, чтобы закрыть с признаком успеха или наоборот в случае таймаута.