Skip to content

Adyen/adyen-sap-customer-checkout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Adyen SAP Customer Checkout


❗ IMPORTANT NOTICE
2026-07-09: We're currently experiencing issues with local terminal connections when using a new SAP Machine version above 17.0.16. To be on the safe side: Do NOT update until further notice.

IMPORTANT CHANGES

With Version 1.1.0 of the plugin the handling of the Adyen certificates was changed. A java keystore is introduced.

With Version 1.1.1 of the plugin SAP CCO FP16 and FP17 is not supported anymore.

With Version 1.3.1 the Adyen SAP CCO Integration requires Java 17!

Table of Content

Supported Features

  • Card payments via Adyen terminals in SAP Customer Checkout
    • Payments
    • Split-Payments
    • Referenced and Unreferenced Refunds including threshold definition
    • Tipping
    • Cash desk closing – autofill card values
    • multi-currency handling
    • customizable merchant reference
  • Dynamic terminal selection for shared POS setups
  • Tap2Pay on Android with the Adyen payments app
  • Recurring payments, mandate mode, and 0-Euro tokenization
  • Pre-Auth with Cross-register flow, auto-capture, auto-cancel, and void protection
  • receipt-driven signature, and translation support

Prerequisites


Installation and Configuration


Plugin Installation

Prior to version 1.1.0

Download the Adyen certificates from here, rename them as shown, and place them also in the AP folder.

With version 1.1.0 and later

The plugin now automatically provides certificates with the certificates that were released by Adyen at the day of the plugin release.
The plugin will automatically create a java keystore file in CCOs AP folder.

You can also define a different path to the java keystore containing the Adyen certificates as well as a different password with the two new plugin properties:

  • ADYEN_KEY_STORE_FILE_PATH
  • ADYEN_KEY_STORE_PASSWORD

Please restart CCO if you changed anything related to the key store.

Changing certificates in Java Keystore

Certificates usually have a valid to date. In case of the current Adyen certificates it is 2048. In the unlikely event, that these certificates
need to be updated in the keystore, please follow these instructions. You can also use tools like "keystore explorer" if you are unfamiliar with cli commands.

Certificates to be imported
  • adyen-live.pem → Entry name: adyen-terminalfleet-live
  • adyen-test.pem → Entry name: adyen-terminalfleet-test
Prerequisites
  1. Java Development Kit (JDK)
    1. The "keytool" command-line utility is included in the JDK.
    2. Ensure JDK is installed and added to your system path.
    3. If not installed, refer to official documentations on how to install JDK.
  2. Existing Java Keystore (adyen-cco-plugin.jks)
    1. If the file does not exist, it will be created when the Adyen plugin is loaded from CCO.
  3. Keystore Password
    1. You must know or be in possession of the keystore password.
Steps to import or Update certificates
Windows & macOS
  1. Open Command Prompt (cmd.exe) as Administrator in Windows or the terminal in macOS
  2. Navigate to the directory containing the keystore and the certificates usually CCOs AP folder
    1. cd path\to\APfolder
  3. Import or update the adyen-live.pem certificate:
    1. keytool -importcert -trustcacerts -alias adyen-terminalfleet-live -file adyen-live.pem -keystore adyen-cco-plugin.jks -storepass YOUR_KEYSTORE_PASSWORD -noprompt
  4. Import or update the adyen.test.pem certificate:
    1. keytool -importcert -trustcacerts -alias adyen-terminalfleet-test -file adyen-test.pem -keystore adyen-cco-plugin.jks -storepass YOUR_KEYSTORE_PASSWORD -noprompt
  5. Verify that both certificates are correctly imported:
    1. keytool -list -keystore adyen-cco-plugin.jks -storepass YOUR_KEYSTORE_PASSWORD

Restart CCO and look for any error messages from the plugin while CCO starts up.

Adding a store in Adyen backend

Please log into your Adyen account and create a new store for your merchant account.

A: Add Store reference for example e.g. A25

B: Add Store description

C: Add information which is shown on the shopper receipt

Add address and phone number and add the store. Afterward assign your terminal to your newly created store. To achieve this, go to In-person payments → Terminals. Click on the button "..." of the terminal and choose "Reassign".

Terminal configuration

Connect your terminal to your local network. Either with LAN or via Wifi. Please consult the manuals for your specific terminal [here](Get started manuals | Adyen Docs).

