** Note: To test PayFlow locally, you can use a service like https://ngrok.com/ to expose your application publicly so that the callback works.
Once you have established an account with PayPal PayFlow Pro,
begin by including the PayFlow Module dependency to your main pom.xml.
<dependency> <groupId>com.broadleafcommerce</groupId> <artifactId>broadleaf-paypal-payflowpro</artifactId> <version>1.0.0-GA</version> <type>jar</type> <scope>compile</scope> </dependency>
Make sure to include the dependency in your
core pom.xml as well:
<dependency> <groupId>com.broadleafcommerce</groupId> <artifactId>broadleaf-paypal-payflowpro</artifactId> </dependency>
You should now begin to setup your environment to work with Broadleaf Commerce PayFlow support.
The first step is to make Broadleaf Commerce aware of your PayPal account credentials.
This is accomplished through environment configuration (see [[Runtime Environment Configuration]]).
Broadleaf allows you to create your own property files per environment (e.g. common.properties, local.properties, development.properties, integrationdev.properties, integrationqa.properties, staging.properties, and production.properties)
You will need to enter the following key/value pairs in the appropriate locations and replace the "?" with your paypal api account details:
You can also store these configs in the Database by utilizing the
blSystemPropertiesService. See the java docs for more details.
Note - This module comes pre-configured with a Spring MVC controller with URL endpoints to handle:
Enable these with your component scan if you would like to use these in your implementation.
If you need to update your firewall with the PayPal PayFlow IP addresses
URL: notify.paypal.com (Payflow Silent Post) IP address: 220.127.116.11
Also, see the Going Live Checklist before going to production:
Also, note that you are unable to increase the default timeout of the
SILENT POST Data Transfer of 30 seconds (confirmed with PayFlow Technical support). This means that your entire Checkout Workflow must return a successful or unsuccessful response within that timeframe. If you have long running processes in your Checkout Workflow (e.g. other Third Party integrations) you may need to architect them in a way that they are called asynchrounously so as not to block the request back to PayPal.
Now that you have your environment set up, let's begin setting up the [[PayPal PayFlow Module]].