dbp/relay-mono-connector-generic-bundle
composer require dbp/relay-mono-connector-generic-bundle
config/bundles.php to include:
return [
// ...
Dbp\Relay\MonoBundle\DbpRelayMonoBundle::class => ['all' => true],
Dbp\Relay\MonoConnectorGenericBundle\DbpRelayMonoConnectorGenericBundle::class => ['all' => true],
Dbp\Relay\CoreBundle\DbpRelayCoreBundle::class => ['all' => true],
];
php bin/console cache:clear
config/packages/dbp_relay_mono_connector_generic.yaml:
dbp_relay_mono_connector_generic: {}
To send a test request via Relay’s Mono API:
use Dbp\Relay\MonoConnectorGenericBundle\Service\RelayMonoConnector;
class PaymentController extends AbstractController
{
public function __invoke(RelayMonoConnector $connector)
{
$response = $connector->sendRequest(
'POST',
'/mono/payments',
['amount' => 100, 'currency' => 'EUR'],
['Authorization' => 'Bearer YOUR_RELAY_API_KEY']
);
return $this->json($response);
}
}
Request Handling
Use the RelayMonoConnector service to interact with Relay’s Mono API:
$connector->sendRequest(
string $method,
string $endpoint,
array $data = [],
array $headers = []
);
$connector->sendRequest('POST', '/mono/payments', [
'amount' => 5000, // cents
'currency' => 'EUR',
'reference' => 'ORDER_123',
]);
Webhook Validation
Validate incoming Relay webhooks using the RelayMonoWebhookValidator:
use Dbp\Relay\MonoConnectorGenericBundle\Validator\RelayMonoWebhookValidator;
$validator = new RelayMonoWebhookValidator();
$isValid = $validator->validate(
$rawPayload,
$signatureHeader,
'YOUR_WEBHOOK_SECRET'
);
Event-Driven Integration Subscribe to Relay events via Symfony’s event dispatcher:
# config/services.yaml
services:
App\EventListener\RelayMonoEventListener:
tags:
- { name: kernel.event_listener, event: relay.mono.payment.created, method: onPaymentCreated }
RelayMonoConnector over instantiating it directly.dbp_relay_mono_connector_generic.yaml for:
dbp_relay_mono_connector_generic:
api_base_url: 'https://api.relay.example.com' # Override default
timeout: 30 # Seconds
dbp_relay_mono_connector_generic:
debug: true
Authentication
Authorization headers cause 401 Unauthorized errors.$headers = ['Authorization' => 'Bearer ' . config('services.relay.api_key')];
Webhook Signatures
X-Relay-Signature header is malformed.Rate Limiting
timeout or retry logic is misconfigured.dbp_relay_mono_connector_generic:
timeout: 10
max_retries: 3
Idempotency
idempotency_key parameter:
$connector->sendRequest('POST', '/mono/payments', [
'amount' => 1000,
'idempotency_key' => uniqid(),
]);
debug: true in config to log raw API responses.relay.mono.* events.RelayMonoConnector in tests:
$this->mock(RelayMonoConnector::class)
->shouldReceive('sendRequest')
->once()
->andReturn(['status' => 'success']);
Custom Responses
Extend the RelayMonoResponse class to add domain-specific logic:
class CustomRelayMonoResponse extends RelayMonoResponse
{
public function isPaymentSuccessful(): bool
{
return $this->getData()['status'] === 'completed';
}
}
Middleware
Add request/response middleware via Symfony’s kernel.request/kernel.response events:
public function onKernelRequest(GetResponseEvent $event)
{
$request = $event->getRequest();
if ($request->attributes->get('_route') === 'relay_mono_webhook') {
$request->headers->set('X-Custom-Header', 'value');
}
}
Configuration Overrides Dynamically override settings per environment:
# config/packages/dev/dbp_relay_mono_connector_generic.yaml
dbp_relay_mono_connector_generic:
debug: true
api_base_url: 'https://sandbox.relay.example.com'
How can I help you explore Laravel packages today?