Note: Usually the terminal has to be in the same network as the CCO instance. If this is not the case or not possible, please talk to your network administrators.

SAP Customer Checkout Configuration

Start your SAP CCO instance, login as User with administrative privileges, and go to the configuration backend. In the tab Accounting open the subtab Credit Card Type.

Add a new credit card which will trigger the payment transaction on the Adyen terminal. The card can be called Adyen but you can name the new card as you like. Set the visibility of all other cards (except the ones not handled by the payment terminal) to Visible = OFF but keep them active. The Adyen card should be visible.

Plugin Configuration

KEY VALUES
ADYEN_ACTIVATE_DYNAMIC_TERMINAL true / false
If true is selected, the terminal is not linked to a single POS. When by card at the checkout, the cashier is asked which terminal should be used. This can be usefull, if you use CCO on a tablet and the POS has not a fixed location in the store.

Note: The API Key has also be provided.
ADYEN_ACTIVATE_UNREFERENCED_REFUNDS true / false
Handles refunds only allowed with a referenced payment from an older receipt. This has to be activated by Adyen. Please consult your Adyen contact person.
ADYEN_API_KEY XSA2342FEFASFEF
This can be created in your Adyen backend in the section Developers / API credentials.

Note: The permission to use the terminal management API has to be activated by Adyen. Please consult your Adyen contact.
ADYEN_CARD_MAPPING
mc=3;amex=1;visa=2;visa_applepay=2;maestro=5
The Adyen terminal will respond with an alphanumeric code as represenation for the card being used. The codes can be found here. This alphanumeric code has to be mapped to a specific credit card in CCO. 
The mapping works with an imaginary wildcard. This means, if you want to map all visa payment methods to CCO card 2 except visa_applepay and visabusiness, the mapping for visa could look like this:

visa=2;visa_applepay=3;visabusiness=5
ADYEN_COMPANY_ACCOUNT samplecompany
The ID of your company. Seen in the Adyen Backend.
ADYEN_CREATE_NEW_ABSTRACT_PAYMENT_ITEM true / false
If false is selected, after a failed card payment, the cashier can choose a different payment method for the next try e.g. cash. If true is selected, the plugin will automatically add a new payment item of type card payment to retry the payment on the terminal.
ADYEN_EXCLUDE_CARD_IDS 1;1337;9234
Codes of CCO credit cards, that should not be handled by the Adyen terminal.
ADYEN_FALLBACK_CARD 3
Indicates which credit card should be used, if the terminal responds with a payment method which is not mapped in ADYEN_CARD_MAPPING.
ADYEN_FALLBACK_SERIAL_NUMBER AMS1-00000000000000000
Serial number of the payment terminal which is used when ADYEN_ACTIVATE_DYNAMIC_TERMINAL is set to false.

Note: The serial number of the terminal is visible in the Adyen backend. It's not the serial number printed on the device itself!
ADYEN_FALLBACK_TERMINAL https://192.168.13.37
Specifies the IP address of the payment terminal which is used when ADYEN_ACTIVATE_DYNAMIC_TERMINAL is set to false.
ADYEN_IS_TEST_ENV true / false
Set this property according to the intended use.
ADYEN_KEY_IDENTIFIER
ADYEN_KEY_PASSPHRASE
ADYEN_KEY_VERSION
IDENTIFIER
PASSPHRASE
1
This parameters can be configured either on store level or on terminal level. E.g. go to In- person payments / Stores  / Integrations or In-person payments / Terminals / Integrations

Note: For the sake of security please use a generated Identifier and Passphrase and treat them like passwords!

Note: When using the ADYEN_DYNAMIC_TERMINAL_CHOICE feature all terminals in one store need to use the same values! Therefore it is recommended to configure this on store level rather than terminal level.
ADYEN_MERCHANT_ACCOUNT SampleMerchant
Select your corresponding merchant account Id.
ADYEN_PAYMENT_REFERENCE_PATTERN ${cco_prefix}
You can configure how the merchant reference should look like. You can see this in the Adyen backend transactions / payments in column Merchant reference. This can become handy if you need IDs from CCO for mapping payments in your ERP system. 

Possible placeholder:
cco_prefix - Your CCO prefix
receipt_id - Your CCO receipt id
transaction_amount - The amount for the payment transaction
transaction_currency - The currency for the payment transaction
transaction_timestamp - The timestamp of the transaction
terminal_serial_number - The serial number of the terminal used
terminal_display_label - The configured display label of the terminal

