Есть сайт на Laravel, к нему подключена платежка.
Есть код, который срабатывает в случае успешного пополнения.
public static function updateDataUser($waitingPayment, $balance)
{
try {
DB::beginTransaction();
$waitingPayment = HistoryPayment::find($waitingPayment->id);
if ($waitingPayment->status_transaction === 'success') {
return false;
}
$waitingPayment->status_transaction = 'success';
$waitingPayment->save();
$user = User::find($waitingPayment->user->id);
$user->balance += $balance;
$user->save();
DB::commit();
} catch (\Throwable $e) {
DB::rollBack();
return false;
}
ChangeBalance::dispatch($user->id, $user->balance);
return true;
}
Как видно, сначала идет присвоение статуса 'success' к операции, а потом уже увеличиваем баланс пользователя.
Проблема в том, что иногда бывает такое, когда статус 'success' присваивается, а баланс просто не прибавляется. Я не понимаю почему это происходит.
Человек пишет в тех.поддержку, мы смотрим на транзакции, видим успешную, а баланса нету и истории покупок тоже. Т.е. реально не засчитали и мы вручную его пополняем. Но естественно это надо исправить.
В чем может быть проблема?