Welcome to the Intershop Stripe Checkout Connector, a service connector designed to seamlessly integrate a payment method into your Intershop Commerce Management installation by leveraging Stripe's robust Checkout API. Stripe is a leading online payment processing platform trusted by businesses around the world for secure and efficient transaction handling.
This release note provides key insights into product version details, dependencies, and comprehensive setup and configuration instructions to optimize your integration process.
This delivery and the accompanying documentation are valid for the following combinations of software versions:
Intershop CM | PWA | Stripe Checkout Connector | Stripe Checkout Core API |
---|---|---|---|
12.0.0+ | 5.2.0+ | 1.0.0+ | 25.8.0 |
Since there is no dependency between the PWA and the Stripe connector, the required PWA version depends only on the ICM version used.
The Stripe Checkout Connector 1 is based on the Payment API introduced in Intershop Commerce Management 7.6.1.
The table below provides information about the cartridges included in the package.
Cartridge | Description | Required |
---|---|---|
ac_payment_stripe_checkout | Includes all basic functionality and business logic which is used in both the storefront and the Commerce Management application. Enables the Stripe Checkout payment connector for the following application type:
This allows you to use the Stripe Checkout payment method via REST through the PWA. |
The image is available in the respective Docker repository: intershophub/icm-as-customization-stripe-checkout
The Stripe Checkout Connector can be used for the following application types:
Application Type | Application Type ID | Compatible | Description |
---|---|---|---|
Progressive Web App |
| B2C/B2B via REST |
The Stripe Checkout Connector adds a single generic payment option per service configuration to your Intershop Commerce Management System, typically combining multiple specific payment methods.
The buyer selects the actual payment method after being redirected to the Stripe payment page. The payment methods available there can be configured in the Stripe dashboard. It is also possible to set up Payment Method Configurations via the dashboard, which can then be referenced by their ID in the payment service configuration.
Name | Description | Payment Management Options |
---|---|---|
Stripe Checkout | Payment via a Stripe account performing the complete authorization process using a redirect to Stripe. Payments are captured directly. The connector is currently released for the following payment methods:
Technically, the connector supports all payment methods available through Stripe, but has only been tested and approved for the ones listed. A general guide to the types of payment methods available via Stripe can be found here: Stripe | A Guide to Types of Payment Methods. For more details on available brands and supported countries, see: Stripe | Learn about payment methods. | Refund |
Operation | Description |
---|---|
Refund | The option to return (part of) the captured amount can be performed directly from the Stripe Dashboard. The status and amount changes are updated from ICM side. Initiating a refund directly in ICM is not supported in this release. |
The Stripe Checkout Connector supports the option to send detailed order information to Stripe (“Detailed” mode). However, there are several limitations to this mode, both on the Stripe side and on the ICM side. These are explained in the Limitations section.
Alternatively, the order information can be consolidated and sent as a grand total only (“Consolidated” mode). In this case, the above limitations do not apply.
The customization image for the Stripe Checkout Connector is available from Intershop's public repository. To add the customization image for the Stripe Checkout Connector to your project, you must add it to the dependencies of your customization. To achieve this, several steps are required:
Register the customization image in your main build.gradle.kts:
val icmDockerRegistry = "docker.tools.intershop.com/icm/intershophub" // specified in gradle.properties val stripeConnectorVersion: String by project intershop { projectConfig { modules { // ... other modules ... register("stripe-checkout") { dependency.set("com.intershop.services.payment_stripe_checkout:stripe-checkout:${stripeConnectorVersion}") image.set("${icmDockerRegistry}/icm-as-customization-stripe-checkout:${stripeConnectorVersion}") testImage.set("${icmDockerRegistry}/icm-as-customization-stripe-checkout:${stripeConnectorVersion}") } } } } subprojects { // ... other settings ... plugins.withType<JavaPlugin> { dependencies { // ... other dependencies ... cartridge(platform("com.intershop.services.payment_stripe_checkout:versions:${stripeConnectorVersion}")) implementation(platform("com.intershop.services.payment_stripe_checkout:versions:${stripeConnectorVersion}")) } } }
Add dependencies to the Stripe Checkout feature to your project's feature definition (e.g., ft_myproject/build.gradle.kts):
dependencies { // base on ICM AS cartridgeRuntime ("com.intershop.icm:ft_icm_as") // ... more dependencies ... // Stripe Checkout Connector cartridgeRuntime ("com.intershop.services.payment_stripe_checkout:ft_stripe_checkout") }
To include the Stripe Checkout feature, add your project's feature definition cartridge to your development configuration within your main build.gradle.kts. If you need additional feature cartridges for local development, you can add them here as well.
intershop_docker { // ... other configuration ... developmentConfig { appserverAsContainer = true cartridgeList.set(setOf("ft_myproject")) // alternative scenario using a feature cartridge where Stripe Checkout isn't included as a runtime dependency: // cartridgeList.set(setOf("ft_stripe_checkout", "ft_my_other_feature_cartridge_dev")) testCartridgeList.set(setOf("ft_mytest")) } }
Start your application server:
There are several ways to do so. The three main use cases are:
Development mode:
Use Gradle to manage the server instance by using the command gradlew startAS
Run gradlew tasks
to see available tasks or check for further options.
Local Docker environment using docker-compose:
Adapt the compose file used to tell ICM which cartridges to load. This can be done using the CARTRIDGE_LIST environment variable of the app server.
version: "3.8" services: customize-stripe: image: icm-as-customization-stripe-checkout:<stripe-connector-version-tag> volumes: - customizations:/customizations # ... other services ... appserver: # ... other appserver settings ... container_name: appserver environment: # ... more environment variables ... # example cartridge list (assuming the Stripe Checkout Connector (ft_stripe_checkout) is already defined as dependency). Please adapt to your needs. CARTRIDGE_LIST: "ft_myproject" # ... more configuration ...
Production environment using Helm charts:
If you are using Helm to manage the ICM instances, you will need to adjust the cartridge list. Please follow Concept - Customization ICM 11 - Deployment to add the Stripe Checkout Connector cartridges to this list.
For details on managing the artifacts, see:
A part of the payment method configuration is not meant to be changed in the Commerce Management application and is available through server properties. These properties are read by the configuration framework and as such can be overridden for an application type. They can be overridden within your custom cartridges <cartridge_name>/src/main/resources/cartridges/<cartridge_name>.properties or by specifying properties files under <cartridge_name>/src/main/resources/resources/<cartridge_name>/config.
For more information on the configuration framework, check Concept - Configuration and Cookbook - Configuration.
The Stripe Checkout Connector requires the following settings for the currencies you want to support:
Property | Description | Value Format | Default |
---|---|---|---|
intershop.payment.Stripe_Checkout.currencies | Defines which currencies are configurable for Stripe Checkout. | comma-separated list, e.g., EUR, USD | * (all, no restriction) |
A list of supported countries can be defined for each payment method. A comma-separated list of ISO 3166 ALPHA 2 country codes is valid:
Property | Description | Value Format | Default |
---|---|---|---|
intershop.payment.Stripe_Checkout.countries | Defines for which countries Stripe Checkout is allowed to be used. Default: all. | comma-separated list, e.g., DE, US | * (all, no restriction) |
The Stripe Checkout Connector receives webhook notifications from Stripe. To ensure that the messages actually come from Stripe, the valid IP addresses must be on the whitelist. This does not replace filtering in the firewall.
Property | Description | Value Format | Default |
---|---|---|---|
intershop.payment.stripe.notification.ip | Defines a list of IP addresses from which webhook notifications are accepted. | comma-separated list | possible webhook IP addresses provided by Stripe |
In addition to the source IP address verification, the Signing Secret is used to verify the received event. See the next chapter for details on the configuration value.
The Stripe Checkout Connector requires some post-deployment configuration in Intershop Organization Management and Intershop Commerce Management.
For details about on a payment service, see Cookbook - Payment | Recipe: Enable a Payment Service.
The table below lists Stripe Checkout-specific settings you can enter at the payment service.
Name | Description |
---|---|
Account ID | ID of the Stripe account connected to the Intershop Platform. ( -> Settings->Settings->Business->Account Details) |
Signing Secret | Your individual signing secret, see section Stripe Account Configuration for details |
Environment | Switch between test and live system. Options: Test or Live. |
Order Details | Specifies the way to transfer order details to Stripe. Order details include items (prices and quantities), discounts, shipping costs, etc. |
Name | Description |
---|---|
Configuration ID | Specifies the ID of the payment method configuration in the Stripe dashboard to be used for this payment service. If this field is empty, the default configuration will be used. Under Settings > Payments > Payment Methods in your Stripe Dashboard, you can configure the available payment methods. You can adapt the existing configurations to your needs and copy the corresponding configuration ID here. Normally, the payment method configuration IDs look like “pmc_*******”. |
To use this Payment Connector, you need a Stripe account that is linked to the Intershop Stripe platform account as a Connected Account.
You have to contact Intershop Support for assistance with the onboarding process. Intershop will provide you an Access URL link to create and manage your private Stripe Backoffice as first step.
When you set up your Stripe account, you will also receive your Stripe Account ID, which must be set as Account ID in your Stripe service configuration.
In addition to the Account ID, a Stripe API key is required to authenticate communication between the Payment Connector and Stripe. This cannot be set explicitly in the service configuration, but will be provided by Intershop via your system environment.
The Stripe Checkout Connector provides a webhook endpoint to receive events sent by Stripe and process the payment transactions accordingly. In order for the payment connector to function properly, it is necessary to register this webhook endpoint within the Stripe Dashboard.
See Stripe | Receive Stripe events in your webhook endpoint for detailed explanations about Stipe events.
Your starting point to configure webhooks in the Stripe Dashboard is Developers > Webhooks.
Webhook can be created in the Developer Section .
To connect your Stripe account to your ICM and the Stripe Payment Connector, the webhook must be configured with the following settings:
Configuration Attribute | Value |
---|---|
Listen to |
|
Events | Select all Stripe events that are currently supported by the Stripe Checkout Connector:
|
Endpoint URL | URL to the Stripe webhook endpoint of your ICM:
E.g. for a standard ICM with the inSPIRED demo data, the URL would be:
|
Once the webhook endpoint has been successfully created, you can find its signing secret in the details view of the webhook. This secret usually looks like “whsec_*******“. Copy this value and use it as the “Signing Secret” in your Stripe service configuration. The secret is used by the connector to validate all incoming (signed) events and ensure that they are actually coming from Stripe.
The Stripe Checkout Connector provides English, French and German localization for payment-specific input field labels, error messages, etc.
You can find the existing localization files here: <IS_SHARE>/system/cartridges/ac_payment_stripe_checkout/release/localizations
For details about localization, see:
The following table describes the data transmitted by the Stripe Checkout Connector from ICM to Stripe during the payment process:
Description | Transmitted to Stripe | |
---|---|---|
Amount | The amount of the transaction | |
Currency | Currency code, e.g., EUR/USD | |
Customer details | Customer e-mail, country | |
Reference (order id) | Order reference generated by merchant | |
Shipping Details | Shipping amount, shipping discount | |
Description of the items | Product description, quantities, discounted single base price |
Symbol | Description |
---|---|
Transmitted | |
Not Transmitted | |
Optional (configurable in the Intershop Commerce Management) |
The transmission of detailed order information implies various limitations:
The Stripe Checkout API allows to transmit up to 100 line items. It is recommended by Stripe to consolidate line items if there are more than a few dozen. Please use the option Consolidated for the Order Details configuration entry.
The Stripe Checkout API does not support the transmission of other payment methods, so it is not possible to combine transmitting order details with the use of multiple payments. If a storefront user has a limited tender payment assigned to the basket, the Stripe Checkout payment method will be marked as 'restricted'. If this is a common use case in the shop, Intershop recommends to use the Consolidated option for the Order Details configuration entry.
Rounding errors can occur when transmitting order details to Stripe. In case of transmitting detailed order information, Stripe will calculate the order total on their side. There is a possibility that the recalculation on the PSP side will produce a different result than the total authorization amount calculated by the ICM. It is also possible that certain surcharges may not be transmitted to Stripe in detailed mode if there is no equivalent for this surcharge type on the Stripe side.
Rounding issues are caused by price calculations that include percentage values. For example:
Converting net prices to gross prices. This can happen when prices are treated as net in the back office and displayed as gross in the storefront.
Percentage-based discounts
To prevent the Stripe checkout page from displaying a different payment amount to the buyer than the previous review page, the amount calculated by Stripe is compared to the amount calculated by the ICM. If a difference is detected, the payment process will be aborted and not redirected to Stripe.
When using the “Consolidated” mode, these potential differences will not occur.
The connector provides the option to disable the transfer of order details.
Back Office Option | Possible Rounding Issues | Explanation | Result at Stripe |
---|---|---|---|
Consolidated | no | Stripe does not display any details other than the total amount to be paid with Stripe Checkout. The payment total is the order total minus the amount paid with limited tender payments. | |
Detailed | yes | The connector uses most of the Stripe Checkout API. Order details appear at Stripe at dedicated places. |
Initial implementation