Note: The string can be max. 80 characters. Any characters exceeding this will not be transferred.
ADYEN_STORE_ID A15
The ID of the store in which the terminal was boarded.
ADYEN_TERMINAL_CONNECTION_TIMEOUT 10000
Value in milliseconds how long the plugin will wait for a connection. If you experience slow network connections in your store, please adjust this timeout accordingly.
ADYEN_TERMINAL_READ_TIMEOUT 120000
Value in milliseconds how long the terminal will wait for the shoppers card to be presented.

Note: The processing time of a payment transaction is included into this timeout. This means the timeout will also occur, if the card was presented at ms 119999 and the processing takes > 1 ms.
ADYEN_PRINT_KEY_FILTER The terminal will send the merchant and customer payment receipt in a key-value structure. By providing unwanted keys spearated with semicolon, you can hide certain info on the print out. 


Available keys can be found here

aid
ADYEN_USE_TAP_TO_PAY Flag to activate the Tap2Pay Feature
ADYEN_PAYMENT_APP_INSTALLATION_ID Don't set this field. It will be automatically set when the payment app is boarded
ADYEN_BOARD_PAYMENT_APP_ON_STORE_LEVEL Set this flag if the Adyen payments app should be boarded on store level.
ADYEN_KEY_STORE_FILE_PATH Will be set automatically with the first startup. Change only if needed!
ADYEN_KEY_STORE_PASSWORD Will be set automatically initially to "changeit". Please consider changing it in a production environment!
ADYEN_USE_CLOUD_CONNECTION Set to true, if you want to use Cloud Connection feature.
ADYEN_CLOUD_ENDPOINT This is the endpoint for Cloud Connection. Communication is synchronous. See the current values for test or live here Adyen Terminal Cloud Connection

Restart your CCO instance after the config. If any mandatory plugin property is missing, you will get a warning after the next login.

Dynamic Terminal Choice

The dynamic terminal choice feature allows the cashier to dynamically select an active Adyen terminal on store level. In a mobile POS setup, this allows the cashier to work without having to carry a payment terminal, and instead use whichever terminal is currently available nearby. Or you could share one terminal for multiple CCO instances. Cashiers can select a standard terminal for all upcoming payment transactions until logout or removed manually.
The manual selection or removing can be achieved with the documented quickselection buttons.

To use the dynamic terminal choice feature, the Adyen API key needs to have the following roles. Some may only be activated by Adyen itself.
Please consult your contact person.

  • Management API — Stores read
  • Management API — Stores read and write
  • Management API — Terminal actions read
  • Management API — Terminal settings read
  • Management API — Terminal settings read and write
  • Management API — Terminal actions read

Some restrictions may apply:

  • Key identifier, passphrase, and key version must be the same on store level for all terminals

Quickselection Buttons

This is only applicable, if you intend to use the ADYEN_DYNAMIC_TERMINAL_CHOICE feature. With these buttons the cashier can choose his "standard" terminal or delete his prior choice even without an open receipt or running payment transaction.

Standard Terminal Choice

Add a new quickselection button in CCO Manager and add the following string into the Extended JavaScript input field. "event" : { "eventName" : "ADY_ADD_STANDARD_TERMINAL_CHOICE" }

Remove Standard Terminal

Add a new quickselection button in CCO Manager and add the following string into the Extended Javascript input field.

"event" : { "eventName" : "ADY_REMOVE_STANDARD_TERMINAL_CHOICE" }

Tap2Pay (Android)

With Version 1.3.0 you can use the Tap2Pay feature on android. Contact Adyen to activate the Tap2Pay functionality for your account.
For further info please consult the official Adyen docs here.
To get SAP Customer Checkout running on android, please contact hokona to obtain their CCO on Android solution.

Prerequisites

  • Install the Adyen payments (test) app via the Google Play Store
  • have a SAP CCO running on android
  • have file system access to the android device.
  • Ensure Android USB-Debugging is off
  • Create an API Key with the role "Adyen Payments App Role" and also create a client key (is created on the same page where the api key is created)

