From 22d711435f2dbf271aa7e69de6e036aa7a7702c8 Mon Sep 17 00:00:00 2001 From: dev Date: Tue, 10 Aug 2021 16:25:44 -0700 Subject: [PATCH] Try to fix payout issue The sweep_all seems to throw timeout errors sometimes (not always) which causes saving the outbound transaction to fail which is very problematic. Now we will run that last and save the outbound transactions before hand. This hopefully should fix the issue --- app/Jobs/ProcessPayments.php | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/app/Jobs/ProcessPayments.php b/app/Jobs/ProcessPayments.php index bd5f102..3662a42 100644 --- a/app/Jobs/ProcessPayments.php +++ b/app/Jobs/ProcessPayments.php @@ -48,6 +48,25 @@ class ProcessPayments implements ShouldQueue $open_wallet = $walletRPC->open_wallet(config('app.xmr_wallet_name'), ''); $account_indexes = Meme::pluck('account_index')->toArray(); foreach ($account_indexes as $account_index) { + // Outbound tips + $get_transfers_out = $walletRPC->get_transfers('out', $account_index); + if (isset($get_transfers_out['out'])) { + foreach ($get_transfers_out['out'] as $transfer) { + $meme_out = Meme::where('address', $transfer['address'])->first(); + $tip_exists_out = Tip::where('txid', $transfer['txid'])->first(); + if ($meme_out && !$tip_exists_out) { + $tip_out = new Tip(); + $tip_out->meme_id = $meme_out->id; + $tip_out->amount = $transfer['amount']; + $tip_out->txid = $transfer['txid']; + $tip_out->is_deposit = 0; + $tip_out->save(); + $meme_out->payment_pending = 0; + $meme_out->save(); + } + } + } + // Inbound tips $get_transfers = $walletRPC->get_transfers('in', $account_index); if (isset($get_transfers['in'])) { foreach ($get_transfers['in'] as $transfer) { @@ -60,7 +79,6 @@ class ProcessPayments implements ShouldQueue $tip->txid = $transfer['txid']; $tip->is_deposit = 1; $tip->save(); - $meme = Meme::where('address', $transfer['address'])->firstOrFail(); $meme->payment_pending = 1; $meme->save(); } @@ -84,16 +102,6 @@ class ProcessPayments implements ShouldQueue if ($balance['unlocked_balance'] > 0 && $balance['balance'] === $balance['unlocked_balance']) { try { $send_funds = $walletRPC->sweep_all($meme->user->address, '', $meme->account_index); - if ($send_funds['amount_list']) { - $tip = new Tip; - $tip->meme_id = $meme->id; - $tip->amount = $send_funds['amount_list'][0]; - $tip->txid = $send_funds['tx_hash_list'][0]; - $tip->is_deposit = 0; - $tip->save(); - $meme->payment_pending = 0; - $meme->save(); - } } catch (\Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; }