Configuration
Orchestration's flexibility comes from its extensive configuration options. Here, we'll guide you through the essential settings to get you up and running.
Global Configuration
Upon initializing orchestration using the setup wizard, a 'config/orchestration.php' file is created. This serves as your global configuration, applying default settings across all services unless overridden by service-specific configurations.
Initial Setup
Your orchestration config file should initially look like this:
return [
'defaults' => [
'driver' => 'config',
],
'services' => [
'checkout' => 'checkout',
],
];
Key Configuration Elements
- Defaults: Set the default driver to resolve your services.
- Drivers: Register custom drivers here, if any.
- Test Mode: Control the test mode application-wide.
- Model Overrides: Override orchestration models.
Customizing Defaults and Drivers
Set your preferred default driver and register any custom drivers you've developed.
return [
'defaults' => [
'driver' => 'config',
],
'drivers' => [
'config' => \Payavel\Orchestration\Drivers\ConfigDriver::class,
'custom' => \App\Services\Drivers\CustomDriver::class,
],
];
⚠️ Warning
When registering custom drivers, make sure to also include any standard drivers if needed.
Enabling Test Mode
Toggle test mode via the configuration file or '.env' for broader testing flexibility.
return [
'test_mode' => env('ORCHESTRATION_TEST_MODE', false),
];
Overriding Models
If needed, specify custom models to extend or modify the prebuilt orchestration models.
return [
'models' => [
\Payavel\Orchestration\Models\Provider::class => \App\Models\Provider::class,
\Payavel\Orchestration\Models\Merchant::class => \App\Models\Merchant::class,
],
];
📝 Note
Overriding models only applies when using the database driver.
Service-Specific Configuration
Configurations within a service's dedicated file (e.g., 'checkout.php') take precedence over global settings ('orchestration.php').
// config/orchestration.php
return [
'services' => [
'checkout' => 'checkout',
],
'test_mode' => env('ORCHESTRATION_TEST_MODE', false),
];
// config/checkout.php
return [
'test_mode' => env('CHECKOUT_TEST_MODE', false),
];
You can set up configurations for each service in the 'orchestration.php' file. This is useful for the database driver, which doesn't rely on settings in the service-specific config files.
return [
'services' => [
'checkout' => [
'test_mode' => env('CHECKOUT_TEST_MODE', false),
],
],
'test_mode' => env('ORCHESTRATION_TEST_MODE', false),
];
Configuring Services
- Define service-specific behaviors, such as test modes or default parameters.
- Register providers, merchants, and their respective configurations.
Setting Defaults
Set default driver, provider, and merchant for the service to streamline gateway interactions.
return [
'defaults' => [
'driver' => 'config',
'provider' => 'adyen',
'merchant' => 'payavel',
],
];
⚠️ Warning
It only makes sense to specify a default merchant when it is application specific, where you don't orchestrate multiple accounts for a single service provider.
Configuring Testing
Assign a fake gateway for the service to facilitate isolated testing.
return [
'test_gateway' => \App\Services\Checkout\FakeCheckoutRequest::class,
];
Registering Providers and Merchants
- Detail each provider's configuration.
- List merchants using the service and specify their provider configurations.
return [
'providers' => [
'adyen' => [
'gateway' => \App\Services\Checkout\AdyenCheckoutRequest::class,
],
'stripe' => [
'gateway' => \App\Services\Checkout\StripeCheckoutRequest::class,
],
],
'payavel' => [
'providers' => [
'adyen' => [
'api_key' => env('ADYEN_PAYAVEL_API_KEY'),
],
'stripe' => [
'api_key' => env('STRIPE_PAYAVEL_API_KEY'),
],
],
],
];
By following these guidelines, you can tailor orchestration to fit your application's needs, ensuring a smooth integration and management process for multiple services.