Boarding Process

  • After the installation of the Adyen payments (test) app please open it once.
  • Ensure the following plugin properties have been set correctly
    • Company Account
    • Merchant Account
    • Key Identifier (use the one set at store-level)
    • Key Passphrase (same as above)
    • Key version (same as above)
    • API Key
    • Keystore file path
    • Keystore password
    • Fallback Card
    • Card Mapping
    • Use Tap To Pay
    • Board Payment App on Store level (set to true if payment app should be boarded on store level otherwise it will be boarded on merchant level)
  • Add the Quick selection buttons to a specific quick-selection ui, preferably not the one the cashier uses
  • reboot CCO
  • Make sure no configuration errors occurred after login
  • Click on the board app button
    • the first app switch will appear
    • the first app switch is used to ask the app for its boarding status
    • CCO UI will be visible again with a loading indicator
    • boarding can take some time...
    • When CCO receives the boarding response the loading indicator will disappear and after some seconds the last app switch will occur
    • The payment app should now show a screen "Setup complete. Forward to POS App in 5 seconds."
    • CCO UI is visible again
    • When the Adyen payment (test) app is now opened it should show a screen "Ready to accept payments".
    • Note: In some cases it was necessary to close the payment app and open it again after boarding otherwise no payment was possible
    • Note: In some cases it was also necessary to restart CCO
    • Note: In some cases it was also necessary to clear the App Cache of the Adyen payment (test) app

Unboarding Process

In case you want to unboard a boarded Adyen payment app, please use the following flow:

  • Click on unboard app button
    • No app switch will occur, the app will not accept payment transactions anymore
    • Note: Once the app is unboarded you will need to uninstall it, download it from the Play Store again and go through the boarding process again

Quickselection Buttons

Please be aware that the board and unboard buttons should only be visible for administrative users not for cashiers!

Board app:

"event" : { "eventName" : "ADY_BOARD_PAYMENT_APP" }

Unboard app:

"event" : { "eventName" : "ADY_UNBOARD_PAYMENT_APP" }

Cloud Connection

Cloud Connection enables the use of the terminal as usual, even if it's not connected to the same Wi-Fi as CCO.

