From 27d5cd75f376014cc77a8cb8ece6cc9f14b26231 Mon Sep 17 00:00:00 2001 From: hashbro Date: Thu, 27 Aug 2026 01:44:47 +0800 Subject: [PATCH] feat: ds --- .../Tokenview/TokenviewMonitorService.php | 3 ++ tests/Feature/TokenviewWebhookTest.php | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/app/Services/Tokenview/TokenviewMonitorService.php b/app/Services/Tokenview/TokenviewMonitorService.php index f2a274e..660a894 100644 --- a/app/Services/Tokenview/TokenviewMonitorService.php +++ b/app/Services/Tokenview/TokenviewMonitorService.php @@ -83,6 +83,9 @@ class TokenviewMonitorService } $tokenSymbol = strtoupper(trim((string) ($payload['tokenSymbol'] ?? ''))); + if (in_array($coin, ['TRX', 'TRON'], true) && ! in_array($tokenSymbol, ['TRX', 'USDT'], true)) { + return; + } $value = $payload['value'] ?? null; $tokenValue = $payload['tokenValue'] ?? null; diff --git a/tests/Feature/TokenviewWebhookTest.php b/tests/Feature/TokenviewWebhookTest.php index 95741fe..30ab7e0 100644 --- a/tests/Feature/TokenviewWebhookTest.php +++ b/tests/Feature/TokenviewWebhookTest.php @@ -184,6 +184,35 @@ class TokenviewWebhookTest extends TestCase }); } + #[Test] + public function webhook_ignores_tron_when_token_is_not_trx_or_usdt(): void + { + config(['coruna.tokenview.sign_key' => '']); + $addr = $this->seedMonitoredAddress([ + 'address' => 'TKKyetwdwuv6fTWVMPsdQUZYwB7yiNwRp6', + 'chain_type' => 'TRON', + 'trx' => 1.0, + 'usdt' => 10.0, + 'eth' => null, + ]); + + $payload = [ + 'address' => 'TKKyetwdwuv6fTWVMPsdQUZYwB7yiNwRp6', + 'txid' => 'tron-txid-usdc-skip-1', + 'coin' => 'TRX', + 'tokenSymbol' => 'USDC', + 'tokenValue' => '99', + 'value' => '0.1', + ]; + + $this->postJson('/hooks/tokenview', $payload)->assertOk()->assertSee('ok'); + + $addr->refresh(); + $this->assertEqualsWithDelta(1.0, (float) $addr->trx, 0.0000001); + $this->assertEqualsWithDelta(10.0, (float) $addr->usdt, 0.0000001); + $this->assertSame(0, TokenviewEvent::query()->count()); + } + #[Test] public function webhook_ignores_address_when_monitor_off(): void {