Проблема тайм-аута REST API транзакции и стороннего поставщика - PullRequest
0 голосов
/ 17 января 2020

Я создаю приложение на 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();
}

Любые предложения о том, как предотвратить это, будут полезны. Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...