Skip to content

Lifecycle Events ​

The package emits typed Laravel events throughout the payment lifecycle. You can listen to these events for audit logging, notification dispatching, or internal analytics.


Available Events ​

Event ClassPayloadDispatched When
Eamirgh\SnappPay\Events\PaymentTokenCreated$event->result, $event->requestPayment token was generated.
Eamirgh\SnappPay\Events\PaymentVerified$event->paymentToken, $event->transactionIdPayment was verified.
Eamirgh\SnappPay\Events\PaymentSettled$event->paymentToken, $event->transactionIdPayment was settled.
Eamirgh\SnappPay\Events\PaymentReverted$event->paymentToken, $event->transactionIdPayment was reverted.
Eamirgh\SnappPay\Events\PaymentCancelled$event->paymentToken, $event->transactionIdOrder was cancelled.
Eamirgh\SnappPay\Events\PaymentUpdated$event->paymentToken, $event->transactionId, $event->requestOrder items were updated.

Registering Event Listeners ​

In your AppServiceProvider or EventServiceProvider:

php
namespace App\Providers;

use Illuminate\Support\Facades\Event;
use Illuminate\Support\ServiceProvider;
use Eamirgh\SnappPay\Events\PaymentSettled;
use Eamirgh\SnappPay\Events\PaymentCancelled;
use App\Listeners\SendPaymentReceipt;
use App\Listeners\NotifyWarehouseOfCancellation;

class AppServiceProvider extends ServiceProvider
{
    public function boot(): void
    {
        Event::listen(PaymentSettled::class, SendPaymentReceipt::class);
        Event::listen(PaymentCancelled::class, NotifyWarehouseOfCancellation::class);
    }
}

Example Listener ​

php
namespace App\Listeners;

use Eamirgh\SnappPay\Events\PaymentSettled;
use Illuminate\Support\Facades\Log;

class SendPaymentReceipt
{
    public function handle(PaymentSettled $event): void
    {
        Log::info('SnappPay order settled', [
            'payment_token' => $event->paymentToken,
            'transaction_id' => $event->transactionId,
        ]);

        // Send SMS/Email receipt, trigger invoice creation, etc.
    }
}

Released under the MIT License.