Kernel, EventDispatcher, and Configuration systems makes direct integration non-trivial.EventListener → Laravel Service Providers/Events).session or cache).Service Container (e.g., bind()/singleton()).Router → Laravel’s RouteServiceProvider (redirect logic must be adapted).config/interkassa.php (with validation via config/caching).Hash::equals() for HMAC verification).InterkassaGateway service) that calls Interkassa’s API directly (via Guzzle or cURL)..env should be used instead.Mockery or Laravel’s Http tests).Bundle with a Laravel ServiceProvider to register Interkassa clients (e.g., InterkassaService).Interkassa::charge($amount)) via Laravel’s Facade pattern.Event system for payment lifecycle hooks (e.g., PaymentProcessing, PaymentFailed).VerifyInterkassaSignature middleware for webhook validation.HttpClient with Laravel’s Http client or Guzzle.Validator for request payloads (e.g., webhook data).Log facade for debugging.laravel-interkassa) that:
/src
/Services/InterkassaClient.php # Guzzle-based API calls
/Exceptions/InterkassaException.php
/Facades/Interkassa.php
/Http/Middleware/VerifySignature.php
DependencyInjection/Configuration.php → Laravel config/interkassa.php.EventListener → Laravel Event listeners.Route::post('/interkassa/webhook', ...).Process facade (e.g., for CLI-based payments).| Symfony Component | Laravel Equivalent | Notes |
|---|---|---|
EventDispatcher |
Laravel Event system |
Use event(new PaymentProcessed()). |
Configuration |
Laravel config() + validation |
Use config/caching for YAML parsing. |
Router |
Laravel RouteServiceProvider |
Manual route definitions required. |
HttpClient |
Guzzle or Laravel Http |
Inject client into service. |
Twig templates |
Laravel Blade | Replace if UI is needed. |
/interkassa/webhook).secret_key (e.g., hash_hmac('sha256', $payload, $secret)).database (e.g., payments table) for reconciliation.InterkassaClient for API calls.InterkassaService to handle business logic (e.g., createPayment(), verifyWebhook()).return redirect()->route('payment.success')).InterkassaClient (mock Guzzle).config/caching if schema changes (e.g., new config keys).Log facade for Interkassa-related errors (e.g., failed API calls).InterkassaDebugger trait to log raw requests/responses in development.APP_URL matches Interkassa’s callback URLs.amount and currency fields align with Laravel’s Money package (if used).retry() helper.PaymentGateway) to switch providers later.queue:work to process Interkassa webhooks asynchronously (e.g., dispatch(new ProcessWebhook($payload))).payments table on transaction_id for fast lookups.How can I help you explore Laravel packages today?