Welcome to the Intershop PayPal PLUS connector. The service connector adds PayPal PLUS to your Intershop installation. The connector is built upon the new payment API shipped with Intershop Commerce Management 7.7.
This release note provides important product information, including version information and dependencies. It also outlines the basic setup and configuration steps.
This delivery and the accompanying documentation are valid for the following combinations of software versions:
Intershop | PayPal PLUS Connector |
---|---|
7.7 | 3.1.9 |
The next table provides information about the cartridges included in the package. Not all of these cartridges are required.
Cartridge | Description | Required |
---|---|---|
ac_payment_paypal_plus | Includes all base functionality and business logic which is used both in the storefront and the Commerce Management application | ![]() |
ac_payment_paypal_plus_bo | Includes non-standard functionality which is available solely in the Commerce Management application E.g., this is the initialization of the payment connector which process also creates PayPal experience profile | |
as_responsive_paypal_plus | Enables PayPal PLUS payment connector for the following application types:
The cartridge is optional, can be downloaded separately from Intershop Product Calendar and may be included if the project uses the responsive starter store. Unzip the file to your multi-project folder next to you responsive source files. It could be skipped if the custom project does not support these application types or PayPal PLUS is not required in these application types. | ![]() |
ac_payment_paypal_plus_responsive_sf | Includes some additional functionality which is relevant only for the responsive storefront reference application The cartridge is optional, can be downloaded separately from Intershop Product Calendar and may be included in case that the project is based on the responsive storefront reference application. Unzip the file to your multi-project folder next to you responsive source files. The referenced cartridge app_sf_responsive may be renamed in project and has to be referenced in build.gradle file with the customized naming again. | ![]() |
The PayPal PLUS Service Connector 3.+ is based on the Payment API 2.0.
The PayPal PLUS Connector may be used out of the box for the following application types:
Application Type | Application Type ID | Description |
---|---|---|
B2C WebShop |
| Business to consumer channel |
SMB WebShop | intershop.SMBResponsive | Small and medium B2B channel |
The PayPal PLUS payment connector offers the display of a payment wall in which the storefront users (customers) may choose between several payment methods:
More methods may be added in the future. Some may be excluded depending on the contract between PayPal and the merchant. The next figure shows the display of the payment wall in the third step of the checkout.
When the users make their choice, they are redirected after checkout to a PayPal hosted page where the actual payment takes place. Then the users are redirected back to the webshop site of the merchant. No sensitive information is stored by the merchant.
The connector supports the following operations:
Operation | Description |
---|---|
Capture | A capture is automatically performed after a redirect back to the merchant site. A workflow that performs authorization and capture separately is currently not supported. |
Refund | Option to return (parts of) the captured amount. Also supports multiple refunds. |
Note
Operations that are performed in the PayPal Web interface may be synchronized with Intershop Commerce Management using webhooks.
Webhooks are user-defined HTTP callbacks that receive events for the subscribed event types. The main purpose of these events is the synchronization of the payment status between Intershop Commerce Management and PayPal. This way, e.g., a refund can be triggered from both, the Intershop Commerce Management application and the merchant UI hosted by PayPal. For detailed information about webhooks, see the PayPal documentation at PayPal Webhooks Overview.
Currently Intershop Commerce Management supports the following webhook event types:
Event Type | Description |
---|---|
PAYMENT.SALE.COMPLETED | This event is triggered when a sale is completed. |
PAYMENT.SALE.DENIED | This event is triggered when the sale status changes from pending to denied. |
PAYMENT.SALE.PENDING | This event is triggered when the sale status changes to pending. |
PAYMENT.SALE.REFUNDED | This event is triggered when the sale is refunded by the merchant. |
PAYMENT.SALE.REVERSED | This event is triggered when the sale is reversed by PayPal. |
The webhook payload is digitally signed by PayPal. If the signature cannot be verified, the system will discard the event. Webhook validation can be switched on/off by a file-based configuration property:
intershop.payment.PAYPAL_PLUS.SkipWebhookSignatureVerification = false
Note
For security reasons you should switch off the validation only for testing purposes.
The following Intershop Commerce Management endpoint listens for webhook events:
http://<host>:<port>/INTERSHOP/web/WFS/inSPIRED-inTRONICS-Site/en_US/-/USD/PayPalPlus-Webhook
Here host and port are the host and the port where the Intershop Commerce Management system is available. When a webhook event is received, Intershop Commerce Management will synchronize a transaction with PayPal. Transactions can have different statuses in both systems because the same operations (e.g., a refund) may be performed both in the Intershop Commerce Management back office and also in the merchant UI at PayPal.
An experience profile defines certain behavior and branding of the PayPal hosted payment pages. Currently the following branding settings are supported:
The following behavior is enforced by the payment connector when an experience profile is created:
Only one experience profile is created per channel. Multiple experience profiles may exist for single API keys. Experience profiles are created or updated implicitly when the connector is initialized.
This section outlines the basic setup steps. Note Managing and deploying the PayPal PLUS Service Connector requires a continuous integration environment set up and configured as described in Cookbook - Setup CI Infrastructure (valid to Gradle Tools 2.7). The package is available via Intershop's Public Nexus. To add the PayPal Service Connector into your Intershop Commerce Management system, you may: Incorporate the cartridge into an already existing assembly. Example follows. In the build.gradle file of the assembly add: Furthermore you have to adapt the ac_payment_paypal_plus_responsive_sf/build.gradle file in the following way: Now you have to insert the following lines into file: „intershopbuild.version“ Note The assembly in which the PayPal connector works should exclude the jaxb-impl artifact. That's the reason for the entry in the configuration.all closure. This is required due to version conflicts with the jersey client. The jersey client is used for consuming RESTful services provided by PayPal. For details about adding components to an assembly, see Recipe: Add Cartridges to an Assembly. For details about managing assembly artifacts, see: Note Depending on the project and application in which PayPal is enabled not all of the cartridges are necessary. The base functionality is contained within ac_payment_paypal_plus and ac_payment_paypal_plus_bo. The remaining cartridges integrate into the responsive storefront reference application. Before deploying the new assembly to a test or production environment, you may have to adjust some file-based configurations required by the PayPal Service Connector. The PayPal Service Connector requires the following settings: The recommended behavior is to verify the events (false). According to Recipe: Change Deployed File Content With Filters this setting may be overridden within <IS_SHARE>/system/config/cartridges/ac_payment_paypal_plus.properties. For details about adding new configuration files, see Recipe: Deploy Custom Files. After creating and appropriately configuring the assembly, you must deploy it to the intended target environment. For details about deploying an assembly, see Recipe: Run the Deployment (Initial Installation / Upgrade / Downgrade). Note The PayPal Service Connector requires additional post-deployment configuration steps. For details, refer to Configuration. Precondition
See Cookbook - Setup CI Infrastructure (valid to Gradle Tools 2.7) for details.
See Concept - Continuous Delivery Tools (valid to 7.10) for basic information about Continuous Integration.Set Up the Assembly
…..
cartridges {
def storefrontCartridges = [
'app_sf_responsive',
'app_sf_responsive_cm',
'app_sf_responsive_b2c',
'app_sf_responsive_smb',
'as_responsive',
'app_sf_responsive_b2b',
'app_sf_responsive_costcenter',
'as_responsive_b2b',
// this are the two cartridges, which we delivered in source code and you have to add these files to your responsive source project
'as_responsive_paypal_plus',
'ac_payment_paypal_plus_responsive_sf'
]
include(*(storefrontCartridges.collect { project(":$it") }), in:[development, test, production])
…..
def paypalPlusPaymentProvider = [
'ac_payment_paypal_plus',
'ac_payment_paypal_plus_bo'
]
include (*(paypalPlusPaymentProvider.collect {"com.intershop.services.payment_paypal_plus:$it"}), in: [development, test, production])
order = listFromAssembly(baseAssembly) + paypalPlusPaymentProvider
}
...
assemblyBuild {
database {
inherit(<yourAssembly>)
initCartridges = []
}
}
...
configurations.all {
exclude group: 'com.sun.xml.bind', module: 'jaxb-impl'
}
apply plugin: 'static-cartridge'
intershop
{
displayName = 'Adapter -Payment_paypal_plus_responsive_sf '
}
dependencies
{
// compile project(':ac_payment_paypal_plus') --> will be replaced by
compile group: 'com.intershop.services.payment_paypal_plus', name: 'ac_payment_paypal_plus'
compile group: 'com.intershop.platform', name: 'businessobject'
compile group: 'com.intershop.platform', name: 'core'
compile group: 'com.intershop.platform', name: 'bc_address'
compile group: 'com.intershop.platform', name: 'isml'
compile group: 'com.intershop.platform', name: 'servletengine'
compile group: 'com.intershop.business', name: 'bc_basket'
compile group: 'com.intershop.business', name: 'bc_payment'
// compile group: 'com.intershop.responsive', name: 'app_sf_responsive' --> will be replaced by
compile project(':app_sf_responsive')
compile 'javax.servlet:javax.servlet-api'
compile 'org.slf4j:slf4j-api'
compile 'org.apache.tomcat:tomcat-el-api'
}
com.intershop.services.payment_paypal_plus:ac_payment_paypal_plus = 3.1.9
com.intershop.services.payment_paypal_plus:ac_payment_paypal_plus_bo = 3.1.9
, or
For details about creating a new assembly, see Recipe: Create a New Assembly Inheriting From an Existing Assembly.Defining File-Based Configuration
Property Description Value intershop.payment.PAYPAL_PLUS.currencies
Defines which currencies are configurable for PayPal . Common setting for all payment service connectors. comma separated list of currencies, e.g., EUR, USD intershop.payment.PAYPAL_PLUS.PaymentWallTTL
The time to live of the payment wall in minutes i.e. how much minutes the wall is considered valid in the merchant site after being visualized at the eshop. If the payment wall 'exipires' then the user has to be redirected back to the page where the wall is visualized. number, e.g. 120 intershop.payment.PAYPAL_PLUS.SkipWebhookSignatureVerification
true or false Deploying Assembly
Within the Operations back office, the managed service corresponding to the PayPal PLUS Connector is by default named Securely processed by PayPal. The service has to be enabled for the Sales Organization in which the connector will be used. This is shown in the screenshot: The PayPal PLUS Connector requires some post-deployment configurations in Organization Management and Commerce Management. For details about enabling a payment service, see - Recipe: Enable a Payment Service . The table below lists PayPal PLUS-specific settings to be configured at the payment service. The ID of the webhook that is used to accept callbacks from PayPal. Maintained in the PayPal account. The URL of the logo that will be displayed on the PayPal page after redirect. Allowed values: *.gif, *.jpg, or *.png. Limit the image to being 190 pixels wide by 60 pixels high. The brand of the shop, shown on the PayPal hosted pages. A label that overrides the business name in the PayPal account on the PayPal pages. Character length and limitations: 127 single-byte alphanumeric characters. The logo image and brand name are part of the experience profile of the merchant. Note Proxy support is available for intercepting proxies. The usage of such proxies is not recommended because the idea of SSL is to make sure that there are no proxies between the merchant and PayPal. If you use such proxy, make sure that the certificate of the proxy is trusted by the JVM on which the app server runs. Proxy usage is highly discouraged. Once the connector is configured, it should be initialized in the channel back office. To do so, use the ad-hoc Initialize button. The button is available in the Preferences tab, as shown in the the screenshot below. Two things happen when the button is clicked: Note The connector cannot be guaranteed to work correctly without experience profile. Initializing the connector is required. The PayPal PLUS Connector provides English and German localization files for the payment-specific input field labels, error messages, etc. You can find the existing localization files here: <IS.INSTANCE.SHARE>/system/cartridges/ac_payment_paypal_plus/release/localizations and <IS.INSTANCE.SHARE>/system/cartridges/ac_payment_paypal_plus_bo/release/localizations For details about localization, see:Enabling Within the Operations Back Office
Apply UI-Based Configuration
Name Description Client ID The client ID, provided by PayPal. Secret The secret key, provided by PayPal. Environment Switch between test (sandbox) and live system. Options: Live and Test. Webhook ID
When the webhook URL is entered in the PayPal UI and the supported events are selected, PayPal assigns a webhook ID to the configuration.
This ID is essential for the webhook validation. If the validation is switched off, the webhook ID is not required.Proxy host The proxy host Proxy port The proxy port Proxy user name The proxy user (if applicable) Proxy password The proxy password (if applicable) Logo Image
PayPal crops images that are larger. PayPal places the image at the top of the cart review area. PayPal recommends that the image is stored on a secure (HTTPS) server. Otherwise, web browsers display a message that checkout pages contain non-secure items.
Character length and limit: 127 single-byte alphanumeric characters.Brand Name Location Determines the locale-specific variant of the PayPal hosted pages. Connector Initialization
Localization
This following table summarizes known limitations with this implementation of the connector.
Limitation | Description |
---|---|
Multiple shipping | Multiple shipping is not supported. |
Limitations in the hosted pages | The change of the shipping address in the hosted pages of PayPal is not supported. Writing notes to the merchant is also not supported. The restrictions are enforced by an experience profile. |
Payment costs | Payment costs are not supported. Simply because the payment wall is shown before a payment method is selected. |
Matching price and taxation calculation | A matching price display and tax calculation is required. That is, the price type and the price display must be either both set to "gross" or both set to "net", and a corresponding taxation service must be enabled. |
Baskets with zero subtotals | Due to a bug in PayPal such baskets are not supported. E.g., such a basket may have a handling fee, a product and a promotion that covers the amount of the product but not the handling itself. |
US address validation | PayPal supports validation of US shipping addresses. Currently failing validation of such addresses is not supported. |
Pending transactions | In certain rare situations PayPal may decide to mark a transaction as "pending". The calculations which are performed during the "normal" workflow of the checkout (e.g., recalculating a promotion budget) will not be triggered by the webhook currently. |
Digital goods | Buying digital goods (e.g., gift certificates) is not supported due to the lack of physical address. This is not supported by PayPal. |
Details
Before the payment wall is visualized on step 3 of the checkout the contents of the basket has to be sent to PayPal. In return PayPal answers with a special token which is used to display the wall.
Prior to this version the billing and shipping addresses were sent together with the basket contents. This is in a conflict with the privacy policies of PayPal and some merchants. Since this version the billing and shipping addresses are transferred via additional PATCH request sent to PayPal just before the user is redirected to the hosted pages.
The information provided in the Knowledge Base may not be applicable to all systems and situations. Intershop Communications will not be liable to any party for any direct or indirect damages resulting from the use of the Customer Support section of the Intershop Corporate Web site, including, without limitation, any lost profits, business interruption, loss of programs or other data on your information handling system.