Prerequisites

  • Ensure that the following plugin properties have been set correctly
    • Company Account
    • Merchant Account
    • Store ID (if dynamic terminal choice is enabled)
    • Identifier (can be a user-defined value which matches Adyen's requirements, is needed for a secure and encrypted communication between CCO and Adyen)
    • Passphrase (same applies to this)
    • Key version (numerical value, can be set to 1 or any user-defined value)
    • Fallback terminal serial number (if dynamic terminal choice is disabled)
    • API Key (the one created earlier)
    • Keystore file path (will be created automatically on first startup, please double-check if valid)
    • Keystore password (will be set to "changeit" on first startup, should be changed in the keystore as well as here for prod use)
    • Fallback Card
    • Card Mapping
    • Use Cloud Connection
    • Cloud Endpoint

Notes on Payments

The entire user flow for Cloud Connection is the same as for Local Terminal, including dynamic terminal choice.

Tokenization (Card on File)

Enables saving card tokens during payment for later use (recurring payments, card-on-file).

Configuration

Property Type Default Description
ADYEN_ENABLE_TOKENIZATION Boolean false Enable tokenization during payments
ADYEN_RECURRING_PROCESSING_MODEL String CardOnFile Processing model (see table below)
ADYEN_SHOPPER_REFERENCE_PATTERN String {receiptId} Pattern for unique shopper reference. Placeholder: {receiptId}

Recurring Processing Model

Value Description Example
CardOnFile Customer stores card for future customer-initiated purchases. Default for POS scenarios. Regular customer pays with stored card on each visit
Subscription Merchant charges a fixed amount on a regular schedule (subscription model). Follow-up charges run server-to-server, not through the terminal. Monthly pass: first payment at the terminal, then monthly charges via backend
UnscheduledCardOnFile Merchant charges at irregular intervals without a fixed schedule. Also server-to-server. Damage charges, pay-per-use

Important: For Subscription and UnscheduledCardOnFile, the plugin only covers the entry point — the card is tokenized at the terminal and the token ( storedPaymentMethodId) is stored in the PaymentTransactionDetail. Follow-up charges must be handled by a separate backend system that uses the token and calls Adyen's eCommerce API (/payments). The plugin itself does not execute recurring payments.

For pure POS scenarios without recurring charges, CardOnFile is the correct choice.

Mandate Mode

The cashier can activate "Mandate Mode" via the ADY_SET_MANDATE_MODE event before a card payment. When active, the next card payment will include tokenization data (shopperReference + recurringProcessingModel), creating a token for that card. The mode is reset automatically after the payment.

"event": {"eventName": "ADY_SET_MANDATE_MODE"}

0-Euro Tokenization

Use the "Tokenize Card" button (event ADY_PERFORM_CARD_ACQUISITION) to tokenize a card without a payment. This sends a CardAcquisition request with TotalAmount=0 — no money is moved and nothing appears on the customer's bank statement.

Customer Lookup

After a successful card acquisition (or tokenized payment), the plugin automatically looks up the card alias in the customer database. A customer is recognized when the card alias is stored in the UDF field udfString1 of the customer master data. The plugin never writes this field — storing the alias on the customer is up to a downstream process (e.g. the backend that consumes the posted receipts) or manual maintenance.

  • Single match — the customer is automatically assigned to the receipt
  • Multiple matches — the cashier is prompted to select the correct customer. Card acquisition only: during a payment the receipt posts immediately afterward, so no selection is possible and only a message is shown.
  • No match — an info message is shown

Prerequisites

  • Enable "Recurring details" in Adyen Customer Area > Developers > Additional data

Subscription Tokenization

Enables automatic card tokenization when receipts contain items from specific article groups. This covers the use case where a customer purchases a subscription product at the POS and their card needs to be tokenized for future recurring charges.

Configuration

Property Type Default Description
ADYEN_SUBSCRIPTION_GROUPS_CARD_ON_FILE String (empty) Article group IDs (;-separated) that trigger CardOnFile tokenization
ADYEN_SUBSCRIPTION_GROUPS_SUBSCRIPTION String (empty) Article group IDs (;-separated) that trigger Subscription tokenization
ADYEN_SUBSCRIPTION_GROUPS_UNSCHEDULED String (empty) Article group IDs (;-separated) that trigger UnscheduledCardOnFile tokenization

How it works

When a receipt contains items from a configured subscription article group, the plugin detects this and acts depending on the receipt amount:

Non-Zero Amount Receipts

The card payment automatically includes tokenization data (shopperReference + recurringProcessingModel). The token is returned in the payment response and stored on the PaymentItem. If the article group is configured for subscription, a signature consent prompt is shown on the terminal before the payment.

Zero-Amount Receipts (0-Euro Subscription)

When the receipt total is zero (e.g., free trial, promotional subscription), the plugin runs a dedicated flow on receipt posting:

  1. Consent capture — signature on the terminal. If declined, the receipt posting is blocked.
  2. Card acquisition — a CardAcquisition request tokenizes the card without moving money.
  3. Token storage — the token data (TOKENIZATION_ALIAS, TOKENIZATION_SHOPPER_REFERENCE, TOKENIZATION_STORED_PAYMENT_METHOD_ID) is stored as additional fields on the posted receipt, where a downstream system can pick it up. Note the difference to tokenized payments: there the token data is stored as payment transaction details on the payment item — a zero-amount receipt has no payment item, hence the receipt fields.

After the card acquisition completes, the terminal is released back to idle with a positive confirmation animation.

Split Payment Restriction

Split payments are not allowed for subscription receipts. The full amount must be paid with a single card payment to ensure tokenization covers the correct card.

Pre-Authorization (Hotels / Car Rentals)

Blocks an amount on a card without capturing it. The pre-authorization does not create a fiscal receipt. The receipt is parked (PARKED status) and can be resumed at any register for capture.

Configuration

Property Type Default Description
ADYEN_ENABLE_PRE_AUTH Boolean false Enable pre-authorization mode

How it works

ADYEN_ENABLE_PRE_AUTH enables the pre-authorization capability — it does not make all payments pre-authorizations. Normal card payments continue to work as before. The cashier must explicitly activate pre-auth mode before each pre-auth payment.

Cross-Register Flow

Register A — Reservation (PreAuth):

  1. Create receipt and add items
  2. Click the "PreAuth" button (ADY_SET_PREAUTH_MODE) — a confirmation message appears
  3. Pay with card — only this payment is sent as a pre-authorization (authorisationType=PreAuth)
  4. A message shows the Receipt ID — park the receipt (no fiscal document)

Register B — Checkout:

  1. Resume the parked receipt (CCO's "Resume Parked Receipt" function)
  2. Optionally adjust items (add/remove)
  3. Post the receipt — the plugin automatically handles capture (see below)

Note: If the cashier does NOT click the PreAuth button, the card payment is processed normally (immediate capture). The pre-auth flag is automatically reset after each payment (success or failure).

Auto-Capture on Receipt Posting

When a receipt with an active pre-authorization (AUTHORIZED status) is posted, the plugin automatically captures the pre-auth via the Adyen Checkout API. No manual ADY_PREAUTH_CAPTURE event is needed for the standard flow.

The plugin handles amount differences between the reserved amount and the final receipt total:

Scenario Behavior
Receipt total = reserved amount Full capture at the original amount
Receipt total < reserved amount PaymentItem amount is aligned down to the receipt total. Adyen captures the lower amount and automatically releases the remainder.
Receipt total > reserved amount PaymentItem stays at the reserved amount. The cashier pays the difference with a second payment (cash or another card). The pre-auth is captured at the original reserved amount.

A success or failure message is shown to the cashier after the capture API call completes.

Auto-Cancel on Storno (Void)

When a receipt with an active pre-authorization is voided (storniert), the plugin automatically cancels the pre-auth at Adyen before the void proceeds.

  • If the cancel succeeds → the void continues, and a success message is shown
  • If the cancel fails → the void is blocked, an error message is shown, and the cashier can retry. This prevents a receipt from being voided while money is still reserved on the card.

When a single pre-auth PaymentItem is voided (not the full receipt), the same cancel logic applies but does not block the void on failure — a warning is shown instead.

Manual Events

These events can still be used for manual control, e.g., for adjustments or explicit capture/cancel on parked receipts before posting.

Event Payload Description
ADY_SET_PREAUTH_MODE Activate pre-auth for the next card payment only. Resets automatically after payment.
ADY_PREAUTH_ADJUST {receiptId, amount} Change the blocked amount. receiptId is auto-injected from current receipt if omitted.
ADY_PREAUTH_CAPTURE {receiptId} Capture (charge) the pre-authorized amount. receiptId auto-injected.
ADY_PREAUTH_CANCEL {receiptId} Release the blocked amount. receiptId auto-injected.

PaymentTransactionDetail Keys

Key Description
PREAUTH_PSP_REFERENCE Adyen PSP reference for the pre-auth
PREAUTH_STATUS Lifecycle: AUTHORIZEDCAPTURED or CANCELLED
PREAUTH_TIMESTAMP ISO-8601 timestamp of the pre-auth
PREAUTH_ORIGINAL_AMOUNT Blocked amount (plain decimal, updated on adjust)
PREAUTH_CURRENCY Currency code (e.g., EUR)

Void Protection

A pre-auth PaymentItem cannot be voided once it has been CAPTURED — the money is already collected. The cashier will see an error message if they attempt to void such a PaymentItem.

After a manual pre-auth cancel (ADY_PREAUTH_CANCEL) the reserved amount is released at Adyen, but the payment item stays on the receipt. Such a receipt can not be posted anymore — the cashier must void the receipt. The manual cancel is meant for releasing the reservation while keeping the receipt around for review before voiding it.

Notes

  • At least 5 seconds must pass between pre-auth and first adjustment (Adyen requirement).
  • Pre-authorizations expire after 7-30 days depending on card scheme (Visa 5-30 days, Mastercard 30 days, Amex 7 days).
  • If the auto-capture fails after posting, the receipt is already committed. A critical error is logged and the cashier is notified. Manual capture via the Adyen Customer Area is required.
  • On the Adyen test environment, captured pre-auths may remain at SentForSettle status instead of transitioning to Settled immediately (unlike auto-captured terminal payments). This is expected — the test environment does not fully simulate bank settlement batches for manual captures. On production, settlement follows the normal acquirer batch cycle (1-2 business days).

Quick selection buttons

"event": {"eventName": "ADY_SET_PREAUTH_MODE"}
"event": {"eventName": "ADY_PREAUTH_ADJUST"}
"event": {"eventName": "ADY_PREAUTH_CAPTURE"}
"event": {"eventName": "ADY_PREAUTH_CANCEL"}

Signature Capture

Captures a customer signature on the Adyen terminal display. Can be triggered standalone via a button or used internally by other features (e.g., subscription consent).

"event": {"eventName": "ADY_PERFORM_SIGNATURE"}

The event accepts optional payload parameters:

Parameter Type Default Description
saleId String SIG-{timestamp} Identifier for the signature session
signatureText String ADYEN_SIGNATURE_FIELD_TEXT (translation) Text displayed above the signature field
timeout Number 120 Timeout in seconds

The signature data is returned as a Base64-encoded image and broadcast via ADY_SHOPPER_SIGNATURE event for further processing by the frontend.

Note: The permanent text (slogan) displayed on the terminal's signature screen is configured in the Adyen Customer Area under the terminal's Signature settings (Device Slogan). It is not managed by the plugin.

Receipt-driven signature

For receipt-bound signature capture (before payment or as part of the tokenization flow), set the ADY_TRIGGER_SIGNATURE or ADY_TRIGGER_TOKENIZATION_WITH_SIGNATURE field on the receipt header or a sales item, optionally with ADY_SIGNATURE_DISPLAY_TEXT to customise the on-screen text. See Additional Field Triggers.

Translations

The Adyen plugin automatically deploys standard translations in the /cco/POSPlugins/translations folder. You can change the translations to your liking.

Note: Your translations files and changes will never be overwritten. So please check when using a newer version of the plugin, if new translation keys are present. E.g. rename the modified translation file, restart CCO so the plugin will deploy the new translation file with the original name.

 

Troubleshooting

The plugin writes messages into the SAP CCO log file. If any error occurs please consult the log file. This includes any error in the payment dialog in CCO.

Error Codes

ErrorCode Cause Solution
ADY:ERR:1100 The merchant account was not set Set the merchant account in the plugin properties
ADY:ERR:11001 The company account was not set Set the company accoun in the plugin properties
ADY:ERR:11002 The fallback card was not set Set the fallback card id in the plugin properties
ADY:ERR:11003 The key identifier was not set Set the key identifier in the plugin properties
ADY:ERR:11004 The fallback terminal was not set Set the fallback terminal in the plugin properties
ADY:ERR:11005 The passphrase was not set Set the passphrase in the plugin properties
ADY:ERR:11006 The key version was not set Set the key version in the plugin properties
ADY:ERR:11007 The api key was not set Set the api key in the plugin properties

changelog

Changes

The changelog moved to Github Releases!

2024-07-30

  • Improvement: The plugin will log at startup which version is started
  • Improvement: Logout of cashier user will delete the standard terminal choice when using dynamic terminal choice is active
  • Bugfix: Setting a standard terminal when no receipt was open resulted in an error

provided adyenplugin-1.0.24-FP18 - suitable for CCO FP18 to FP20
provided adyenplugin-1.0.24-FP16 - suitable for CCO FP16 & FP17

2024-04-12

  • Improvement: Actual values of card payments are now entered automatically. Thus, there should be no discrepancies in the daily closing.
  • Improvement: Chosen standard terminal will be saved even after cashier logged out once.
  • Improvement: Return of a receipt with copied payment item which was originally paid with Adyen will now open the terminal choice dialog if dynamic terminal choice is active.
  • Improvement: Card mapping works now like a regex. E.g. visadebit, visa, visacredit, visa_applepay... will now be mapped with a single visa=2
    If visacredit should be mapped to another CCO card, this can be done with visa=2;visacredit=23
  • Bugfix: Changing the CreditCardTypeCode could lead to an error in cashdesk closing when receipts were already posted with this card.

provided Plugin adyenplugin-1.0.23-FP18 - suitable for CCO FP18 & FP19
provided Plugin adyenplugin-1.0.23-FP16 - suitable for CCO FP16 & FP17

IMPORTANT
adyenplugin-1.0.20-FP14 is out of maintenance!

2023-12-21

  • Improvement: warning message when fall back terminal is used is now only shown when no dynamic terminal feature is activated.
  • Bugfix: Terminal choice was shown on every split card payment. Final payment was done on last choice. Now first choice will be used and no further dialogs appear.

provided Plugin adyenplugin-1.0.20-FP18
provided Plugin adyenplugin-1.0.20-FP16
provided Plugin adyenplugin-1.0.20-FP14

2023-09-06
provided Plugin adyenplugin-1.0.12-FP16 - suitable for CCO FP16 and FP17

2023-08-25
provided Plugin adyenplugin-1.0.12-FP16 - suitable for CCO FP16
provided Plugin adyenplugin-1.0.12-FP14 - suitable for CCO FP14 and FP15

About

No description, website, or topics provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Packages

 
 
 

Contributors