This project integrates PayPal into the Drupal Commerce payment and checkout systems. It currently supports off-site payment via PayPal Payments Standard (WPS) and on-site credit card payment via PayPal Payments Pro (WPP). The PayPal WPS integration supports PayPal's Instant Payment Notifications (IPNs) to react to authorizations, captures, voids, and refunds with full logging for testing and debugging.
The 2.x development branch has been expanded to include PayPal Express Checkout (EC) support for off-site checkout with full IPN support. It also includes on-site payment support through the Hosted Checkout Pages service offered by PayPal Payments Advanced (PPA) / Payflow Link (PFL), integrating them with EC where applicable.
Sponsored by Commerce Guys.
Supported payment methods
This project includes a base module that defines some helper functions and a listener for PayPal IPNs. Each payment method offered by PayPal is enabled via its own module:
- PayPal Payments Standard (WPS) - Register an account | View documentation
Redirects from checkout to PayPal and includes IPN support for authorizations during checkout, prior authorization captures, authorizations plus capture during checkout ("Sale"), voids, and refunds.
- PayPal Payments Pro (WPP) - Register an account | View documentation
Supports authorization and authorization plus capture during checkout ("Sale"). Authorization only transactions can be captured on the site or at PayPal with IPN support coming in the next release candidate to mark pending authorization transactions as complete locally that were captured at PayPal.
- PayPal Express Checkout (EC) - Register an account | View documentation
Redirects from the cart form or checkout form to PayPal for hosted checkout and payment, updating the order upon return. The basic EC feature set is available for review in the 2.x version of this module. This should be used instead of the standalone EC modules.
- PayPal Payments Advanced (PPA) / Payflow Link (PFL) - Register a PPA account
Register a PFL account | View documentation
These are functionally equivalent, facilitating on-site payment via PayPal or credit card through an iframe integrated into the checkout process. The primary difference between the two is that PPA is U.S. only and uses PayPal as the merchant account provider while PFL works internationally and lets the merchant use another merchant account provider. A comprehensive integration is available for review in the 2.x version of this module.
Additional payment methods may be added in subsequent branches. If you'd like to see a specific payment method supported, check the issue queue to ensure it hasn't already been requested before opening a new feature request. Recurring billing support using PayPal's native recurring solution will not be incorporated into this module.
Note: as of April 2012, PayPal's service names and integration requirements have changed. As of right now, the modules still refer to PayPal Payments Standard as Website Payments Standard and PayPal Payments Po as Website Payments Pro. However, the configuration and code for these modules is up to date with the most recent versions of their APIs. The labels of these services will be updated in the 2.x branch along with Express Checkout integration.
Frequently Asked Questions
- What do I need to configure in my PayPal profile to use this module?
- Do I need to configure the IPN settings in my PayPal profile?
- What can I do if IPNs are failing?
- What URL do I use for auto return from PayPal Payments Standard?
- Why isn't my currency shown in the currency select list?
Note: you will only receive IPNs from PayPal if you do your testing on a public web server to which PayPal can actually POST notifications. Installations on your localhost or behind HTTP authentication will not be accessible by PayPal, so your PayPal WPS payments will never appear on your orders.
If you have unanswered questions about how PayPal's services work or want to contribute to the development of this project, you can find PDF guides and HTML resource pages for every PayPal service on their developer network. Before requesting a feature or code change, please ensure it is supported by PayPal and provide a link to the documentation backing up your request. Thanks!