josmarh / jvzoo-ipn
A Laravel package for handling JVZoo Instant Payment Notifications (IPN) with clean event-driven architecture.
v0.1.0
2026-05-16 12:20 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0|^11.0|^12.0|^13.0
- illuminate/database: ^10.0|^11.0|^12.0|^13.0
- illuminate/events: ^10.0|^11.0|^12.0|^13.0
- illuminate/http: ^10.0|^11.0|^12.0|^13.0
- illuminate/queue: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
README
A Laravel package for handling JVZoo Instant Payment Notifications (IPN) with clean event-driven architecture.
Features
- JVZoo IPN webhook handling
- Signature verification
- Duplicate transaction protection (idempotent processing)
- Event-driven architecture
- Transaction logging
- Configurable routes
- Laravel auto-discovery support
Installation
composer require josmarh/jvzoo-ipn
Publish Config
php artisan vendor:publish --tag=jvzoo-ipn-config
How It Works
- JVZoo sends IPN request
- Package verifies signature
- Transaction is stored
- Event is dispatched
- Your application handles user logic
Events
SaleReceived
Triggered when a successful payment occurs.
RefundReceived
Triggered when a refund occurs.
Example Listener
Event::listen(SaleReceived::class, function ($event) { // Create user, assign plan, etc. });
Configuration
return [ 'secret_key' => env('JVZOO_SECRET'), 'route_prefix' => 'jvzoo', ];
Webhook URL
POST https://your-domain.com/jvzoo/ipn
Security
This package verifies JVZoo IPN signatures before processing any request to ensure data integrity and prevent unauthorized requests.