System documentation Integrated Payment Terminal
Introduction
In this document, Compleo explains which functions are important for a backend provider when using a payment terminal and, if necessary, which should be implemented to ensure convenient operation for CPOs.
Hardware
Structure
The structure of communication is displayed in Figure 1.
Each charging station can communicate with the backend and the receipt server via the Internet. Local communication takes place with the payment terminal in order to process all payment transactions.
Change tariff
The communication channel for a tariff change is described below. A graphical overview can be found in Figure 2.
In this case, the user is the operator of the charging stations and can trigger the tariff change by changing the backend. Tariff changes only become binding if no charging process is active.
After the charging station has received a new tariff, this will be displayed and applied from the next charging process, provided that the validity defined in the message has been reached
Alternatively tariffs can be changed via OCPP Configuration Keys and the ChangeConfiguration command.
OCPP Data transfer
The OCPP message "DataTransfer" is divided into several objects. At the beginning of the message is the "vendorId" and the "messageId". This is followed by the "data" object. This contains the "id", "validFrom" and "restrictions" attribute. The "elements" objects form the end of the "data" object. These consist of "type", "currency", "grossAmount", "vat" and "restrictions".
Some of these details are mandatory fields. Mandatory fields must always be present in the payload. Optional fields are not available in the payload.
The following tables show the objects of the JSON message as well as the corresponding description of the general "data", "restrictions" and "elements" objects.
Sample Data
A DataTransfer is sent after successful authorization at the payment terminal but before the Authorize message. The final DataTransfer, at the end of the loading process, is sent when the amount of the load has been successfully booked.
If the backend does not accept the DataTransfers, the service continues. Only the Authorize message with the SAMId must be accepted, otherwise the loading process cannot be started.
Paymenttoken
If a third-party backend wants to support payment, it must implement a payment token. This token informs the backend that authorization via payment has taken place. This payment token is sent with an "Authorize" message in accordance with OCPP and expects an "Accepted" message in the OCPP response. The choice of token is the responsibility of the third-party backend and must be exchanged and agreed with product management.
If, for example, the third-party backend chooses the payment token "ABCDE", the checkout application expects the following exchange of OCPP messages:
SEND: [2, "5061ad9c-f7fc-433a-a5e3-baacf4f7232b", "Authorize", {"id Tag": "ABCDE"}]
RECV: [3,"5061ad9c-f7fc-433a-a5e3-baacf4f7232b",{"idTagInfo": {"status":"Accepted"}}]
The payment token described above is replaced by the SAMId in the model with additional information. The SAMId is made up of the prefix "PY", the TerminalId, the TraceId and the current year. The exact meaning of the components is explained below. As the SAMId changes with each loading process, the Authorize message does not have to check the complete token, but only the prefix "PY".
Bezeichnung | Beschreibung |
TerminalId | Identification of the payment terminal at the payment service provider |
TraceId | Payment transaction number |
Time | Time at the start and end of the transaction |
Amount | Amount of the pre-authorization and booking amount |
Currency | Currency of the transaction |
AID | Card-specific information |
PaymentType | Information about the payment terminal |
CardType | Card type |
PAN | The last 4 digits of the card used |
VUNumber | Card-specific information |
Configuration-Keys
Key | Description | Unit | Type | Access |
---|---|---|---|---|
PaymentTerminalId | You will receive the terminal ID from your payment service provider after you have provided them with the terminal's serial number. | - | String (8 characters) | r/w |
PaymentTerminalSerialNumber | Serial number of the credit card terminal; is only set automatically if the content of the terminal's system printout can be parsed. | - | String | r/w |
PaymentToken | Token that marks the charging process as a payment charging process in the CPO backend. There are several predefinied parameter options available. Valid tokens are for example: "PY<TermId><TrId><Yr>" or "1234$<TrId><Yr>" | - | String (<= 20 characters) | r/w |
PaymentServiceProvider | The configured terminal provider is used to determine the password of the payment terminal. | - | String | r/o |
PSPHostIPPort | This port is used by the payment terminal when communicating with the Payment Service Provider's server. | - | Integer (>= 0) | r/w |
SendPaymentDataViaOCPP | This can be activated if the backend operator supports the processing of receipt data in the backend. This requires the implementation of a specific interface. | - | Boolean | r/w |
EndOfDayTime | Time at which the daily closeout is performed. | - | Time. Format: hh:mm | r/w |
MerchantCompanyName | Appears on the receipt. | - | String | r/w |
MerchantCompanyStreet | Appears on the receipt. | - | String | r/w |
MerchantCompanyZIP | Appears on the receipt. | - | String | r/w |
MerchantCompanyCity | Appears on the receipt. | - | String | r/w |
MerchantCompanyTaxId | Appears on the receipt. | - | String | r/w |
StationCity | City in which the charging station is located. Appears on the receipt. | - | String | r/w |
ReceiptURL | URL der Webseite, auf der der Kunde seinen Beleg abrufen/suchen kann. | - | String | r/w |
ReceiptServerHostname | The receipt server hostname is used for the receipt communication. | - | String | r/w |
ReceiptServerUsername | Username for logging in to the receipt server. | - | String | r/w |
ReceiptServerPassword | Password for logging in to the receipt server. | - | String | r/w |
ReceiptNameConnectorId<ConnectorId> | The charging point name appears at the top of the receipt under "Ladestation" (German for charging station) and helps to identify the charging point. If no name has been specified by the backend operator, the name can be freely selected. | - | String | r/w |
ReceiptUUIDConnectorId<ConnectorId> | Unique ID of the charging point generated in the backend and used to send the receipts. Initially, the charging station generates a UUID that is used until it is overwritten with the UUID requested by the backend, if necessary. | - | String | r/w |
PricePerkWhConnectorId<ConnectorId> | Gross price per kWh in the largest unit of currency (e.g. €). | Largest currency unit, e.g. € | Decimal (>= 0) | r/w |
PricePerMinuteConnectorId<ConnectorId> | Gross price per minute after the free parking duration in the largest unit of currency (e.g. €), also called blocking fee. | Largest currency unit, e.g. € | Decimal (>= 0) | r/w |
FreeParkingTimeConnectorId<ConnectorId> | Charging duration in minutes, after which the price per minute applies. | min | Integer (>= 0) | r/w |
MaxBlockingAmountConnectorId<ConnectorId> | Maximum gross costs in the largest unit of currency (e.g. €) that can accumulate due to the price per minute. | Largest currency unit, e.g. € | Decimal (>= 0) | r/w |
PreAuthorizationAmount | Reserved at the time of authorization and offset against the actual cost upon completion of the charging process. Specify as a decimal in the currency used. | Largest currency unit, e.g. € | Decimal (>= 0) | r/w |
TariffCurrency | Currency in which the prices are given. | - | String (resp. Enum), Permitted values: "EUR" (further currencies will follow) | r/w |
VATEnergy | Value added tax of the tariff for charged energy. | % | Decimal (>= 0) | r/w |
VATDuration | Value added tax included in the price per minute. | % | Decimal (>= 0) | r/w |
Additional Connections for APNs
Compleo AG has integrated Feig payment terminals into its products as part of the charging station ordinance. The operation of the terminals in stations in which only one SIM card is used must be made possible via this card. When using public SIM cards, this can easily be made possible. When using APN SIM cards, each provider must check whether these connections are possible. If it is not possible to enable these connections for the operation of the payment terminals.
Depending on the payment service provider, the following connections must be enabled:
Netzbetreiber | Produktivsystem (IP:Port) |
VR-Payment | 195.35.87.72:12503 |
BSPayone | 195.200.194.138: 60260 (alt) 195.200.194.138:10420 (neu) |
Telecash | 217.73.32.104 (prod) 217.73.32.105 (backup) Port 52815-52838 |
Lavego | 213.183.19.105:30001 |
PayServ.GWS | 193.33.23.54:37687 |
The following URL must be released for the Compleo Digital Receipt document server:
System | URL | Produktivsystem (IP:Port) |
Test | 195.185.213.139:443 | |
Produktiv | 195.185.213.141:443 |
The following URL must be released for the Compleo Digital Receipt document server:
System | URL | Produktivsystem (IP:Port) |
EV Beleg | 51.105.156.66:443 | |
Wallbe Hub | 51.105.156.66:443 |
Checklist
APN SIM | Public Internet |
Enable routing to PSP | Connection to backend secured |
Enable routing to Feig TMS |
|
|