This module expands upon the Commerce Paypal module that Website Payments Standard and Website Payments Pro, by providing an option for Paypal Express Checkout. The main differences between Express Checkout and the existing implementations include:
- Express Checkout is globally available (unlike Website Payments Pro, which is restricted to a few countries)
- It is really easy to open a Business Account that provides the Paypal Express Checkout option.
- The redirection to Paypal Payment page doesn't have all the parameters sent via POST.
This implementation promotes the use of an API to configure the behavior of the
Paypal Payment Page. All requests with sensitive information travel via HTTPS.
- Express Checkout allows more complete control than the Standard version over the final stages of checkout, including payment processing and confirmation.
- Express Checkout is considered a more advanced solution than the Standard version, and is recommended by Paypal.
- Express Checkout allows more customizations than the Standard version. For example:
- add a logo and custom header colors in the checkout page on Paypal.com.
- decide if creating a Paypal account is mandatory or not for the customer.
- autofill the customer's address in the Paypal Form.
- select the main payment form at Paypal (Paypal account or Credit Card)
- select whether the Paypal confirmed shipping address is mandatory or not
- select whether to display the shopping cart items in payment page
- Many of the backend operations that are executed in the Paypal backend with the standard method may be integrated in Drupal's backend using API calls. In this module we integrate the option to execute the authorization capture with Commerce. In a similar manner, refunds, sale reports, etc. could be integrated.
- Doesn't require the use of IPN (instant payment notifications) because all related transaction info is instantly received from the API call responses.
The Paypal Payment page uses three steps to take payment:
- SetExpressCheckout: this step allows one to configure the Payment page and retrieves a Token that is used to redirect the client to the Paypal page.
- GetExpressCheckoutDetails: once the user enters all their payment information on the Paypal site, s/he continues and comes back to the vendor site. This method is called to get all the details of the transaction and do all required validation.
- DoExpressCheckoutPayment: this call executes the Payment.
The Paypal API may be implemented via SOAP or NVP protocols. This module uses NVP, because it is simpler, and as this API only provides a few methods, it would be overly complex to add a SOAP layer.
- Thanks to Ryan Szrama, who did the implementation of Paypal Website Payment Standard that was the example I followed to learn the Commerce Paypal Payment API.
- The development of this module is sponsored by Bluespark.