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 Commerce Management | PayPal PLUS Connector |
---|---|
7.10.16.6 - 7.10.30.x (Tomcat 7) 7.9.1.3+ | 5.0.5 5.0.4 |
7.9.0.7+ | 5.0.0 |
PayPal Plus Connector version 6.0.0 features the same functionality as PayPal Plus Connector 5.0.5 to facilitate migration from ICM 7.10.30 - to 7.10.31+.
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 your responsive source files. It can 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. E.g., this is the detection of basket changes which require re-rendering of the payment wall. 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 your responsive source files. The referenced cartridge app_sf_responsive may be renamed in project and has to be referenced in the build.gradle file with the customized naming again. |
The PayPal PLUS Service Connector 5.+ is based on the Payment API 2.8.
The sources for as_responsive_paypal_plus and ac_payment_paypal_plus_responsive_sf are available here
...YOUR_REPOSITORY.../releases/com.intershop.public.source/s_payment_paypal_plus/5.0.5/zips/s_payment_paypal_plus-zip-src-5.0.5.zip
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 |
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 and configuration steps, including: 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. The package is available via Intershop's public Artifactory servers. To add the PayPal Service Connector into your ICM system, you may either: Incorporate the cartridge into an already existing assembly. 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 PLUS 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. Or: For details about managing assembly artifacts, see: Before deploying the new assembly to a test or production environment, you may have to adjust some file-based configurations required by the PayPal PLUS Service Connector. The PayPal PLUS 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 PLUS Service Connector requires additional post-deployment configuration steps. For details, refer to the other sections of this guide.Precondition
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 = 5.0.5
com.intershop.services.payment_paypal_plus:ac_payment_paypal_plus_bo = 5.0.5
Defining File-Based Configuration
Property Description Value intershop.payment.PAYPAL_PLUS.currencies
Defines which currencies are configurable for PayPal PLUS. 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 shop. If the payment wall 'expires' 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.
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 | The ID of the webhook that is used to accept callbacks from PayPal. Maintained in the PayPal account. |
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 | 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. |
Brand Name | 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. |
Location | Determines the locale-specific variant of the PayPal hosted pages. |
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:
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 | Baskets with subtotal of zero are not supported by PayPal. |
US address validation | PayPal supports validation of US shipping addresses. |
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. |
PWA REST Storefront | PWA REST storefront is not yet supported. PayPal PLUS only works with responsive-based storefront. |