Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message
Paypal Ipn Bundle

Paypal Ipn Bundle Laravel Package

freddyhaddad/paypal-ipn-bundle

A Symfony bundle for validating PayPal Instant Payment Notifications (IPN), with configurable listener services to verify payments and handle confirmed or invalid IPN callbacks in your application.

View on GitHub
Deep Wiki
Context7

A Symfony2 bundle for working with the PayPal IPN (Instant Payment Notification) service

Frequently asked questions about Paypal Ipn Bundle
Is freddyhaddad/paypal-ipn-bundle compatible with Laravel?
No. It is a Symfony2 bundle built around the Symfony bundle contract: a Bundle subclass, a DI extension, and YAML/XML service definitions. Laravel has no bundle system, so nothing here is auto-discovered or booted, and the framework-level fit is effectively zero. The only reusable asset is the roughly 100 to 150 lines of IPN verification logic inside the listener.
Why does composer require freddyhaddad/paypal-ipn-bundle fail in my Laravel project?
The package's symfony/* constraints target 2.x-era Symfony components, while a modern Laravel app pins symfony/http-foundation, symfony/console and symfony/process at ^6 or ^7. Composer resolves that as a hard conflict before any code question ever comes up. Using --ignore-platform-reqs, a replace block, or a fork with loosened constraints buys you nothing, because the boot path still assumes a Symfony kernel.
How do I validate a PayPal IPN in Laravel without this bundle?
Register a POST route outside CSRF and auth, read the raw body with $request->getContent(), and dispatch a queued job. In the job, post that exact raw body back to https://ipnpb.paypal.com/cgi-bin/webscr (or ipnpb.sandbox.paypal.com) using Http::asForm() with cmd=_notify-validate. Assert the response body is exactly VERIFIED, persist the event keyed on a unique txn_id, and return 200 with an empty body immediately so PayPal does not retry.
Which Laravel and Symfony versions does this PayPal IPN bundle support?
It targets Symfony 2.x, and Symfony 2.8 reached end of life in November 2018. It offers no Laravel version support at all, because it was never a Laravel package. On Laravel 10 or 11 with Symfony 6 or 7 components, dependency resolution will not succeed.
Can I copy the IPN verification logic from this bundle into my Laravel app?
Yes, and that is the recommended approach: treat the repository as a reference implementation to read, not a dependency to install. The core flow is small, posting the raw payload back to PayPal, checking for VERIFIED, then persisting and reconciling. Budget roughly one to two hours to read and reimplement it, then write your own tests around the parts the bundle never handled.
What does the bundle's configurable listener service actually do?
It provides an IPN listener that receives PayPal's callback, posts the payload back for validation, and then dispatches to the handler services you configure for confirmed or invalid IPNs. It also typically ships a Doctrine ORM entity for persisting raw IPN payloads. All of that is wired through Symfony dependency injection, so in Laravel you replace it with a route, a queued job, and an Eloquent model.
How should I test PayPal IPN handling in a Laravel application?
Fake the outbound validation call with Http::fake() so it returns VERIFIED or INVALID, then assert your persisted event state and order transitions for each case. Cover replays of the same txn_id, out-of-order delivery, and payment_status values such as Pending with a reason. Use the PayPal sandbox IPN simulator for at least one end-to-end pass. This bundle ships nothing to help here, since it assumes a Symfony test kernel.
What production problems does this bundle not solve for me?
Replay and duplicate txn_id handling, out-of-order delivery, payment_status semantics versus pending_reason, and cross-checking mc_currency and mc_gross against your own order record. It also does not enforce receiver_email allow-listing, and the charset and encoding trap in the validation post-back can silently return INVALID. Enforce idempotency with a unique database index on txn_id rather than with application-level if statements.
Is PayPal IPN deprecated, and should I use Webhooks instead?
IPN predates the REST Webhooks API and is retained mainly for grandfathered Standard and legacy merchant accounts. New integrations should use Webhooks with PAYPAL-TRANSMISSION-SIG verification, which is the direction PayPal actively steers merchants toward. Adopting IPN today means adopting a protocol you may need to migrate off later, so first confirm the merchant account genuinely requires it.
Is this package maintained, and what are the alternatives for Laravel?
It shows zero stars, zero dependents, a single author and no downstream consumers, and it is tied to an EOL Symfony branch with no security disclosure channel or CVE tracking. There is no Laravel-specific equivalent worth adopting either, so the sane alternative is a small in-house IPN handler or a migration to PayPal Webhooks. Pulling an unmaintained Symfony2 bundle into a production container only expands attack surface for no functional gain.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console