Как правильно реализовать бронь товара до оплаты в интернет магазине цифровых товаров?
Посмотрите на существующие интернет-магазины. Чтобы оформить заказ, нужно подтвердить регистрацию через e-mail или через SMS. Это уже потребует некоторой упоротости от ботовода, чтобы обойти. В отдельных случаях менеджер перезванивает покупателю для подтверждения заказа. Это отсекает 99.9% шутников, хотя плохо работает при большом количестве нормальных заказов.

А вообще давайте вспомним старую историю "Хакер в столовой" или "Хакер против директора столовой" https://xakep.ru/2006/12/16/35784/ Особенно день 194-ый похож на ваш вопрос. Лучше не уподобляться персонажу этой истории.
Это фундаментальная проблема онлайн-магазинов не имеющая решения: либо вы реально блокируете товар при его наличии в корзине, что гарантирует пользователю покупку, но создаёт проблемы вам, либо наличие товара несёт чисто информационную функцию, что снижает лояльность пользователей из-за "к сожалению данный товар уже недоступен к покупке".

Самый распространённый подход - блокировка товара перед непосредственным переходом к оплате на короткое время, за которое пользователь должен произвести оплату. Этот вариант хорош по двум причинам:
1. Неограниченная по времени корзина - не надо принимать сложное решение о времени реальной блокировки товара в корзине.
2. Короткое время реальной блокировки товара (10-30 минут) с предварительной проверкой наличия оного.
Конечно, всё ещё остаётся вариант ботов, в этом случае можно будет вообще убрать реальную блокировку и проводить денежную транзакцию через hold/refund, что будет бесплатно с точки зрения комиссий.