Я создаю приложение на Laravel для пополнения мобильных телефонов с помощью стороннего REST API. У моих пользователей в моем приложении есть баланс, который я извлекаю при завершении пополнения счета. В рамках транзакции я создаю запись пополнения счета пользователя и извлекаю из нее баланс, а в случае любой ошибки стороннего REST API даю откат. Но у меня есть ошибка, если сторонний REST API дает мне тайм-аут, система выполняет откат, и я рискую сделать перезарядку без регистрации в моем приложении или дисконтирования баланса пользователя, который его сделал.
Это фрагмент моего кода:
try {
$user = Auth::user();
$user->wallet -= $rechargePrice;
$transaction = new Transaction();
$transaction->amount = -$rechargePrice;
$transaction->balance = $user->wallet;
$transaction->status = Transaction::STATUS_COMPLETED;
$transaction->type = Transaction::TYPE_RECHARGE;
$transaction->user()->associate($user);
DB::beginTransaction();
$successU = $user->update();
$successT = $transaction->save();
if (!$successT || !$successU) {
throw new Exception('Message');
}
$thirdPartyService->recharge($fullPhone, $amount);
DB::commit();
} catch (Exception $ex) {
DB::rollBack();
}
Любые предложения о том, как предотвратить это, будут полезны. Заранее спасибо