Adds full Plaid integration as a new banking provider:
Backend:
- Add Plaid to BankingProvider enum (credential fields, account type, usesApiKey)
- Add Plaid to TransactionSource enum
- PlaidClient — wraps Plaid REST API (link/token/create,
/item/public_token/exchange, /transactions/sync,
/accounts/balance/get, /accounts/get)
- PlaidController — createLinkToken + store (exchange public_token
for access_token, create connection with pending accounts)
- PlaidTransactionSyncService — sync via /transactions/sync endpoint
- PlaidBalanceSyncService — sync via /accounts/balance/get
- PlaidSyncer — orchestrator, registered in BankingConnectionSyncerFactory
- plaid config entry in config/services.php
- Routes for /open-banking/plaid/link-token and /open-banking/plaid/connect
Frontend:
- Plaid entry in CONNECT_PROVIDERS registry
- usesSdk flag on ConnectProvider type for SDK-based providers
- Plaid Link flow in useConnectFlow hook (CDN-based Plaid Link SDK)
- ProviderCredentialFields shows description text for SDK providers
Tests:
- PlaidControllerTest (link token, connect, invalid token, validation)
- BankingConnectionSyncerFactoryTest updated for PlaidSyncer