adyen/php-webhook-module

Webhook module for Adyen Payment Integrations

1.0.0 2024-04-08 11:45 UTC

README

Adyen library for handling notification webhooks.

Installation

You can use Composer. Follow the installation instructions if you do not already have Composer installed.

composer require adyen/php-webhook-module

In your PHP script, make sure to include the autoloader:

require __DIR__ . '/vendor/autoload.php';

Alternatively, you can download the release on GitHub.

Usage

Authenticate and validate incoming webhook request:

// Setup NotificationReceiver with dependency injection or create an instance as follows
$notificationReceiver = new \Adyen\Webhook\Receiver\NotificationReceiver(new \Adyen\Webhook\Receiver\HmacSignature);

// Authorize notification
if (!$notificationReceiver->isAuthenticated(
    $request['notificationItems'][0]['NotificationRequestItem'],
    YOUR_MERCHANT_ACCOUNT,
    YOUR_NOTIFICATION_USERNAME,
    YOUR_NOTIFICATION_PASSWORD
)) {
    throw new AuthenticationException();
}

// Process each notification item
foreach ($request['notificationItems'] as $notificationItem) {
    // validate the notification
    if ($notificationReceiver->validateHmac($notificationItem, YOUR_HMAC_KEY)) {
       // save notification to your database
       $this->databaseService->saveNotification($notificationItem); 
    }
}

return new JsonResponse('[accepted]');

Process notification to get new payment state:

$notificationItem = \Adyen\Webhook\Notification::createItem([
    'eventCode' => $notification['eventCode'],
    'success' => $notification['success']
]);

$processor = \Adyen\Webhook\Processor\ProcessorFactory::create(
    $notificationItem,
    $currentPaymentState,
    $this->logger
);

$newState = $processor->process();

NB: set $currentPaymentState to one of the values in \Adyen\Webhook\PaymentStates

Documentation

Visit our documentation page to learn more about handling notifications.

Contributing

We encourage you to contribute to this repository, so everyone can benefit from new features, bug fixes, and any other improvements. Have a look at our contributing guidelines to find out how to raise a pull request.

Support

If you have a feature request, or spotted a bug or a technical problem, create an issue here. For other questions, contact our Support Team.

Licence

This repository is available under the MIT license.