Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

PlaidWebhookController.php 1.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Jobs\ProcessTransactionUpdate;
  4. use App\Models\Company;
  5. use Illuminate\Http\Request;
  6. class PlaidWebhookController extends Controller
  7. {
  8. public function handleWebhook(Request $request)
  9. {
  10. $payload = $request->all();
  11. if ($payload['webhook_type'] === 'TRANSACTIONS') {
  12. $this->handleTransactionsWebhook($payload);
  13. }
  14. return response()->json(['message' => 'Plaid Transaction Webhook Received']);
  15. }
  16. private function handleTransactionsWebhook(array $payload): void
  17. {
  18. if ($payload['webhook_code'] === 'DEFAULT_UPDATE') {
  19. $this->handleDefaultUpdate($payload);
  20. }
  21. }
  22. private function handleDefaultUpdate(array $payload): void
  23. {
  24. $newTransactions = $payload['new_transactions'];
  25. $itemId = $payload['item_id'];
  26. $company = Company::whereHas('connectedBankAccounts', static function ($query) use ($itemId) {
  27. $query->where('item_id', $itemId);
  28. })->first();
  29. if ($company && $newTransactions > 0) {
  30. ProcessTransactionUpdate::dispatch($company, $itemId)
  31. ->onQueue('transactions');
  32. }
  33. }
  34. }