...
There are also a configuration to be made in Salesforce Commerce Cloud Business Manager. Axepta BNP Paribas cartridge currently supports the following payment methods:
- BankcardCB / VISA / MasterCard
- American Express
- FLOA Pay (in progress)
- PayPal
Axepta BNP Paribas cartridge is developed based on en_US locale but it can be configured in any locale needed. The location of payment data storage is very important for the security of the payments online. The card organizations have established a security program with the PCI security authorization (Payment Card Industry) in order to guarantee the secure storage of card data. Also, the cartridge doesn’t perform any request of PCI sensitive information.
...
Component Overview
Functional Overview
Bussiness Manager Extenstion for Axepta
Merchants can configure the Axepta cartridge features from the Salesforce Commerce Cloud BM. On the Business Manager page each merchant can configure the connection to Axepta. The merchant will have to enter the credentials received when opening an account with Axepta in order to create a connection to the platform.
Hosted iFrame Mode
The cartridge enables the merchant to use the Axepta payment solutions via an iframe that is integrated into his own Salesforce Commerce Cloud implementation.
Hosted Form Mode
The cartridge supports the hosted payment page approach, where the payment information is entered directly on pages that are hosted and provided by Axepta. During the checkout process, when the customer selects to use one of the payment methods for which the hosted form mode is enabled, he/she will be redirected to the Axepta hosted payment pages in order to complete the order. Once the order is completed, the customer is returned to the merchant’s store, where he/she can review the order summary.
Payment Methods
The cartridge allows the customer to select and use a variety of payment methods in order to complete the checkout process. The available payment methods and afferent configurations are handled via an activation key which Axepta provides, which is configured in Bussiness Manager.
Account configuration
The cartridge supports multiple accounts configuration. Each account can be customized according to the merchant’s needs, by accessing the Axepta Module > Accounts Configuration screen and editing the options.
Manage Orders
The custom order manager screen provided with the Axepta cartridge allows the merchant to perform operations on each individual order, as well as viewing the order information, payment details and notes.
Axepta Signature
A signature verification mechanism is available for verifying the content of requests and redirections between the merchant site and the Axepta platform. Every request it is signed with a string parameter that ensures the request’s origin and integrity, hashed with a SHA256 algorithm.
Supported Operations
The cartridge supports both authorization and payment operations, as well as partial or total refunds. Each operation is triggered according to the payment method selected by the customer during the checkout process.
Payment
In this case the capture is requested automatically after the authorization. If the capture is not successful, the customer (the buyer) is redirected to an error page. If the capture is successful, the customer is redirected to a success page and completes the checkout process.
Authorization
In this case the customer (the buyer) is not charged automatically or direct after the order is placed. The merchant has a defined amount of time to capture the amount money from the customer. Only total capture is supported by the cartridge. The capture can be triggered in a number of ways :
automatically within a set time period, which can be configured by the merchant in the setting for the Deffered Payment Option
- via a job, which will capture the amount for all orders that have shipping status = “Shipped”
Cancel
It is possible to cancel an order by accessing the Axepta Module > Manage Orders > Order Details screen. An order can only be cancelled if it has not been captured yet. Otherwise, the merchant will be offered to perform a refund.
Refund
The cartridge offers the merchant the possibility to perform partial or total refund for an order, by accessing the Axepta Module > Manage Orders > Order Details screen. This operation enables the merchant to credit funds back to an end-user following a previous debit and it is always linked to a succesfull payment or capture transaction.
...
- FAILED – all cases of cancel and decline
UC – 1
Summary :
Customer places an order as guest or authenticated, using a payment method with hosted form mode enabled
...
9. The merchant can verify the information in the Axepta Extranet platform
UC – 2
Summary :
Customer places an order as guest or authenticated, using a payment method with iframe form mode enabled
...
9. The merchant can verify the information in the Axepta Extranet platform
UC – 3
Summary :
Customer places an order as authenticated user, using Bank Card or American Express payment method with One Click option enabled
...
9. The merchant can verify the information in the Axepta Extranet platform
UC – 4
Summary :
The merchant performs a manual capture/refund operations on a new order
...
6. The merchant can verify the information in the Axepta Extranet Platform
Limitations, Constraints
- The merchant needs a configured Axepta account
...
Axepta integration cartridge was certified with the version of Salesforce Commerce Cloud : currently API version 22.10, Site Genesis version 104.1.3 and SFRA version 5.3.0. It is typically backward compatible with older versions since it uses common and stable methods accessing the Customer, Order and Payment system objects. Currently, SFRA version 6.x and above are not supported.
FLOA PAY
...
General Information
FLOA Pay allows a merchant to offer 3X, 4X, 1XD or 3XD installment plans for customers during checkout. During the first step FLOA Pay checks the customer for eligibility for chosen installment. Then, in case of positive result, FLOA Pay redirects the customer to FLOA Pay Hosted Payment page. A merchant can be configured on FLOA Pay side for AUTO Capture or for MANUAL Capture. In case of AUTO Capture, FLOA Pay does not expect capture from the merchant. FLOA Pay does capture automatically based on the authorization. In case of MANUAL Capture, the merchant needs to call Capture API. After a credit check, FLOA Pay assumes the entire customer's payment default risk for each transaction. The merchant receives full amount of the installment from FLOA Pay after capture.
Configuration
Accounts configuration :
Go to Merchant tools > AXEPTA BNP PARIBAS Module > Accounts Configuration > EUR and activate the FLOA payment method.
...
- axpCreateInstallmentUrl : Authorization: To create an installment, call the following URL.
- floa_merchantID: Your Mechant ID FLOA.
Axepta Floa 1
Follow this documentation to find out your test merchant site ID : Tester FLOA - Documentation Axepta BNP ParibasParibas - Axepta
- floa_1_enabled : Activate FLOA 1X.
...
- floa_1_max : Max order amount to allow 1x installment payment.
Axepta Floa 3
Follow this documentation to find out your test merchant site ID : Tester FLOA - Documentation Axepta BNP
...
- floa_3_max : Max order amount to allow 3x installment payment.
Axepta Floa 4
Follow this documentation to find out your test merchant site ID : Tester FLOA - Documentation Axepta BNP
...
- floa_4_max : Max order amount to allow 4x installment payment.
Storefront Functionality
Display FLOA in the Checkout
Place an order with FLOA 3x
1. Click on the FLOA 3x logo and then click the next button. You will be redirected to the Place-Order page.
...
5. Click the Pay for an order button. You will be redirected to the SalesForce confirmation page.
PAYPAL
...
General Information
PayPal is one of the world’s leading eWallets for e- and m-Commerce. Around 179 million active members in over 200 countries pay for their online orders with PayPal. Customers can pay via direct debit, giropay or by card (American Express, Diners Club, Discover, MasterCard, Visa). Along with the above payment methods, PayPal PLUS offers purchase on account and purchase by instalment.
Members log into their PayPal account with their email address and a password during checkout and choose the preferred payment method (direct debit, PayPal credit, card and, if applicable purchase on account or by instalment). The amount payable is then immediately credited to their own PayPal own PayPal account. The usual direct debit periods for transfers or the delay resulting from distribution to collecting services collecting services do not apply. This allows real-time payments processing on the Internet.
Account Configuration
Go to Merchant tools > AXEPTA BNP PARIBAS Module > Accounts Configuration > EUR and activate Paypal payment method.
Payment method
Go to Merchant tools > Ordering > Payment Methods and add the AXEPTA_PAYPAL payment method. You can also import the payment-methods.xml file.
Custom Preferences
Import the system-objecttype-extensions.xml file. 1 new preference group should appear in Merchant tools > Site preferences :
Axepta Paypal
axpPaypalUrl : URL to initiate a PayPal payment in the Payment platform
(default : https://paymentpage.axepta.bnpparibas/paypal.aspx)
Storefront Functionality
Display PayPal in the Checkout
Place an order with Paypal
1. Click on the Paypal logo and then click to the next button. You will be redirect to the Place-Order page.
...
3. Log in, select your payment method, and make the payment. You will then be redirected to the SalesForce confirmation page.
INSTANEA : General Information
Instanea is an acceptance solution based on payment initiation as defined by PSD2, which allows you to receive instant transfers.
Through this solution, your company and your customers benefit from all the advantages of instant transfers:
- Speed: Transfer executed in less than 10 seconds with immediate availability of funds.
- Convenience: 24/7 availability all year round and notification to the payor in the event of rejection of the transaction.
- Ease: Choice of the reference of the transfer, allowing you to make an automatic reconciliation
- Secure payment: no risk of chargeback with SEPA Instant
…And a simple user journey for your customers.
Whether for in-store sales or online on your website, the Instanea user experience is fluid and secure.
Account Configuration
Go to Merchant tools > AXEPTA BNP PARIBAS Module > Accounts Configuration > EUR and activate Instanea payment method.
Payment method
Go to Merchant tools > Ordering > Payment Methods and add the INSTANEA payment method. You can also import the payment-methods.xml file.
Custom Preferences
Import the system-objecttype-extensions.xml file. 1 new preference group should appear in Merchant tools > Site preferences :
Axepta Instanea
axpInstaneaUrl : URL to initiate a Instanea payment (default : https://paymentpage.axepta.bnpparibas/instanea.aspx)
Storefront Functionality
Display Instanea in the Checkout
Place an order with Instanea
1. Click on the Instanea logo and then click to the next button. You will be redirect to the Place-Order page.
2. Click on the Place an Order button. You will be redirect to Instanea
3. Choose your bank and then click to Accept. You will then be redirected to the SalesForce confirmation page.
Cartridge Installation-SFRA
Installation
Under SFRA, 3 of the cartridges will be used :
Cartridge Installation-SFRA
Installation
Under SFRA, 3 of the cartridges will be used :
- int_axepta_sfra : contains the functionalities / adaptations dedicated to SFRA
- int_axepta_core : contains general functionalities to SFCC and various calls to services
- bm_axepta : contains the functions reserved for the BM (interface for configuring and managing transactions).
In the cartridge path, you must therefore add to cartridge path :
- axepta_sg_changes:int_axepta_sfra: for the Storefront
- bm_axepta:int_axepta_core: for the Business Manager
Installation of dependencies
Run the npm install command in order to install all the modules required for the operation of the cartridge.
Code compilation (JS / SCSS)
In order to generate the appropriate Javascript for the different stages of the checkout, run the npm run compile:js
command. The compiled code will be found in the int_axepta_sfra/cartridge/static/ folder.
Import of metadata
The necessary configuration data can be found in the metadata folder. Before importing, replace the name of the RefArch folder in the metadata> sites folder with the ID of your site.
You can now compress the “metadata” folder and import it into Administration> Site development> Site Import & Export. This import will add the configuration elements, as well as the various jobs, services and extensions of
system-object.
Business Manager module
The permissions for the BM module must be set for every role you want to give access. This is done in Administration > Roles & Permissions > [your role] > Business Manager Module : select the Axepta module
Cartridge Installation-Site Genesis
Installation
Under SiteGenesis, 3 of the cartridges will be used :
- int_axepta_sitegenesis int_axepta_sfra : contains the functionalities / adaptations dedicated to SFRA
- int_axepta_core : contains general functionalities to SFCC and various calls to services
- bm_axepta : contains the functions reserved for the BM (interface for configuring and managing transactions).
In the cartridge path, you must therefore add to cartridge path :
- axepta_sg_changes : contains all Axepta-customized controllers/models/templates that are cloned from app_storefront_controller or app_storefront_core
In the cartridge path, you must therefore add :
- axepta_sg_changes:int_axepta_sfra_sitegenesis:int_axepta_core : for the Storefrontstorefront
- bm_axepta:int_axepta_core : for the Business Manager
Installation
...
We consider that you have a Sitegenesis cloned in the same root folder as Axepta cartridge. Before installing anything on sitegenesis folder, you can change Gruntfile.js in sitegenesis folder first:
Add const sass = require('node-sass');
And implementation: sass,
Now cd into sitegenesis cartridge folder and run these commands in terminal:
npm install
npm run build
npm install -g grunt-cli
npm install grunt grunt-autoprefixer grunt-browserify grunt-cli grunt-sass sass
Now cd into Axepte cartridge folder and run these commands in terminal:
npm install
npm run buildsg
This will copy client JS and run grunt build. Please check the file package.json for more info.
Import of metadata
The
Run the npm install command in order to install all the modules required for the operation of the cartridge.
Code compilation (JS / SCSS)
In order to generate the appropriate Javascript for the different stages of the checkout, run the npm run compile:js
command. The compiled code will be found in the int_axepta_sfra/cartridge/static/ folder.
Import of metadata
The necessary configuration data can be found in the metadata/ folder . Before importing, replace the name of the RefArch SiteGenesis folder in the metadata> sites folder with the ID of your siteyour site.You You can now compress the “metadata” metadata/ folder, and import it into Administration> Site development> Site Import Site Import & Export Export .
This This import will add the configuration elements, as well as the various jobs, services and extensions ofsystemof system-object.
Business Manager module
The permissions for the BM module must be set for every role you want to give access. This is done in Administration > Roles & Permissions > [your role] > Business Manager Module : select the Axepta module
Cartridge Installation-Site Genesis
Installation
Under SiteGenesis, 3 of the cartridges will be used :
- int_axepta_sitegenesis : contains the functionalities / adaptations dedicated to SFRA
- int_axepta_core : contains general functionalities to SFCC and various calls to services
- bm_axepta : contains the functions reserved for the BM (interface for configuring and managing transactions).
- axepta_sg_changes : contains all Axepta-customized controllers/models/templates that are cloned from app_storefront_controller or app_storefront_core
In the cartridge path, you must therefore add :
- axepta_sg_changes:int_axepta_sitegenesis:int_axepta_core : for the storefront
- bm_axepta:int_axepta_core : for the Business Manager
Installation
We consider that you have a Sitegenesis cloned in the same root folder as Axepta cartridge. Before installing anything on sitegenesis folder, you can change Gruntfile.js in sitegenesis folder first:
Add const sass = require('node-sass');
And implementation: sass,
Now cd into sitegenesis cartridge folder and run these commands in terminal:
npm install
npm run build
npm install -g grunt-cli
npm install grunt grunt-autoprefixer grunt-browserify grunt-cli grunt-sass sass
Now cd into Axepte cartridge folder and run these commands in terminal:
npm install
npm run buildsg
This will copy client JS and run grunt build. Please check the file package.json for more info.
Import of metadata
The necessary configuration data can be found in the metadata/ folder . Before importing, replace the name of the SiteGenesis folder in the metadata> sites folder with the ID of your site. You can now compress the metadata/ folder, and import it into Administration> Site development> Site Import & Export .
This import will add the configuration elements, as well as the various jobs, services and extensions of system-object.
Configuration
Configuring Site Preferences
General configuration items can be found in Site Preferences (Merchant Tools> Custom Preferences> Axepta Configurations ). It contains the following elements:
- Axepta payment method : The chosen integration method (Redirection or Iframe)
- Payment Capture Mode: The capture mode chosen for payments :
- Manual: The capture is triggered by a job, on condition of being sent
- With delay: The capture is triggered automatically after a defined duration (in the Capture delay (in hours) field)
- Automatic: The capture is triggered immediately upon validation of the payment - Capture delay (in hours) : Only for “With delay” (Avec délai) mode. Set the desired time for the capture delay.
- Challenge preference :
- noPreference: The merchant takes no action : the choice of exemption is left to the issuer.
- noChallenge: The merchant requests an exemption of the strong authentication (no Challenge - Frictionless) : The issuer will accept or not the merchant’s request according to the information he sent. The merchant requires strong authentication (challenge) :
- mandateChallenge: Mandatory (mandate): the issuer must authenticate the buyer (e.g. for the first subscription transaction)
- requestChallenge: Preference (request): The merchant wishes to authenticate the buyer. The final choice remains with the issuer.
See 3DSV2 and frictionless for more information.
Configuring Custom Objects
Account configurations depend on the currencies activated on the site. After activating one / more currencies on the site, it is possible to create the necessary configurations. For this, a custom interface is available in: Merchant Tools> Axepta Module> Accounts Configuration . In this interface, the activated currencies are listed, with the possibility of modifying / creating these configurations.
You must configure the following :
- MerchantID : the Axepta payment account ID
- HMac key: The encryption key linked to the MerchantID
- Blowfish key : The Blowfish key for payment data
- Activation Key: the account activation key, which allows you to define the different payment methods available
Once the configuration has been created, it is possible to activate / deactivate the payment methods available via checkboxes.
Job configuration
In order for the capture jobs to function correctly, it will be necessary to define one / more execution sites for them via the context of the steps.
Transaction management
With the cartridge comes an Axepta transaction management interface. It can be found in Merchant Tools> Axepta Module> Manage Orders . When you click on the order ID, you will find the details of this order / related Axepta transaction.
Details of transactions
On this page is the general information of the order (different SFCC statuses). Information on the various Axepta calls made for the order is also available. On the left part Order payment operations , we find the list of calls, with the type of call made, as well as the status. We therefore have the operations PAYMENT, CAPTURE, REFUND, CANCEL ... On the right, we find the details of the return of service calls (so all the details of the transaction made). From this page, it is also possible to cancel or refund the payment.
Cancellations
To make a cancellation, the order must meet the following criteria :
- order.paymentStatus equal to NOT PAID
- order.status.value is not CANCELED
- order.custom.axpIsCaptured is not TRUE
If the order meets these criteria, a “REFUND PAYMENT” button is available at the top of the page. When this button is clicked, a first call verifies that the order has no capture (via the axepta.inquire service , then a call is made to the axepta.reverse service , which will close the payment and cancel the order. A “CANCEL” transaction line will therefore be added to the list.
Refunds
To make one or more refunds, the order must meet these criteria:
- order.custom.axpIsRefundCompleted equal to false
- order.custom.axpIsCaptured equal to true
If it meets these criteria, a field and a button are added to the top of the page. By default, the value entered is the total of the order. You can enter a partial refund (therefore a lower amount) if necessary. On validation, a call to the axepta.capture service is made, and a transaction line is added. It will be either “PARTIAL REFUND” or “REFUND” depending on the amount.
Capture
As indicated previously, 3 capture modes are available :
- Auto
This capture mode does not require any action. The order is marked as “PAID”, and the various Axepta attributes relating to the capture are fulfilled. On the Axepta side, the transaction is automatically captured as soon as it is validated.
- With delay
This capture mode also has no action on the Axepta side (the order is captured by itself after the time period specified in the Site Preferences). However, for it to be up to date and marked as captured on SFCC, it is necessary to activate the Job Axepta - Update Delayed Captures . The job will run on orders with a capture date with an “expired” delay. On these, a call is made to verify the status of the payment, via the service axepta.inquire . Following the return, it performs actions similar to “Auto” mode (so flags the command as captured).
- Manual
This capture mode requires a call to the capture endpoint. These calls are managed by the Axepta - Capture Orders job. This job runs on Axepta orders having a “SHIPPED” status, and not being captured. It then makes a call to the axepta.capture service on these commands . If the feedback is positive, the order is marked as Captured and PAID.
Testing
The test cases are built to cover both the storefront functionality, from an end-customer’s point of view, as well as business manager functionality, from a merchant’s perspective.
Please refer also to section 2 – Component Overview : Use cases for more samples
Axepta has been tested with :
- SFRA version 5.3.0
- Sitegenesis 104.1.3
- SFCC API version up to 22.10
Unit tests
A set of unit tests is available for the different helpers used. They are written with the chai plugin. In order to run the tests, you have to run the npm run test command : npm run test:integration --baseUrl {{yourDomainUrl}}
In Order to run unit tests run the following command : npm run test
The result must be 15 passing
Integration tests
In addition to unit tests, a set of integration tests are also present on the SFRA and SiteGenesis cartridge. These are based on the codeceptjs plugin with its TestCafe driver
Configuration
To be able to run the different tests, it is necessary to configure a sandbox on which to run the tests.
To do this, open the int_axepta_sfra / test / integration / config.js file :
In this file, modify the following lines:
Storefront: {
url: '<https://YOURSANDBOX/s/RefArch/home?lang=fr_FR',>
baseUrl: '<https://YOURSANDBOX',> // BASE URL
login: '/on/demandware.store/Sites-RefArch-Site/fr_FR/Checkout-Login' // Checkout
login page,
},
Customer: {
email: '', // YOUR TEST CUSTOMER EMAIL
password: '' // YOUR TEST CUSTOMER PASSWORD
}
With SiteGenesis, open int_axepta_sitegenesis / test / integration / config.js file :
Storefront: {
baseUrl: 'YOUR-SANDBOX-URL/on/demandware.store/Sites-SiteGenesis-Site/'
},
Customer: {
email: 'TEST-EMAIL',
password: 'PASSWORD'
},
Launch of tests
Then, 2 commands are available, each for a different integration mode.
- Redirection mode
For this mode, you must first set the integration mode preference to redirect Then, the npm run testint:redirect (SFRA) or npm run testintsg:redirect (SiteGenesis) command is used to run the tests for the redirect mode.
The tests for this mode are available in the file int_axepta_sfra/test/integration/tests/Checkout_Redirect_test.js or int_axepta_sitegenesis/test/integration/tests/Checkout_Redirect_test.js
- Iframe mode
For this one, you must set the integration mode preference on iframe Then, the npm run testint:iframe or npm run testintsg:iframe (SiteGenesis) command is used to run the tests for the redirect mode.
The tests for this mode are available in the file int_axepta_sfra/test/integration/tests/Checkout_Iframe_test.js or int_axepta_sitegenesis/test/integration/tests/Checkout_Iframe_test.js
Operations, Maintenance
Data Storage
Custom Objects
This cartridge adds one custom object axpAccountsConfiguration, needed to store informations about accounts. It contains information defined in Merchant Tools> Axepta Module> Accounts Configuration.
Orders
Axepta will store communication results in order notes like :
New custom attributes are added to orders :
- axpCCBrand : The Credit Card Brand
- axpCaptureDate : The payment capture date
- axpCaptureDelayedDate : The delayed capture date
- axpCode : The response code from Axepta
- axpIsOrder : Flag that indicates if order was handled by Axepta
- axpIsCaptured : Flag that indicates if the payment has been captured
- axpIsRefundCompleted : Flag that indicates if the refund is complete
- axpPayID : The payment ID from Axepta
- axpRefundedAmount : The amount that has already been refunded
- axpTransID : The Transaction ID from Axepta
Services
The Axepta integration uses the below services
All services are using the below Profile configuration. It can be easily changed for different merchants. A different/ a separate Profile can be added for each service
Availability
Every error related to Axepta is reported to the Axepta API endpoint. The request payload contains error description, order ID and stack trace payload in JSON format. The order will be failed and will contain an ‘Error’ within the Order Notes (BM – Order Management). Also, in the error logs, this situation will be added, with specific details. The end user will receive a generic technical error with the message: “We're sorry that your order could not be placed. This probably happened due to a high order volume or temporary connection errors. Please wait a few minutes and resubmit your order. We won't process your payment until you successfully place your order. If you have further questions, please contact us .”
Failover
In case of unavailability of Axepta service, the content of the iframe or the redirection is broken.
Example :
The customer must close the popin or click on the back button on the browser to switch back to e-commerce website and chose another payment method.
Support
In the event of problems with the integration, missing features, etc. please contact the Axepta Team at https://axepta.bnpparibas/contact-us/ or your Axepta account manager.
User Guide
Roles, Responsibilities
The store administrator is responsible for checking the configuration of the Axepta Merchant Account in the Axepta Extranet. Admins should regularly check all the payments received to ensure they contain the expected data (currency, amount, customer information, etc.).
Business Manager
Axepta Module
Axepta Integration Module has been created. It used to configure the payment methods and payment options, as well as reviewing the order details and performing manual operations on each transaction.
Configuration
- Go to Administration > Organization > Roles > Administrator > Business manager Module
- Select the site and press “Apply”
- Select the checkboxes for the Axepta Module and press “Update”
- The Axepta Module is displayed under Merchant Tools
Module configuration
This module has 2 entries in the "Merchant tools" menu.
Configuration of Axepta payment accounts - Accounts configuration
Account configurations depend on the currencies activated on the site. After activating one / more currencies on the site, it is possible to create the necessary configurations. For this, a custom interface is available in : Merchant Tools> Axepta Module> Accounts Configuration.
In this interface, the activated currencies are listed, with the possibility of modifying / creating these configurations.
Create a payment account
When entering a new payment account, you must enter the following 4 pieces of information that will have been sent to you by Axepta :
- MerchantID : the Axepta payment account ID
- HMac key: The encryption key linked to the MerchantID
- Blowfish key : The Blowfish key for payment data
- Activation Key: the account activation key, which allows you to define the different payment methods available
When saving, a validation of the elements entered is performed. In case of error, an error message is displayed and blocks the saving of the elements entered. Once the configuration is validated, it is possible to activate / deactivate the available payment methods via checkboxes.
The list of payment methods displayed depends on your contract with Axepta.
Modification of a payment account
When modifying an existing payment account, the following 3 pieces of information must be entered, as provided by Axepta :
- MerchantID : the Axepta payment account ID
- HMac key: The encryption key linked to the MerchantID
- Blowfish key : The Blowfish key for payment data
The following field can no longer be modified if it was validated at creation.
- Activation Key: the account activation key, which allows you to define the different payment methods available
Transaction management
Transaction list
With the cartridge, you have an interface for managing Axepta transactions. It can be found in Merchant Tools > Axepta Module > Manage Orders. On this page, the orders with the "Is Axepta" flag are listed. The status and general information are also listed. When you click on the order ID, you will find the details of this order and the related Axepta transaction.
Transactions detail
On this page, the general information of the order and the payment with Axepta are displayed.
On the left side Order payment operations, you can find the list of calls, with the type of call made, and the status. So we have the PAYMENT, CAPTURE, REFUND, CANCEL operations...On the right side, we find the details of the service call returns (so all the details of the transaction made). From this page, it is also possible to cancel or refund the payment.
Cancellation
To perform a cancellation, the order must meet the following criteria:
- order.paymentStatus equal to NOT PAID
- order.status.value not equal to CANCELLED
- order.custom.axpIsCaptured not equal to TRUE
If the order respects these criteria, a "REFUND PAYMENT" button is available on the top of the page. When this button is clicked, a first call verifies that the order has no capture (via the axepta.inquire service), then a call is made to the axepta.reverse service, which will close the payment, and cancel the order. A "CANCEL" transaction line will then be added to the list.
Refund
To perform one/several refunds, the order must meet these criteria:
- order.custom.axpIsRefundCompleted equal to false
- order.custom.axpIsCaptured equal to true
If it respects these criteria, a field and a button are added on the top of the page. By default the value is the total of the order. You can enter a partial refund (i.e. a lower amount) if necessary. At the validation, a call to the axepta.capture service is made, and a transaction line is added. It will be either "PARTIAL REFUND" or "REFUND" depending on the amount.
Capture mode
As previously mentioned, 3 capture modes are available.
Auto :
This capture mode requires no action. The order is marked as "PAID", and the various Axepta attributes concerning
the capture are filled in. On the Axepta side, the transaction is captured automatically as soon as it is validated.
With delay :
This capture mode is also without any action on the Axepta side (the order is captured by itself after the delay specified in the Site Preferences). However, in order for it to be updated and marked as captured on SFCC, it is necessary to activate the Axepta Job - Update Delayed Captures. This job will run on the orders with a capture date with delay "passed". On these orders, a call is made to check the status of the payment, via the axepta.inquire service. Following the return, it performs actions similar to the "Auto" mode (so flag the order as captured).
Manual :
This capture mode requires a call to the capture endpoint. These calls are managed by the Axepta - Capture Orders job. This job runs on Axepta orders with a status of "SHIPPED", and not captured. It then makes a call to the axepta.capture service on these orders. If the return is positive, the order is marked as Captured and PAID.
Jobs configuration
There are 2 jobs created to manage transactions with Axepta :
- Axepta - Capture Orders: to retrieve the status of the payment in the "Manual" mode
- Axepta - Update Delayed Captures: to retrieve the status of the payment in the "With Delay" mode. This job uses the "axpCaptureDelay" parameter In order for the capture jobs to function correctly, it will be necessary to define one / more execution sites for them via the context of the steps.
Configuring Axepta Site Preferences
General configuration items can be found in Site Preferences ( Merchant Tools> Custom Preferences> Axepta Configurations ).
It contains the following elements :
- Payment URL : the default URL for generating payment pages
- Axepta payment method : The chosen integration method (Redirection or Iframe)
- Payment Capture Mode : The capture mode chosen for payments :
- Manual : The capture is triggered by a job, on condition of being sent
- With delay: The capture is triggered automatically after a defined duration (in the Capture delay (in hours) field)
- Automatic: The capture is triggered immediately upon validation of the payment
- Capture delay (in hours) : Only for “With delay” (Avec délai) mode. Set the desired time for the capture delay.
Payment processors
There is only one payment processor added for Axepta Implementation: AXEPTA. Go to: Merchant Tools > Ordering > Payment Processors
Payment Methods
There is only one payment method added for Axepta Implementation: AXEPTA. Go to : Merchant Tools > Ordering > Payment Methods
Logs
Logs related to Axepta Implementation can be found in :
- error-blade6-9-appserver-*date*.log – logs Salesforce Commerce Cloud errors
- customerror-blade6-9-appserver-*date*.log – logs Salesforce Commerce Cloud custom errors
- custom-axepta -blade6-9-appserver-*date*.log – Custom Axepta logs
All of the logs can be found in: Administration > Site Development > Development Setup
Select logs and enter you BM credentials if needed.
Notifications and redirect URL’s
In order to connect to Axepta back office, a configuration is required on each Axepta account to allow the communication between an instance of SFCC and Axepta. The link is done through URL’s, which are added in the Axepta Extranet platform for each account :
- Transaction notification URL https://*domain.name*/on/demandware.store/*site.name*/*locale*/Notifications-Start
- Chargeback notification URL *domain.name*/on/demandware.store/*site.name*/*locale*/Notifications-Chargeback
- Redirection URL after payment form cancelling *domain.name*/on/demandware.store/*site.name*/*locale*/Notifications-Cancel
Storefront Functionality
Payment mode
Display of the payment method in the checkout
After entering the delivery information, the payment information and the choice of payment method are displayed. The customer chooses their card type and validates the payment in the next step.
Payment by redirection
In this mode of payment, the customer is redirected to the Axepta website to enter his credit card information.
Payment by iframe
In this payment method, the customer remains on the e-commerce site. The payment method is entered in an iframe when clicking on the "Place order" button.
...
Configuration
Configuring Site Preferences
General configuration items can be found in Site Preferences (Merchant Tools> Custom Preferences> Axepta Configurations ). It contains the following elements:
- Axepta payment method : The chosen integration method (Redirection or Iframe)
- Payment Capture Mode: The capture mode chosen for payments :
- Manual: The capture is triggered by a job, on condition of being sent
- With delay: The capture is triggered automatically after a defined duration (in the Capture delay (in hours) field)
- Automatic: The capture is triggered immediately upon validation of the payment - Capture delay (in hours) : Only for “With delay” (Avec délai) mode. Set the desired time for the capture delay.
- Challenge preference :
- noPreference: The merchant takes no action : the choice of exemption is left to the issuer.
- noChallenge: The merchant requests an exemption of the strong authentication (no Challenge - Frictionless) : The issuer will accept or not the merchant’s request according to the information he sent. The merchant requires strong authentication (challenge) :
- mandateChallenge: Mandatory (mandate): the issuer must authenticate the buyer (e.g. for the first subscription transaction)
- requestChallenge: Preference (request): The merchant wishes to authenticate the buyer. The final choice remains with the issuer.
See 3DSV2 and frictionless for more information.
Configuring Custom Objects
Account configurations depend on the currencies activated on the site. After activating one / more currencies on the site, it is possible to create the necessary configurations. For this, a custom interface is available in: Merchant Tools> Axepta Module> Accounts Configuration . In this interface, the activated currencies are listed, with the possibility of modifying / creating these configurations.
You must configure the following :
- MerchantID : the Axepta payment account ID
- HMac key: The encryption key linked to the MerchantID
- Blowfish key : The Blowfish key for payment data
- Activation Key: the account activation key, which allows you to define the different payment methods available
Once the configuration has been created, it is possible to activate / deactivate the payment methods available via checkboxes.
Job configuration
In order for the capture jobs to function correctly, it will be necessary to define one / more execution sites for them via the context of the steps.
Transaction management
With the cartridge comes an Axepta transaction management interface. It can be found in Merchant Tools> Axepta Module> Manage Orders . When you click on the order ID, you will find the details of this order / related Axepta transaction.
Details of transactions
On this page is the general information of the order (different SFCC statuses). Information on the various Axepta calls made for the order is also available. On the left part Order payment operations , we find the list of calls, with the type of call made, as well as the status. We therefore have the operations PAYMENT, CAPTURE, REFUND, CANCEL ... On the right, we find the details of the return of service calls (so all the details of the transaction made). From this page, it is also possible to cancel or refund the payment.
Cancellations
To make a cancellation, the order must meet the following criteria :
- order.paymentStatus equal to NOT PAID
- order.status.value is not CANCELED
- order.custom.axpIsCaptured is not TRUE
If the order meets these criteria, a “REFUND PAYMENT” button is available at the top of the page. When this button is clicked, a first call verifies that the order has no capture (via the axepta.inquire service , then a call is made to the axepta.reverse service , which will close the payment and cancel the order. A “CANCEL” transaction line will therefore be added to the list.
Refunds
To make one or more refunds, the order must meet these criteria:
- order.custom.axpIsRefundCompleted equal to false
- order.custom.axpIsCaptured equal to true
If it meets these criteria, a field and a button are added to the top of the page. By default, the value entered is the total of the order. You can enter a partial refund (therefore a lower amount) if necessary. On validation, a call to the axepta.capture service is made, and a transaction line is added. It will be either “PARTIAL REFUND” or “REFUND” depending on the amount.
Capture
As indicated previously, 3 capture modes are available :
- Auto
This capture mode does not require any action. The order is marked as “PAID”, and the various Axepta attributes relating to the capture are fulfilled. On the Axepta side, the transaction is automatically captured as soon as it is validated.
- With delay
This capture mode also has no action on the Axepta side (the order is captured by itself after the time period specified in the Site Preferences). However, for it to be up to date and marked as captured on SFCC, it is necessary to activate the Job Axepta - Update Delayed Captures . The job will run on orders with a capture date with an “expired” delay. On these, a call is made to verify the status of the payment, via the service axepta.inquire . Following the return, it performs actions similar to “Auto” mode (so flags the command as captured).
- Manual
This capture mode requires a call to the capture endpoint. These calls are managed by the Axepta - Capture Orders job. This job runs on Axepta orders having a “SHIPPED” status, and not being captured. It then makes a call to the axepta.capture service on these commands . If the feedback is positive, the order is marked as Captured and PAID.
Testing
The test cases are built to cover both the storefront functionality, from an end-customer’s point of view, as well as business manager functionality, from a merchant’s perspective.
Please refer also to section 2 – Component Overview : Use cases for more samples
Axepta has been tested with :
- SFRA version 5.3.0
- Sitegenesis 104.1.3
- SFCC API version up to 22.10
Unit tests
A set of unit tests is available for the different helpers used. They are written with the chai plugin. In order to run the tests, you have to run the npm run test command : npm run test:integration --baseUrl {{yourDomainUrl}}
In Order to run unit tests run the following command : npm run test
The result must be 15 passing
Integration tests
In addition to unit tests, a set of integration tests are also present on the SFRA and SiteGenesis cartridge. These are based on the codeceptjs plugin with its TestCafe driver
Configuration
To be able to run the different tests, it is necessary to configure a sandbox on which to run the tests.
To do this, open the int_axepta_sfra / test / integration / config.js file :
In this file, modify the following lines:
Storefront: {
url: '<https://YOURSANDBOX/s/RefArch/home?lang=fr_FR',>
baseUrl: '<https://YOURSANDBOX',> // BASE URL
login: '/on/demandware.store/Sites-RefArch-Site/fr_FR/Checkout-Login' // Checkout
login page,
},
Customer: {
email: '', // YOUR TEST CUSTOMER EMAIL
password: '' // YOUR TEST CUSTOMER PASSWORD
}
With SiteGenesis, open int_axepta_sitegenesis / test / integration / config.js file :
Storefront: {
baseUrl: 'YOUR-SANDBOX-URL/on/demandware.store/Sites-SiteGenesis-Site/'
},
Customer: {
email: 'TEST-EMAIL',
password: 'PASSWORD'
},
Launch of tests
Then, 2 commands are available, each for a different integration mode.
- Redirection mode
For this mode, you must first set the integration mode preference to redirect Then, the npm run testint:redirect (SFRA) or npm run testintsg:redirect (SiteGenesis) command is used to run the tests for the redirect mode.
The tests for this mode are available in the file int_axepta_sfra/test/integration/tests/Checkout_Redirect_test.js or int_axepta_sitegenesis/test/integration/tests/Checkout_Redirect_test.js
- Iframe mode
For this one, you must set the integration mode preference on iframe Then, the npm run testint:iframe or npm run testintsg:iframe (SiteGenesis) command is used to run the tests for the redirect mode.
The tests for this mode are available in the file int_axepta_sfra/test/integration/tests/Checkout_Iframe_test.js or int_axepta_sitegenesis/test/integration/tests/Checkout_Iframe_test.js
Operations, Maintenance
Data Storage
Custom Objects
This cartridge adds one custom object axpAccountsConfiguration, needed to store informations about accounts. It contains information defined in Merchant Tools> Axepta Module> Accounts Configuration.
Orders
Axepta will store communication results in order notes like :
New custom attributes are added to orders :
- axpCCBrand : The Credit Card Brand
- axpCaptureDate : The payment capture date
- axpCaptureDelayedDate : The delayed capture date
- axpCode : The response code from Axepta
- axpIsOrder : Flag that indicates if order was handled by Axepta
- axpIsCaptured : Flag that indicates if the payment has been captured
- axpIsRefundCompleted : Flag that indicates if the refund is complete
- axpPayID : The payment ID from Axepta
- axpRefundedAmount : The amount that has already been refunded
- axpTransID : The Transaction ID from Axepta
Services
The Axepta integration uses the below services
All services are using the below Profile configuration. It can be easily changed for different merchants. A different/ a separate Profile can be added for each service
Availability
Every error related to Axepta is reported to the Axepta API endpoint. The request payload contains error description, order ID and stack trace payload in JSON format. The order will be failed and will contain an ‘Error’ within the Order Notes (BM – Order Management). Also, in the error logs, this situation will be added, with specific details. The end user will receive a generic technical error with the message: “We're sorry that your order could not be placed. This probably happened due to a high order volume or temporary connection errors. Please wait a few minutes and resubmit your order. We won't process your payment until you successfully place your order. If you have further questions, please contact us .”
Failover
In case of unavailability of Axepta service, the content of the iframe or the redirection is broken.
Example :
The customer must close the popin or click on the back button on the browser to switch back to e-commerce website and chose another payment method.
Support
In the event of problems with the integration, missing features, etc. please contact the Axepta Team at https://axepta.bnpparibas/contact-us/ or your Axepta account manager.
User Guide
Roles, Responsibilities
The store administrator is responsible for checking the configuration of the Axepta Merchant Account in the Axepta Extranet. Admins should regularly check all the payments received to ensure they contain the expected data (currency, amount, customer information, etc.).
Business Manager
Axepta Module
Axepta Integration Module has been created. It used to configure the payment methods and payment options, as well as reviewing the order details and performing manual operations on each transaction.
Configuration
- Go to Administration > Organization > Roles > Administrator > Business manager Module
- Select the site and press “Apply”
- Select the checkboxes for the Axepta Module and press “Update”
- The Axepta Module is displayed under Merchant Tools
Module configuration
This module has 2 entries in the "Merchant tools" menu.
Configuration of Axepta payment accounts - Accounts configuration
Account configurations depend on the currencies activated on the site. After activating one / more currencies on the site, it is possible to create the necessary configurations. For this, a custom interface is available in : Merchant Tools> Axepta Module> Accounts Configuration.
In this interface, the activated currencies are listed, with the possibility of modifying / creating these configurations.
Create a payment account
When entering a new payment account, you must enter the following 4 pieces of information that will have been sent to you by Axepta :
- MerchantID : the Axepta payment account ID
- HMac key: The encryption key linked to the MerchantID
- Blowfish key : The Blowfish key for payment data
- Activation Key: the account activation key, which allows you to define the different payment methods available
When saving, a validation of the elements entered is performed. In case of error, an error message is displayed and blocks the saving of the elements entered. Once the configuration is validated, it is possible to activate / deactivate the available payment methods via checkboxes.
The list of payment methods displayed depends on your contract with Axepta.
Modification of a payment account
When modifying an existing payment account, the following 3 pieces of information must be entered, as provided by Axepta :
- MerchantID : the Axepta payment account ID
- HMac key: The encryption key linked to the MerchantID
- Blowfish key : The Blowfish key for payment data
The following field can no longer be modified if it was validated at creation.
- Activation Key: the account activation key, which allows you to define the different payment methods available
Transaction management
Transaction list
With the cartridge, you have an interface for managing Axepta transactions. It can be found in Merchant Tools > Axepta Module > Manage Orders. On this page, the orders with the "Is Axepta" flag are listed. The status and general information are also listed. When you click on the order ID, you will find the details of this order and the related Axepta transaction.
Transactions detail
On this page, the general information of the order and the payment with Axepta are displayed.
On the left side Order payment operations, you can find the list of calls, with the type of call made, and the status. So we have the PAYMENT, CAPTURE, REFUND, CANCEL operations...On the right side, we find the details of the service call returns (so all the details of the transaction made). From this page, it is also possible to cancel or refund the payment.
Cancellation
To perform a cancellation, the order must meet the following criteria:
- order.paymentStatus equal to NOT PAID
- order.status.value not equal to CANCELLED
- order.custom.axpIsCaptured not equal to TRUE
If the order respects these criteria, a "REFUND PAYMENT" button is available on the top of the page. When this button is clicked, a first call verifies that the order has no capture (via the axepta.inquire service), then a call is made to the axepta.reverse service, which will close the payment, and cancel the order. A "CANCEL" transaction line will then be added to the list.
Refund
To perform one/several refunds, the order must meet these criteria:
- order.custom.axpIsRefundCompleted equal to false
- order.custom.axpIsCaptured equal to true
If it respects these criteria, a field and a button are added on the top of the page. By default the value is the total of the order. You can enter a partial refund (i.e. a lower amount) if necessary. At the validation, a call to the axepta.capture service is made, and a transaction line is added. It will be either "PARTIAL REFUND" or "REFUND" depending on the amount.
Capture mode
As previously mentioned, 3 capture modes are available.
Auto :
This capture mode requires no action. The order is marked as "PAID", and the various Axepta attributes concerning
the capture are filled in. On the Axepta side, the transaction is captured automatically as soon as it is validated.
With delay :
This capture mode is also without any action on the Axepta side (the order is captured by itself after the delay specified in the Site Preferences). However, in order for it to be updated and marked as captured on SFCC, it is necessary to activate the Axepta Job - Update Delayed Captures. This job will run on the orders with a capture date with delay "passed". On these orders, a call is made to check the status of the payment, via the axepta.inquire service. Following the return, it performs actions similar to the "Auto" mode (so flag the order as captured).
Manual :
This capture mode requires a call to the capture endpoint. These calls are managed by the Axepta - Capture Orders job. This job runs on Axepta orders with a status of "SHIPPED", and not captured. It then makes a call to the axepta.capture service on these orders. If the return is positive, the order is marked as Captured and PAID.
Jobs configuration
There are 2 jobs created to manage transactions with Axepta :
- Axepta - Capture Orders: to retrieve the status of the payment in the "Manual" mode
- Axepta - Update Delayed Captures: to retrieve the status of the payment in the "With Delay" mode. This job uses the "axpCaptureDelay" parameter In order for the capture jobs to function correctly, it will be necessary to define one / more execution sites for them via the context of the steps.
Configuring Axepta Site Preferences
General configuration items can be found in Site Preferences ( Merchant Tools> Custom Preferences> Axepta Configurations ).
It contains the following elements :
- Payment URL : the default URL for generating payment pages
- Axepta payment method : The chosen integration method (Redirection or Iframe)
- Payment Capture Mode : The capture mode chosen for payments :
- Manual : The capture is triggered by a job, on condition of being sent
- With delay: The capture is triggered automatically after a defined duration (in the Capture delay (in hours) field)
- Automatic: The capture is triggered immediately upon validation of the payment
- Capture delay (in hours) : Only for “With delay” (Avec délai) mode. Set the desired time for the capture delay.
Payment processors
There is only one payment processor added for Axepta Implementation: AXEPTA. Go to: Merchant Tools > Ordering > Payment Processors
Payment Methods
There is only one payment method added for Axepta Implementation: AXEPTA. Go to : Merchant Tools > Ordering > Payment Methods
Logs
Logs related to Axepta Implementation can be found in :
- error-blade6-9-appserver-*date*.log – logs Salesforce Commerce Cloud errors
- customerror-blade6-9-appserver-*date*.log – logs Salesforce Commerce Cloud custom errors
- custom-axepta -blade6-9-appserver-*date*.log – Custom Axepta logs
All of the logs can be found in: Administration > Site Development > Development Setup
Select logs and enter you BM credentials if needed.
Notifications and redirect URL’s
In order to connect to Axepta back office, a configuration is required on each Axepta account to allow the communication between an instance of SFCC and Axepta. The link is done through URL’s, which are added in the Axepta Extranet platform for each account :
- Transaction notification URL https://*domain.name*/on/demandware.store/*site.name*/*locale*/Notifications-Start
- Chargeback notification URL *domain.name*/on/demandware.store/*site.name*/*locale*/Notifications-Chargeback
- Redirection URL after payment form cancelling *domain.name*/on/demandware.store/*site.name*/*locale*/Notifications-Cancel
Storefront Functionality
Payment mode
Display of the payment method in the checkout
After entering the delivery information, the payment information and the choice of payment method are displayed. The customer chooses their card type and validates the payment in the next step.
Payment by redirection
In this mode of payment, the customer is redirected to the Axepta website to enter his credit card information.
Payment by iframe
In this payment method, the customer remains on the e-commerce site. The payment method is entered in an iframe when clicking on the "Place order" button.
Description of available payments methods
Table Filter | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|