您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

PlaidWebhookController.php 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. }
  32. }
  33. }