You are on page 1of 48

PointWareConnect

(PointTerminal)
Document Type
Version
Date
Confidentiality
By

: Technical Interface Specification
: 3.4.02
: 30-07-2012
: NONE
: Udvikling

This Document is the property of Point Transaction Systems A/S. It is transferred under the conditions of
Active Non-Disclosure.
Use of this document is subject to the terms of this NDA (Non Disclosure Agreement).
This document will be returned under request to Point Transaction Systems A/S.

PointTerminal OCX
Side 1

Index
1. POINTTERMINAL

4

2. INTERFACE

7

2.1 Types
2.1.1 Configuration id Types
2.1.2 Return Codes
2.1.3 Terminal Return Codes
2.1.4 Transaction Types
2.1.5 Currency Codes
2.1.6 Card Transaction Return Codes
2.1.7 Administration Types (functions)
2.1.8 Callback Types (event id’s)
2.1.9 Token Data Types
2.1.10 Properties Command Types
2.1.11 Extended Amount
2.1.12 Key Entry of carddata

8
8
8
8
9
9
9
9
10
11
11
11
11

2.2. Methods
2.2.1 SetConfiguration
18. Contactless
19. SetAuthCode
2.2.2 OpenTerminal
2.2.3 CloseTerminal
2.2.4 DisconnectTerminal
2.2.5 CardTransaction
2.2.6 AbortTransaction
2.2.7 Administration
2.2.8 SelectAdministration
2.2.10 PreviousTransaction
2.2.11 AboutBox
2.2.12 VersionInfo
2.2.13 PrintFile
2.2.14 PrintLatestReceipt
2.2.15 GetLatestReceiptIndex
2.2.16 ReadToken
2.2.17 AdminProperties

12
12
18
18
19
20
20
21
23
24
25
27
27
27
28
28
28
29
29

2.3 Event interface
2.3.1 CallBack
EventID 0: Date ready for print.
EventID 2: Cardnumber available.
EventID 3: Set Amount (changing amount after receiving cardnumber).
EventID 4: Transaction result.
EventID 5: Set Amount Fee
EventID 6: Get Amount Fee
EventID 7: Get extra receipt information
EventID 8: Cardnumber and stan available
EventID 9: Transaction status
EventID 10: Dll timer event
EventID 12: Get Transaction Token Reference
EventID 13: Put Transaction Token Reference
EventID 14: Put Authorization Code
EventID 15: Terminal ID

31
31
32
32
32
32
33
33
33
34
34
34
35
35
35
36

PointTerminal OCX
Side 2

EventID 16: PreResult status
EventID 18: Administration result.
EventID 19: Change Extended Amount.
EventID 20: Receive Amount.
EventID 21: Change Currency.
EventID 255: Dialog Closing

3 HOW TO IMPLEMENT THE ACTIVEX CONTROL
3.1 ActiveX registration
3.2 Windows 64-bit

4. FLOW
4.1 Transaction Flow
4.2 External Card Transaction flow

36
37
37
37
37
39

40
40
40

42
42
43

APPENDIX A, PRINTING

45

APPENDIX B, CUSTOMISING DIALOGS.

46

APPENDIX C, TOKENS

47

APPENDIX D, TRACE

48

PointTerminal OCX
Side 3

1. PointTerminal
This section describes the interface between Point payment terminals using PointTerminal.
PointTerminal is an ActiveX control for application implementation in the Windows XP (32-bit)
environment, developed and supported by Point A/S, and its main purpose is to simplify the
interface to the SMASH/XENTA terminal, and comply with the PBS OTRS 2.5 specifications.
PointTerminal ActiveX interface handles the certification requirements regarding:
Populate and display terminal dialog-interfaces.
Enabling the user to abort a transaction.
Handles advanced issues like “verify signature” and “advice transfer flag”.
Handles token transactions e.g. Original Authorization transaction
Can optionally do the receipt printings.
Implements an optional transaction preresult callback to ensure the application is alive.
PointTerminal includes a method that can call user selected administrative functions.
In addition PointTerminal also include a management method that supports all administrative
functions available in the terminal.
The objective for PointTerminal is to give the ECR access to do the basics:
Make different types of transactions.
Handle administrative functions e.g. to do the “end of day” settlement.
Create reports
Handle printing and backup of receipts

PointTerminal OCX
Side 4

Refund.4.0 New Key Purchase. administrative functions added. General code cleanup.00 Support for PSAM handled MSC track2 local cards New since version 3. Improved Autoprint (approved by PBS).3.0. backgrounds and colour. GetLatestBackupIndex.0 Minor bug fixes. New Card Data Callback Added index to Authorization Code Callback (ID14) Method TransactionStatus renamed to PreviousTransaction Changes to typelib definitions and additional receipt information Secondary transaction result code in Callback (ID4) is hex as in the OTRS table. additional Printer configuration.00 New methods VersionInfo.3. Capture/Reversal NoPrint transaction types New since version 2. New since version 2. Signature and Authorisation transaction types. DCC support New since version 2.4.5.New since version 2.00 Lock receipt discontinued.0. Support for PSAM handled MSC track2 local cards Additional administrative functions and properties New since version 3.0.3.0 Stronger typelib added Status dialog bitmap button status error corrected. printer translation table. header and footer. Improved Open and No receipt state reported. CFileException report error bug corrected Status dialog timeout configuration New Forced Offline.00 Removed descriptions of “LOCK RECEIPT” (“INGEN KVITTERING”) since this state no longer appears from terminal SW version 3.0. cardnumber (pan) X-padded) New since version 2.4.5. with receipt backup.0 Language support. PointTerminal OCX Side 5 .00 Typos corrected. Configuration of receipt backup. setCardData mandatory New since version 3. Gratuity bug corrected New status dialog timeout set-up parameter. PrintLastReceipt. New aboutbox. KeyEntry of transaction type Support for EIE New since version 3.1. User configurations of dialog buttons.2. Adding of File5 (Advice) functions PCI – DSS certification (key transactions removed. PrintReceipt.

PointTerminal OCX Side 6 .

g. Note that the Engine runs in its own windows thread (normal priority). the event interface. Some methods and functions require that the terminal is configured to include these. E. and handling of the dialogs. NETS and/or the card issuer for more information. type check for e. PBS (Dialog) ECR Application dll lib Terminal Control Engine ActiveX Process Overview The overview shows that the terminal connects to the ActiveX Engine part through the FlexDriver.dll (implemented as a lib).g.4. The Engine communicates with the ActiveX Control part through the dispatch map. and that the Control part runs in the user ECR applications thread.x. The terminal and/or NETS and/or the credit/payment card do not support all transaction types. Consult Point.2.x. Since the dialogs are displayed in the user thread and are required to be displayed a number of seconds. transaction type. the user ECR application must make sure the Control code can execute proper. administration functions and callback id’s must be added to application code. PointTerminal OCX Side 7 . With the addition of a stronger typelib from version 2. The Control part is controlled by the user ECR application through the methods. Interface The ActiveX control communicates with the user ECR application using a dispatch map and a number of methods and an event interface. the extra receipt information (‘binary receipt’) is only transmitted from the terminal if configured to transmit the extra overhead information.

ExtendedReceiptInfo. SystemError. GetStanPan.2 Return Codes typedef enum ReturnCode{ OK=0. SetAmount. NotOK.1 Types 2.4) GeneralError=255.1. Card. Printing. SwVersionError. GetAmountFee. PortInitError. SetEIEdata2Host. PointTerminal OCX Side 8 . PreResult. DialogOkTimeout. NoReceiptState=19. DialogErrorTimeout. 2. CommunicationTimeoutError. 2. ReceiptBackup.1. SetExtendedAmount. Trace.2. ComPortError. GetExtendedAmount.3 Terminal Return Codes typedef enum TerminalReturnCode { Success=0. SetEIEdataReceived. ConnectError. } TerminalReturnCodeType. } ConfigurationType. Timer. LicenceError.1.1 Configuration id Types typedef enum Configuration { Connection=0. SetAmountGratuity. SetAmountFee. (will not appear from terminal SW version 3. Contactless. DatalinkError. InternalError. Error. NoResponseError. PrinterQueueDelay. } ReturnCodeType. FileReadError. SetAuthCode.

1. Capture. // SW Francs GBP = 826.1. Reversal. Cancellation.6 Card Transaction Return Codes typedef enum CardTransactionReturnCode { Started=0.1.1.7 Administration Types (functions) typedef enum AdminFunc { AdministrationError. TerminalReport. GeneralOCXError = 255 } CardTransactionReturnCodeType. Offline. ReceiptFileExist=11. ForcedSignaturOffline. 2. 2. 2. OCXStateError = 254. TransactionTypeError= 12. Refund.2. // S Kroner CHF = 756. OfflineRefund.5 Currency Codes typedef enum CurrencyCode { DKK = 208. LogReport. ForcedSignature. // Euro } CurrencyCodeType. } TransactionTypeType. // JP Yen NOK = 578. TotalReport. // N Kroner SEK = 752. LocalCardNotOK=17. OriginalPinAuthorisation. OldLogReport. // IS Kroner JPY = 392. LastReceipt.4 Transaction Types typedef enum TransactionType { DefaultTransaction. OriginalSignatureAuthorisation. LocalCardOK=16. EndOfDay = 1. ForcedPin. // US Dollar EUR = 978. SupplementalAuthorisation. EndOfDayLog. // GB Pound USD = 840. PointTerminal OCX Side 9 . // DK Kroner ISK = 352.

Idle. ChangeAmountFee. IpRoutingIdel UpdateSalt. ParameterDownload. } AdministrationType. BackLightOn = 23. GratuityReceipt. RestartTerminal. EventReport. TpropsCVSreport. ProgramDownload. PointTerminal OCX Side 10 . SendLog. TimerTick. File5StatusReport. PointSync.8 Callback Types (event id’s) typedef enum CallBack { DataForPrint=0. DeleteDataStoreAdvice. PanTableDownload.1. PctReport. TransactionStatus. ContrastDown. DccAmount. ContrastUp.UnlockReceipt. ClearDataStore. TransactionResult. TcsReport. UpdateDccRates = 33.4) PbsSync. DccRatesReport. ChangeAmount. ReceiveAmountFee. NetworkReport. ChangeAmountGratuity. AdminResult. AcceptCard=2. (not relevant from terminal SW version 3. GetAuthorisation. UpdatePSAM. TerminalId. AdviceForward. ExtendedReceipt. 2. PutAuthorisation. TransactionPreResult. ChangeExtendedAmount. TlcmdbTableDownload. ChangeCurrency. BackLightOff. TlcmdbTableRestore. StanPan. StopList.

PropsGet. 2. KeyEntryOn=0x80. } PropertyCommandType. AdditionalData. DialogIsClosing = 255. AmountGratuity.1. AmountVat. 2. PointTerminal OCX Side 11 . AmountFee. } CallbackType. PropsAdviceReport. PropsSetBatchNumber. PropsInternal.1. 2. } AmountType. PropsdeleteDataStoreAdvice. 2. EIEdata2Host.1.10 Properties Command Types typedef enum PropertyFunc { PropsNone. } KeyEntryType.9 Token Data Types typedef enum TokenData { Tokendata. } TokenDataType.11 Extended Amount typedef enum ExtendedAmount { AmountAmount. PropsPrereceipt.1.12 Key Entry of carddata typedef enum KeyEntryT { KeyEntryOff.EIEdataReceived. DccData.

parm1 parm2 parm3 = 1: connect using RS232. Using the following sequence ensure that trace files are valid: SetConfiguration(1.configuration parameter parm3 . NOTE: To enable trace it is important that the SetConfiguration Trace option is called as the first SetConfiguration call in the start of the application.”c:\\kasseXXXpath\\bon. This parameter is mandatory.””). The user application must configure all mandatory parameters.ocx ActiveX component implements a number of methods derived from Windows ActiveX (OLE) environment. SetConfiguration(5. Connection to terminal using Serial interface (RS232) or Ethernet (TCP/IP). like ProductName. parm3 As String ) Input: Conf_ID .txt”. 0: Connection parameters. Other SetConfiguration calls….configure Prototype: Long <ActiveX object_>SetConfiguration ( Conf_Id As Long.6. Methods The PointTerminal. Method: SetConfiguration .””.0. otherwise the control process will fail. 2: connect using = Ethernet = ComPort number or IP address = Baudrate or TCP/IP Port (2000 is default) Examples: PointTerminal OCX Side 12 .2. then the process logs the event and the parameters in the trace file.2. ProductVersion. parm1 As Long. and they are explained in further details in subsequent section.””).configuration parameter parm2 .configuration parameter Return: as ReturnCode 0 – configuration error 1 – configuration success Conf_ID.configuration id as ConfigurationType parm1 . CompanyName. and it’s own methods described in the following. 2. The parameters are outlined below. parm2 As String. before using other methods of the ActiveX control. If the SetConfiguration function returns false (0).1 SetConfiguration SetConfiguration transfers required configuration parameters to the ActiveX Control.2. Bold indicates default setting.

<ActiceX object_>SetConfiguration(0. Normally this is done when a transaction is completed.”C:\MyApplicationDir\Bon.txt” parm3 = Full Windows Printer name as defined in printer settings.1.53 using tcp/ip protocol on port 2000.200 baud.”11500”) connect using USB serial connection using COM15. 1: Printer options. If the user application handles receipt printing. releasing the user application of this duty. When enabled the ActiveX component handles the receipt printing.”192. 19. The ActiveX will backup the latest 4 receipts by default (note that e. 3: Autoprint enabled (no printer check) parm2 = Full path and filename of the receipt file. it must delete the print file after use.”19200”) connect using RS232 serial connection using COM1. When disabled the user application has to print the receipts.168. 1= card confirm enabled.0. If the ECR handles printing and a “verify signature” state is raised by PBS or the terminal. and then set the event status to 1 for successful printing.txt” parm3 = Not used Example: <ActiceX object_>SetConfiguration (2.txt”.<ActiveX object_>SetConfiguration(0. See appendix A.”C:\card. “c:\card. 1: Autoprint enabled. When set options for cards are enabled the user application can accept (return 1) or reject the card number (return 0). parm2 = Full path and filename of card number file. In this case the application must print the receipts. parm1 = 0: Autoprint disabled.g. The user application will receive the first eight digits of the card number and the crc as an event during the transaction flow. When disabled the ActiveX engine always replies accept to the terminal.53”. Set options for printing of receipts.”COM15”.2.1.”COM1”. then the application will receive events signalling that receipts are ready to be printed. otherwise starting a new transaction will fail. and the PCI padded cardnumber is saved in the specified card number file. “ScreenPrint” Example: <ActiceX object_>SetConfiguration (1. This parameter is optional.txt”. or before starting a new transaction. then delete the receipt file.0. and the receipt is available in the receipt file.0. <ActiveX object_>SetConfiguration(0. “c:\bon. This parameter is optional.””) PointTerminal OCX Side 13 . a signature transaction generates two receipts). parm1 = 0: card confirm disabled.”\\networkprinter\Axiohm A794”) 2: Card options.1.168. 8N1.”2000”) connect to terminal on ip address 192. and supports a user defined translate and code table for simple control of POS printers.

This parameter is optional.txt append) 5: Trace plus append enabled (PointOcxTrace2500.1. parm1 = 0: set amount is disabled. PointOcxTrace2500.””) (default 3 seconds) 5: Trace Set trace options. 4: Trace plus enabled (flxComTrace. parm1 = 0: OCX Trace disabled (only PtFxDrTr2300. This parameter is optional.3.””) 4: TimeOutOK Set dialog timeout of the transaction dialog for transaction OK (approved). flxComTrace.3: SetAmount.””) PointTerminal OCX Side 14 .4.txt append) 6: Trace plus (all files and append) parm2 = Not used parm3 = Not used Example: SetConfiguration (5. disable with 16) 1-3: Trace enabled.txt enabled.””. This parameter is optional. If not set the dialog will automatically close after 3 seconds.txt – traces at the ActiveX level 1-3. If set to 0 (zero) the dialog will not close automatically.txt – traces on the dll level 2-3. Trace files are placed in the directory defined by printer options parm2. (See parameter 14 for timeout when transaction not approved). PtFxDrTr2300. Set options for transaction amount. parm2 = Not used parm3 = Not used Example: SetConfiguration (4.””. Trace 5 enables traces appended to files (no reset). If enabled trace files are generated. Trace 4 enables traces – trace files is reset by the OpenTerminal method. parm2 = Not used parm3 = Not used Example: <ActiveX object_>SetConfiguration(3. 1: set amount is enabled. This event arrives after the card number is available giving the option to change the amount based on the card number and overrule the amount set in CardTransaction.txt – traces the RS232/IP low level interface (if selected) 3. but called as the first configuration parameter if used. If enabled the user application has the option to change the transaction amount by returning a new amount value in event id 3.””. parm1 = 3 (seconds).

””. parm2 = Not used parm3 = Not used Example: SetConfiguration (8. For best result and traces for Point use Trace plus (4).””) 9: Get full card number and transaction reference Get full card and transaction reference options. overruling the fee generated by the terminal. If enabled the user application can add a transaction fee. parm2 = Not used parm3 = Not used Example: SetConfiguration (6.ini contact Point). This parameter is optional. 1: get amount fee enabled.1. If enabled the user application receives the fee calculated in the terminal in event number 6.NOTE: The terminal must be configured to support trace ([FLXTRACE] in param.””. If enabled the user application receives extra receipt information at the end of a transaction in event number 7.””) 8: Get Extra Receipt Information Get extra receipt information options. The information is received in event number 8.””. parm1 = 0: Set amount fee is disabled. This parameter is optional. 6: Get Amount Fee Get amount fee options.””) 7: Set Amount Fee Set amount fee options. This parameter is optional. parm2 = Not used parm3 = Not used PointTerminal OCX Side 15 . 1: set amount fee enabled. parm1 = 0: Get info disabled. This parameter is optional.1. Extra receipt information is also received on signature receipts and receipt copies.1. 1: get info enabled. The fee is returned in event number 5. If enabled the user application receives full card and transaction reference. parm1 = 0: Get info disabled. 1: get info enabled. parm2 = Not used parm3 = Not used Example: SetConfiguration (7. parm1 = 0: Get amount fee is disabled.

1.””. parm2 = Not used parm3 = Not used Example: <ActiceX object_>SetConfiguration (12.””) 12: PreResult option.””) 13: Backup option. This parameter is optional. 1: set amount gratuity is enabled. If enabled the user application can add a transaction gratuity for OriginalSignatureAuthorization transactions in event number 11. parm2 = Not used parm3 = Not used Example: SetConfiguration (10. and is intended to avoid total blocking in case of communication errors (timeouts). parm1 = 0: preresult disabled.””. When disabled the ActiveX engine handles the response. 1: get timer event enabled.””) 10: Get dll timer event Get dll timer event implements a call-back from the low level communication layer in event number is 10.1. parm1 = 0: Get timer event disabled. PreResult is used to tell the terminal that the user application (ECR) is alive before the receipt is sent to the user application (ECR).””. The application must send a response (161 decimal) to this event indicating alive.1.””) 11: Set Amount Gratuity Set amount gratuity options. If used the application must close and disconnect the terminal before unloading the ocx object.””. This parameter is optional. 1= preresult enabled.Example: SetConfiguration (9. parm1 = 0: Set amount gratuity is disabled.1. PointTerminal OCX Side 16 . This parameter is optional. parm2 = Not used parm3 = Not used Example: SetConfiguration (11. otherwise the transaction will be rejected.

then the first backup file is “c:\bon. parm2 = Not used parm3 = Not used Example: SetConfiguration (15. It will suspend operation (default 1000 milliseconds) between the two receipts to allow the print queue to update. If configured to handle receipt printing the ActiveX will test the Windows print queue by sending an empty receipt before the actual receipt. parm2 = Number of backup’s. parm1 = 0: Backup disabled.txt”.g. “c:\bon.1. At start-up the ActiveX will first overwrite the oldest backup file.6.””.2000. If not set the dialog will not close automatically.”8”. This parameter is optional.””) (0 not allowed) 15: Printer Queue Delay Set the delay for printing. This parameter is optional.””) set backup to 8 files. The status dialog will automatically close after the specified time in seconds if set. If Autoprint is selected the minimum number of backupfiles is 4. parm1 = 6 (seconds). This parameter is optional.txt1”. Note that administrative reports (e.””) PointTerminal OCX Side 17 .””.Backup is used to automatically backup receipts. If enabled the ActiveX will save a copy of the latest number of receipts in files named as the receipt file concatenated with a number.txt2” and so on. 1= backup enabled. The index to the latest backup file is found using the GetLatestReceiptIndex() method. next “c:\bon. if not set the default is 1000 milliseconds parm1 = 1000 (1 second). If the receipt file is defined to. ‘terminal rapport’) are treated as receipts. parm3 = Not used Example: <ActiceX object_>SetConfiguration (13. parm2 = Not used parm3 = Not used // 6 is specified in OTRS Example: SetConfiguration (14. 14: TimeOutError Set dialog timeout of the transaction status dialog if an Advice is received.

0.””.””) 18. parm2 = Not used parm3 = Not used Example: SetConfiguration (17.1.0”.””) 17: Get Extended Amount Get extended amount options. If enabled the user application can add extended amounts (e.””) 19.1. parm1 = 0: Set extended amount is disabled.””. 1: set extended amount is enabled. SetAuthCode Set authorization code (from PBS) This parameter is optional. 1: Get extended amount is enabled.16: Set Extended Amount Set extended amount options. Contactless Support contactless transactions. This parameter is optional. If used callback StopList is not activated.g. If enabled the terminal will send amounts (e. vat) 20.””) PointTerminal OCX Side 18 .1. parm1 = 0: Get extended amount is disabled.<type> parm3 = Not used Example: SetConfiguration (19. parm2 = Not used parm3 = Not used Example: SetConfiguration (16.””. 0: disabled parm2 = Not used parm3 = Not used Example: SetConfiguration (18. This parameter is optional.”123456.g. This parameter is optional. parm1 = 0: parm2 = <code>. parm1 = 1: Contactless enabled. user entered gratuity) to the application.

e. (Note that if the terminal is not connected when the OpenTerminal function is called.2. See Appendix C. Method: OpenTerminal - Prototype: Long <ActiveX object_>OpenTerminal () Input: Return: as TerminalReturnCode 0 Connect/open successful 1 file error 2 file read error 3 Port initialising error 4 Software not compatible 5 Terminal not responding 6 Com port already open error 7 Datalink error (no connection) 8 Internal function error 9 Communication timeout 10 Connect licence available in terminal 11 Internal connect error 12 System Error (e.2 OpenTerminal OpenTerminal connects the ActiveX control to the terminal and opens it. i. No PSAM) 19 Terminal Open but in ‘No receipt’ state (not relevant from terminal SW version 3. the terminal displays change from “Lukket” to “Terminalen er klar”. then the PointTerminal automatically tries to connect to the terminal).2. CloseTerminal and DisconnectTerminal.g. and issues the correct method sequence: OpenTerminal.4) 255 . It’s important in error handling situations not to include these methods in program loops. Best practice is that the application keeps track of the connection status of the terminal.General internal OCX connect/open error PointTerminal OCX Side 19 .

the terminal display change from “Terminalen er klar” to “Velkommen”.4 DisconnectTerminal DisconnectTerminal disconnects the ActiveX control from the terminal.e.g.e. 12 – SystemError (e. the terminal display change from “Velkommen” to “Lukket”.3 CloseTerminal CloseTerminal closes the terminal. no PSAM) PointTerminal OCX Side 20 . no PSAM) 2. i.g.2. Method: CloseTerminal - Prototype: Long <ActiveX object_>CloseTerminal () Input: Return: as TerminalReturnCode 0 – Connect/close successful 1 – Connect/close error. Method: DisconnectTerminal - Prototype: Long <ActiveX object_>CloseTerminal () Input: Return: as TerminalReturnCode 0 – Disconnect successful 1 – Disconnect error 12 – SystemError (e. i.2.2.

The OCX translates the type to defined OTRS transaction-type and merchant-initiative. currency As Long. expiration date and card verification. amount As Long. merchant-initiative = 0x00 4: Offline Transaction Transaction-type = 0x00.2. merchant-initiative and transaction tokens. ref As Long ) Input: type . 2.5 CardTransaction CardTransaction is the method to initiate and start a payment transaction. Method: CardTransaction - Prototype: Long <ActiveX object_>CardTransaction ( type As Long. merchant-initiative = 0x82 3: Refund Transaction Transaction-type = 0x01. Transaction type 0.5 specification for further descriptions of transaction-type. and 10 are mandatory.2. merchant-initiative = 0x82 PointTerminal OCX Side 21 . merchant-initiative = 0x00 1: Forced PIN Transaction Transaction-type = 0x00. 3. See the OTRS 2. type: The following transaction types are supported for the debit/credit applications. the terminal will ask for card data – card number.transaction type as TransactionType amount . merchant-initiative = 0x00 6: Original Signature Authorization Transaction Transaction-type = 0x02.user application reference number Return: as CardTransactionReturnCode 0 – Transaction started successful 11 – Receipt file exist 12 – transaction type not valid 254 – OCX state error 255 – General OCX state error.transaction amount currency . merchant-initiative = 0x81 2: Forced Signature Transaction Transaction-type = 0x00. If KeyEntryOn is added to the transaction type. 4. 0: Default EMV Transaction Transaction-type = 0x00.currency code as CurrencyCode ref . merchant-initiative = 0x60 5: Original PIN Authorization Transaction Transaction-type = 0x02.

merchant-initiative defined by transaction token 9: Reversal Transaction Transaction-type = 0x05. merchant-initiative = 0xE2 11-18: For internal use 19: Offline refund Transaction-type = 0x01. Currency: ISO 4217 Currency code: DKK = 208 ISK = 352 JPY = 392 NOK = 578 SEK = 752 CHF = 756 GBP = 826 USD = 840 EUR = 978 // DK Kroner // IS Kroner // JP Yen // N Kroner // S Kroner // SW Francs // GB Pound // US Dollar // Euro If the transaction is started successful the immediate return code is 0. It’s recommended that the application do not use float or double value. NOTE: It is important that the ECR implementation do not display dialogs during the transaction. merchant-initiative defined by transaction token 8: Capture Transaction Transaction-type = 0x04. merchant-initiative = 0x00 Amount: Amount is always a positive value in the smallest currency unit (øre for DKK). PointTerminal OCX Side 22 . merchant-initiative defined by transaction token 10: Forced Offline Signature Transaction Transaction-type = 0x00. then the final transaction result is returned in the CallBack event function with eventId 4. merchant-initiative = 0x60 20: Cancellation Transaction-type = 0x06.7: Supplemental Authorization Transaction Transaction-type = 0x03.

6 AbortTransaction AbortTransaction is the method for the user application to abort a transaction previously started with the CardTransaction method. This method is handled by the ActiveX control status dialog. aborting is possible.2. Only during the first part of the transaction flow. Method: AbortTransaction - Prototype: boolean <ActiveX object_>AbortTransaction () Input: Return: true false – operator wish to abort – operator wish not to abort PointTerminal OCX Side 23 . and only exposed to the user application for historical reasons.2.

Irrevisible . but with a transaction log attached.4) Function: 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : 14 : 15 : 16 : 17 : 18 : 19 : 20 : 21-22: 23 : 24 : 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: Do a advice transfer. Download new program version – if any. 12 and 20 are mandatory in the user application. Send the different logs to Point for further analysis.2. Get the current transaction totals sumarized per card. Turn on backlight on PinPad (terminal) Turn off backlight on PinPad (terminal) Get Network Report DCC Rates Report Gratuity receipt Delete Data Store Advice Advice Forwarding File5 Status Report Install/Update PSAM (ip routing and timer callback active) Not used Update DCC Rates Update PSAM Update Fee table Ip Routing Idle (used with ip routing and update) Update SALT (used with e-kvittering) PointTerminal OCX Side 24 . Download terminal configuration parameters. The rest are optional but consider which ones are practical for everyday use.2. Get Terminal Report. Restore TLCMDB to the default settings. Method: Administration - Prototype: Long <ActiveX object_>Administration (Function As Long) Input: function – administrative function as AdministrationType Return: as ReturnCode 0 – function successful 1 – function error 65539 – Terminal in ‘No receipt’ state (not relevant from terminal SW version 3.4) Do clock syncronisation towards PBS. Functions 1. Download ”local Card” Pan table. Get last receipt and unlock terminal (not relevant from terminal SW version 3. also known as an ”end of day” transaction.7 Administration Administration is the method for the user application to initiate administrative functions on the terminal. Get last receipt from terminal. Get the previous transaction log.and currency type. Get the current transaction log. Do clock syncronisation towards Point. Same as in function 1. Set contrast on PinPad (terminal) up Set contrast on PinPad (terminal) download Restart terminal Not used. All the listed administrative functions are implemented in this method. Download TLCMDB –configuration settings. Clear (delete) the datastore.must be password protected.

38: 39: 40: 41: 42: Pct Report Tcs Report Tprops CVS report Print EventReport Idle NOTE: It is important that the implementation do not display dialogs during an administrative procedure. and zero for functions creating reports. RECOMENDATION: Always password protect this function.2. Implementing this function unlocks all administrative functions for the user.8 SelectAdministration The SelectAdministration method implements the selection of an administrative function listed above. only super users. users … access to all functions.no or nonexistent function selected Selected function as listed above. as a dialog including a combo-box list that include all administrative functions. PointTerminal OCX Side 25 . users. service users or tech. should be allowed to access all administrative functions. Method: SelectAdministration - Prototype: Long <ActiveX object_>SelectAdministration ( ) Input: Return: as AdministrationType 0 . Use the Administrative method if some administrative functions should remain locked (password protected) for the user. Hide the more technical functions from the daily user. RECOMENDATION: Install all functions it’s a great help during instalation and in case of service on a terminal. 2. allowing only superusers. service users or tech. If extra receipt information is enabled its event will include information for function 7 and 8.

0 approves the transaction 1 rejects the transaction Return: as ReturnCode 0 .2.9 CompleteExtCardTransaction The CompleteExtCardTransaction method completes an external (local) card transaction. Method: CompleteExtCardTransaction - Prototype: Long <ActiveX object_>CompleteExtCardTransaction(result As Long) Input: result .method completed successful 1 .2.method not completed successful PointTerminal OCX Side 26 .

10 PreviousTransaction The PreviousTransaction method (called TransactionStatus in earlier versions) returns the status of a previous transaction.0 is returned as hex value 0x02030000. Another method to get version information is to use the inherited windows method ProductVersion that returns a string with version information. Method: VersionInfo - Prototype: Long <ActiveX object_>VersionInfo() Input: Return: version as integer PointTerminal OCX Side 27 . key As String) Input: keyT . version 2.3. etc.2. where the most significant 8 bits is the product version MS. This method is used in conjunction with the SetConfiguration id 9. For terminals configured with PSAM version 50 and later.11 AboutBox AboutBox displays the About dialog with version information. Method: AboutBox - Prototype: Void <ActiveX object_>AboutBox() Input: Return: - 2.2. The data are returned as event.2. The data of these transactions are retrieved using the unique transaction reference (stan). data of the last eight approved transactions are saved in the PSAM.g. Method: PreviousTransactionStatus - Prototype: Long <ActiveX object_>PreviousTransaction(keyT As bool. 2. or decimal 33751040. as search key.0. id 9.1 key is stan Return: as CardTransactionReturnCode 0 – Command started successful 12 – KeyT error 254 – OCX state error 255 – General OCX state error. E.2. Get card number and transaction reference.12 VersionInfo The VersionInfo method returns the version number of the ActiveX as an integer. CallBack.

or when Backup is configured. Use PrintFile to print a generated receipt or report file.Header to add to print Footer .method started successful false – error 2.14 PrintLatestReceipt The PrintLastReceipt method is active when Autoprint is enabled. Method: PrintLastestReceipt Prototype: Long <ActiveX object_>PrintReceipt(Index as integer.2.name of receipt file to print Header . The file encoding shall be in the ISO-8859-15 format. Footer as String) Input: filename . Method: GetLatestBackupIndex - Prototype: Long <ActiveX object_>GetLatestBackupIndex() Input: Return: latest backup index as integer PointTerminal OCX Side 28 .2.2. Method: PrintFile Prototype: Long <ActiveX object_>PrintFile(filename as String. Footer as String) Input: Index .index to backup receipt file (0 for all) Footer .Footer to add to print Return: true – method successful false – error 2. Header as String.15 GetLatestReceiptIndex The GetLatestReceiptIndex method returns the index to the latest receipt backup.13 PrintFile The PrintFile method is active when Autoprint is enabled. The receipt is always printed with the Header “**** KOPI ****”.Footer to add to print Return: true .2.

<Merchant>.<dccrate>.2.0.<exp>.<clerkid>. Method: ReadToken Prototype: ReadToken (what TokenDataType.16 ReadToken The ReadToken method reads a token from a file and returns its data as a comma-separated string.457.<dccamountfee>. See Callback event id 12.<ver>.2.01. TokenFile as String) as String Input: what – Tokendata returns data from token format: <type>.0.2. <VK>.<OriginalRef>. The token is identified by its filename not its reference number.<cvm>.000468.A0000000031010.' AdditionalTokenData: '4761739001010010. DccData returns dcc data from token (if any) <dccamount>.2.' ** See OTRS for more information 2.02.0.** AdditionalData returns additional data from token format: <pan>. Get Token reference number for an explanation about token reference and token filename.<curr>.0. Method: AdminProperties Prototype: Long AdminProperties (cmd PropertyCommandType.<CURRENCYCODE> : <PSAMID>. Props as String) Input: cmd – Props for cmd PropsGet PropsPrereceipt PropsDatastore .DKK.<VPKca>.<pan|aid>.<RECORDID>.01.' DccData: '1903.2. tokenfile – filename of token Return: string (empty string if token not found or error) Example: TokenData: 'EMV.<STAN> PointTerminal OCX Side 29 .USD.csv ascii string : : <AMOUNT>. <dcccurr>.4.17 AdminProperties The AdminProperties method extends the Administration method and is used when it is necessary to get or set properties.<dccamountextra>.<FILENUMBER>.1.0107601100.<exp>.<amount>.<ALGH>.1880.

<CURRENCY or DCC> <IPADDRESS> <IPADDRESS> Return: ReturnCodeType PointTerminal OCX Side 30 ...<PARAM2>.<PARAMX> <ADVICE_FILE_INDEX> <BATCHNR>.PropsInternal PropsAdvice PropsSetBatchNumber PropsSendEventLog PropsRemoveEventLog : : : : : <PARAM1>..

g. as CallBackType ByVal Code As Long. pResult . _ pResult As Long) On Error Resume Next DoEvents Select Case eventID Case 0 'Data ready for print Case 2 'PCI padded Cardnumber available …. The interface is a Call-back function labelled “CallBack”. 2. Case 255 'Dialog is closing Case Else End Select Exit Sub ErrorHandler: End Sub PointTerminal OCX Side 31 . pResult As Long ) Input: EventID .2.variable contains any text related to the specific event.return value to <ActiveX object> from user application Not all events are optional. _ ByVal code As Long. Method: CallBack . In this VB example a DoEvents is called to avoid blocking other threads. use default or else in select or switch statements. In any case all events must give a return (pResult) value.3 Event interface The ActiveX component supplies only one event interface. ByVal Text As String.event interface Prototype: Private Sub <ActiveX object_>CallBack ( ByVal EventID As Long.unique event id Code Text . _ ByVal text As String. and return 1 if not otherwise stated.3. Private Sub PointTerminal1_CallBack( _ ByVal eventID As Long. In the ActiveX control this function is presented as an event related to the control in the form. e. An implementation using a select (or switch) statement is recommended.1 CallBack Communicates from the ActiveX component is done using an event interface.

pResult set to 0 aborts the transaction. 3: . cardnumber and crc (card reconciliation code) to the user application. 0 : transaction successful 1 : transaction not successful 16: local card transaction started with success 17: local card transaction text: If present text is either a transaction return code from PBS. If CardConfirm is configured to active. by setting pResult to the amount. CRC (Card Reconciliation Counter id) Code is 0 if the card is a PBS handled card type. EventID 4: Transaction result. In this case pResult is set to 1 if the cardnumber is accepted and the transaction continues.received receipt needs (signature) verification. the application can accept or reject the card. or a system specific return code from the driver/terminal. In this case pResult is set to 1 to accept the cardnumber. If AutoPrint is selected then this event is not used. and placed in the specified file. and the intention is that the backend system does the subsequent transaction processing. Text contains the PCI padded cardnumber. For EMV transactions only the first 8 PCI padded digits of the card number is available. EventID 3: Set Amount (changing amount after receiving cardnumber). pResult is set to 1 if the receipt is accepted (it’s mandatory to print the receipt before returning pResult). The PBS specific return codes are a long range of codes like a hexnumber for “Incorrect PIN” (‘1221’). if set to 0 the transaction is aborted. and the transaction is completed when this confirmation is done. etc. The crc can be used to select a transaction fee. Text can contain a secondary result code. Text contains a copy of the receipt. Se also result codes for CardTransaction. This amount value will overrule the value given in the cardtransaction function. as in the specified file. Result code of the transaction. Code equal 1: – all receipts received. and to 0 if not. and is mandatory if SetAmount is configured active. A receipt is ready to be printed. PointTerminal OCX Side 32 . Code is 1 if the card is perceived as a “local card”. EventID 2: Cardnumber available.EventID 0: Date ready for print. If pResult is set to 3 then cardholder is asked to confirm the amount on the terminal display. “Stolen Card” (‘1509’). These codes are not documented in the OTRS documentation for ASW1 ASW2 . The file must be removed before starting a new transaction. If Set Amount is configured to active. Code holds the result code of the transaction.and PSAM status codes. Note that in this case after the transactions is “completed the CompleteExtCardTransaction is must be called to complete the “local card” transaction. The event is used to return the cardtype. this event is used to return the amount of the transaction.

PCI padded card number (primary account number) Total.Unique transaction reference number PSAMCrator .PSAM Creator PointTerminal OCX Side 33 . this event is used to return the fee amount of the transaction.g. . Contact Point Customer Service 0x10006 (65542) Error in token transaction 0x10008 (65544) System error 0x10009 (65545) Internal state error 0x1000a (65546) Error in token 0x1000b (65546) Ip routing error (cannot connect) Remark… As an option the PointTerminal can play a wav file in the transaction flow: SoundOK. by setting pResult to the fee amount. but the receipt is missing or not printed. EventID 5: Set Amount Fee If Set Amount Fee is configured to active. this event returns extra receipt information.) in text and includes the following tokens for each receipt: Timestamp . to the user application.Fee amount in smallest currency unit in merchant currency Gratuity. this event returns the fee amount calculated by the terminal.ISO 4217 Currency code if dcc the selected currency code STAN.Timestamp (the OCX time of transaction) yyyy-mm-dd hh:mm PAN. The sound files are optional. 0x10004 (65540) Software is not compatible and the transaction not started 0x10005 (65541) No licence in terminal. EventID 6: Get Amount Fee If Get Amount Fee is configured to active.wav will ”play” in case of a successful transaction. and only played if present in the same directory where the ActiveX is excecuted. That is also the case of a ”advice transfer flag” or ”verify signature request”. This amount value will overrule the fee amount calculated by the terminal.Total amount in smallest currency unit in merchant currency Extra. SoundAlert.wav will ”play” in case of a unsuccessful transaction. The fee amount is presented as an ASCII string in text. .Gratuity amount in smallest currency unit in merchant currency Currency.4. to the user application. “50”. EventID 7: Get extra receipt information If Get Extra Receipt Info is configured to active. The information is returned as a separated string (. The function is mandatory if SetAmountFee is configured active. e. .. If code is 0 then the transaction completed successfully.Extra amount in smallest currency unit (not used) Fee.wav will ”play” in case of question in the dialog during the transaction. . .System codes: 0x10000 (65536) Unknown error 0x10001 (65537) Terminal is not ready 0x10002 (65538) Connection is broken (unconnected) 0x10003 (65539) Terminal in no receipt state. not relevant from terminal SW version 3. . SoundError.

0. e.cancellation of current transaction allowed or not Vat . e. .unique transaction number (issued by the psam) (System Trace Audit Number) cardnumber . . e. .Terminal identification number Number.PBS authorization code Card Name.0000. . “1024” currency . . “000100.Transaction result code Asw1Asw2 .Merchant name City. If pResult is 0 the transaction was found in the PSAM and transaction data are returned as a separated ASCII string (.Merchant cvr number Ref.Vat amount (if active) in merchant currency eReceipt – E receipt token (if active) Note that the terminal must be configured to send extra receipt information.unique transaction reference number. .g.transaction time stamp received from PBS as DTHR (YYMMDDHHMM) EventID 9: Transaction status Result of the PreviousTransaction method.g.0502281010”) with the following: stan .02.User application reference number supplied with the CardTransaction method.g. “000100” amount . Code. this event is used to interrupt the ActiveX during timed functions in the low level interface to the terminal (see dll documentation).Card reconciliation number Batch .PSAM.) in text. . Nr. stan.Merchant address Zip.PSAM return code Cvm Status.Card name Term Id. “1970-01-01 01:00. . “0502281010” for 2005-08-22 10:10 EventID 10: Dll timer event If the Dll timer event is configured to active. e.PSAM id Action Code.PBS transaction time stamp as DTHR.g.currency exponent.Merchant PBS number Name. “02” for DKK timestamp . . ..” EventID 8: Cardnumber and stan available If get Cardnumber and stan is configured to active.) in text (e.0208..DCC rate if dcc used else rate is 1. .0…….0. stan.Merchant phone number cvr. DCCrate . and that rejected transactions creating no receipts generates ‘empty’ strings. PointTerminal OCX Side 34 . . . as a separated ASCII string (.g.PCI padded cardnumber timestamp .Merchant zip code Phone.g. this event returns the PCI padded cardnumber and the unique transaction reference number.Cardholder verification method see EMV specs Aut. e.Merchant city Address.0. .amount.g.1024.currency code.batch number Cancel . CRC . . “0208” for DKK exponent . e.

This method is mandatory if performing token transactions. Note that the terminal must be configured to use gratuity. The file name of the token is made from the terminal id and the transaction reference number (stan). and a good practice is to get the code before the transaction is started.1000. CallBack pResult is set to 1.g “000200. . performing an Original Authorization outputs a token that is needed when a Capture of the transaction is performed (more information in OTRS 3. .0208” TokenID.”) returned to the OCX by nine successive CallBack with event ID 14. EventID 14: Put Authorization Code Performing an offline transaction will require that an Authorization Code is returned in this event ID 14. Consult OTRS for more information of Authorization Code and Status codes. e. from terminal id ‘0099075’.g. The transaction reference number is also printed on the transaction receipt.the original token amount Currency . EventID 12: Get Transaction Token Reference Some transactions output a transaction token e. this event is used to return the gratuity amount of the transaction. E. The event returns information about the token (a separated string) e. The method also supports rejection of transaction if the ECR after stop list lookup return the required status code. ‘0099075_000200.EventID 11: Set Amount Gratuity If Set Amount Gratuity is configured to active. and it is mandatory if performing offline transactions. and converted to a Long) shall be returned in the CallBack pResult. with Capture) on a terminal with another id. The method is mandatory if SetAmountGratuity is configured active. starting with the most significant character. TokenFileName. Text holds the index (1 to 9) indicating which character in the string to return. The code is six characters (a-z. Note that the terminal must be configured to use tokens.the full filename of the saved token’ Amount. the token filename must me renamed to conform to the new terminal id. each returning one of the nine character in pResult.g. transaction reference 000200.g. See SetConfiguration SetAuthCode PointTerminal OCX Side 35 .tok’. .the currency code of the original token amount It is the responsibility of the application to save this information for later retrieval of tokens.tok.unique reference to the token (transaction reference number (stan). by setting pResult to the gratuity amount. The TokenID (received in get Transaction Token event id 12. Consult OTRS for more information on gratuity. Printer options parm2 (default dir is C:\).g if the code is ‘TAST26. A-Z . This method is mandatory if performing token transactions.C:\0099075_000200. The OCX stores the Tokens on the disk in the directory defined by SetConfiguration.80’ return ‘T’ in the first CallBack. EventID 13: Put Transaction Token Reference Performing transactions that require a token as input (the card need not be present) will generate this event ID 13. If a token issued from one terminal id is used (e. 0-9 and space) and two character status separeted by comma (“. The Authorization Code is issued by PBS.3).

<CONTACTLESS>. Text: <amount>. and other properties in a comma separated string. No matter the value of Code.<RECEIPTTYPE><GRATUITYMODEL>. Code: Amount.<TCS>.operator accepted signature 0x80 (128) Rejected by PBS/PSAM 0x81 (129) Rejected – signature/refund transaction – operator rejected signature 0x82 (130) Rejected – Other reasons pResult must be set to 0xA1 (161 decimal) at all times to inform the terminal that the user application is still alive.<TOKEN>.<DEFAULTCURR>.<LANGUAGE>. or the connection failed.<IP ROUTING>. Text holds the connected terminal id and properties with this format: <TERMINALID>. <PREPAID>.<MERCHANTADDRESS>.<OFFLINE>. (Contact Point for detailed info).<PSAM_IE_NONEMV>.<MERCHANTNAME>. EventID 17: DCC amount This callback is only valid if DCC is used and selected.<currency>. EventID 16: PreResult status Code is set to 0x00 (0) Success 0x01 (1) Success – signature/refund transaction . (Consult Point for information about DCC). <MERCHANTCITY>. <PSAM_IE_EMV>. an eight character string. eg. <TERNINALTYPE>.<PSAMEIE>.<CDP>.<DUMMY>.<HARDWARENAME>.<TRACE>.EventID 15: Terminal ID The OpenTerminal(…) function if successful generates this event ID 15 with information about the connected terminal ID.<EIE>.<PSAM_IE_TOTALNONEMV>. ‘00990075’.<DCC>. <VAT>.<MERCHANTBRN>. <PSAMCDP>.<PSAM_IE_TOTALEMV> if terminalid is ‘00000000’ the terminal id is unknown.<TAPAVERSION>.<DCCMARKUP>. This method is mandatory if PreResult is enabled.<exp> where: <amount> is the converted DKK amount to the selected currency <currency> is the selected currency <exp> exponent of the selected currency PointTerminal OCX Side 36 .<MERCHANTZIP> <MERCHANTPHONE>.<USERINPUT>. <MERCHANTNUMBER>.<COUNTRY>.

g.USD. gratuity. Result code of an administration command. Terminal asks for currency change (active with Change Extended Amount).g. Terminal sends an (extended) amount e.00 DKK) EventID 21: Change Currency. 208 for DKK) PointTerminal OCX Side 37 . fee. Code holds the extended amount type ExtendedAmount pResult returns the amount.i.e. EventID 19: Change Extended Amount. Terminal asks for an (extended) amount e. pResult returns the currency code (e.00 EventID 18: Administration result. “2000.208” (20. EventID 20: Receive Amount. Code holds the result code of the administration command 0 : successful 1 : not successful text: If present text is either a transaction return code from PBS.2" // USD 10. or a system specific return code from the driver/terminal.: "1000. vat.i.g. Text can contain a secondary result code. gratuity entered by user Code holds the extended amount type ExtendedAmount text holds the amount e.

Clear EIE in PSAM only // 0x05 .Append EIE to PSAM // (PSAM start with empty EIE) // 0x02 – Advice .eie Format of the binary ReceivedEIEdata.eie file struct { byte resp_mode.Append to EIE hold by PSAM // 0x04 – Advice . // Length of EIE part of data byte data[512]. // 0x00 – Empty not used – allow memset 0x00 to be used // 0x01 – Request . // Length of SW IE part of data int length_eie. This method is mandatory if performing EIE transactions.. TAGlength in data as big-endian. It is the responsibility of the application to save this information for later retrieval of tokens. CallBack pResult must be set to 1.Clear EIE in PSAM only // 0x06 – Response from Host to the Request EIE int length_ie.Clear EIE in PSAM before update with this // 0x03 – Advice .length_ie+length_eie } PACKED EIE_DATA_BLOCK. // 0. The file name of the EIE data is ReceivedEIEdata.EventID 22: EIEdataReceived.008 transaction flow will generate EIE data from the Issuer to the ECR.3 and Issuer documentation for more details.Request . See OTRS 3. // Extended Issuer Envelope Data Block Length might be just long enough to hold 1+4+4+length_ie + length_eie bytes or up to 521 bytes. PointTerminal OCX Side 38 . Observe: length_ie and length_eie is stored as little-endian. If the terminal is configured to use Extended Issuer Envelope (EIE) and PSAM version > 71. Printer options parm2 (default dir is C:\). The OCX stores the EIE data on the disk in the directory defined by SetConfiguration.

The event will be called more times during a transaction.eie file struct { byte resp_mode. First time will be data to be sent to the Issuer in the transaction request. usually using the CardTransaction or Administration method. this event ID 255 is generated when the dialog is closing. It is the responsibility of the application to save this information for later retrieval of tokens. // Length of EIE part of data byte data[512]. If the terminal is configured to use Extended Issuer Envelope (EIE) and PSAM version > 71.Clear EIE in PSAM only // 0x05 . This event indicates when it is safe to display dialogs for the ECR application.Request .008 transactions will generate this event ID 23. See OTRS 3. TAGlength in data as big-endian.Append EIE to PSAM // (PSAM start with empty EIE) // 0x02 – Advice . // Extended Issuer Envelope Data Block Length must be just long enough to hold 1+4+4+length_ie + length_eie bytes or up to 521 bytes Observe: length_ie and length_eie is stored as little-endian. File EIEdata2Host. After event EIEdataReceived it will be data to be send to the Issuer in the transaction advice. PointTerminal OCX Side 39 .eie must be written before returning with pResult set to 0x01. or when the defined dialog timeout expires (e.g.Append to EIE hold by PSAM // 0x04 – Advice .Clear EIE in PSAM before update with this // 0x03 – Advice . e. Format of the binary EIEdata2Host.Clear EIE in PSAM only // 0x06 – Response from Host to the Request EIE int length_ie. EventID 255: Dialog Closing If a dialog in the OCX was called. 6 seconds). // Length of SW IE part of data int length_eie.length_ie+length_eie } PACKED EIE_DATA_BLOCK. Cancel or OK is pressed. This method is mandatory if performing EIE transactions. Printer options parm2 (default dir is C:\). // 0.eie the ECR place on the disk in the directory defined by SetConfiguration.3 and Issuer documentation for more details.EventID 23: EIEdata2Host. // 0x00 – Empty not used – allow memset 0x00 to be used // 0x01 – Request .g.. The OCX retrieve the data to be send to the Issuer from the file EIEdata2Host.

Chose Start Run and type cmd. Chose Start Run and type cmd.ocx copy the file to an existing directory on your hard disk. and it self register when your application ‘connects’ to it.exe program. or the system32 directory.3 How to implement the ActiveX Control PointTerminal.ocx ActiveX is build using Microsoft Visual C++ 2005 77626-009-0000007-41206 32-bit. PointTerminal OCX Side 40 . use the Regsvr32. In the command window type: copy PointTerminal. Note that windows searches cwd (current working directory). If you want to manually register the ActiveX control element in Windows for use in your SDK (software development kit).1 ActiveX registration To install PointTerimnal. You can choose to install the file in the same directory as your application. (consult Windows documentation for more information of registering an ActiveX component).ocx Consult the Windows documentation for more information about registrations. In the command window type: Regsvr32 c:\Program Files\PointWare\PointTerminal.ocx c:\Program Files\PointWare\*.2 Windows 64-bit Using the ocx in a 64-bit environment make sure your application is build for the x86 platform.* where c:\Program Files\PointWare\ is the path of your choice. Do not rename the file. 3. 3.ocx To remove the ActiveX from Windows registry use Regsvr32 /u c:\Program Files\PointWare\PointTerminal. then whatever is in the register database.

PointTerminalLib.2 Including the ActiveX Control element in the development project Add a reference to the ActiveX Control element in your application. CallBack PointTerminal OCX Side 41 . TerminalReturnCode. DisconnectTerminal. CurrencyType. ConfigurationType. The SDK will create dll’s that wraps the ActiveX component to the SDK (e. PointTerminal is dragged onto the toolbox (or added as a reference). SelectAdministration. The type check include these typedefs ReturnCode. TransactionStatus.PointTerminalLib.dll and/or Interop.exe). OpenTerminal. This is illustrated in this figure showing the toolbar in Visual Studio 2005 and Visual basic 6. CardTransaction. TransactionType. CloseTerminal. Components and check PointTerminal Active X Control module. AxInterop. by remove the old ActiveX from your development environment and adding the new.dll). ConnectTerminal. Administration. Consult your development environment documentation for more information. In MS Visual Basic select the Project menu. CallbackType.0.g. CompleteExtCardTransaction.g.ocx.3. If changing application code and using the newer ActiveX version please change code to reflect the stronger type check. AdministrationType and affect these methods SetConfiguration. You may use the Microsoft utility OleView to inspect the type library You may also use the Windows Forms ActiveX Control Importer (Aximp. e. From version 2. The (P) icon will appear in the ToolBox. You may have to build a new Type Library.4 a stronger Type Library is added to the PointTerminal. CardTransactionReturnCode.

Flow 4.4.1 Transaction Flow PointTerminal OCX Side 42 .

If a local pan-file is present in the terminal. meaning that the option requires a special setup in Points Terminal Management System. As an extra option the cardholder can be prompted to confirm the amount via the terminal display. and that these settings are downloaded into the terminal through a parameter download. and a card number used in a transaction match one of the card ranges defined in this file. In this case the user application must return 3 in the CallBack EventId. then the transaction is handled as a ”local card transaction”.2 External Card Transaction flow A Local Card Transaction is an option available only if activated through a parameter download. otherwise the application returns 1 for not acknowledge and 0 for acknowledge of the transaction. PointTerminal OCX Side 43 .4.

PointTerminal OCX Side 44 .

Note that administrative reports are treated as receipts. @) initialises the printer and 1B. Since WPC1252 is similar to ISO 8859-15 these entries are only shown as an example. 40 (ESC. The table is named ‘ExtendedAsciiPrint. E.txt2”.APPENDIX A.txt’ and if present. Printing The ActiveX is approved to handle Windows printers. When the ActiveX is configured to Autoprint the receipts. The table entries define entries for indexes > 127 to value (in hex) and sends value to printer. where value is a two char hex value. if the receipt file name is “C:\bon. concatenated with number “1” to “4”.txt”. This example shows the table contents for an Epson TM-T88III printer. PointTerminal OCX Side 45 . The EPI part 1D.01.<value>. “C:\bon. Format: <index> <value>[. all output to the printer bypass the printer driver and sends it directly to the defined local or networked printer. The ActiveX uses character encoding according to ISO 8859-15.g. 56. A translation and command table is supported.…. defines character translation. and an internal index will point to the latest (newest) file.1B. 74. and are not complete.40. 00 to FF.30 BC 8C . “C:\bon.01. Note that Point cannot support drivers and some drivers are difficult to install. signature) use two backup files. and “C:\bon. (the application using the ActiveX).56.74.30 execute a partial cut of the receipt. to start printing immediately. The printer driver must be configured to use the windows print spooler queue. The table defines control commands (e. The character entries BC 8C etc. The ActiveX will automatically backup the four latest receipts in files named as the receipt file. intended for simplifying configuration of POS printers with simple control and character translation. and also backed up and that some transactions (e.10 EPI 1D. Œ 9C ..10 selects code table WPC1252. it must be located in the same directory as your ECR application.txt1”. and can translate the characters of the receipt text. and to use hardware handshake.txt3”. ESC/POS) send to the printer before and after the receipt. If index is PRO (prologue) or EPI (epilogue) the value (up to 250 hex bytes. œ The PRO part 1B. the backup files are named “C:\bon.] . comma separated in one line) is send (not translated) to the printer before (pro) and after (epi) the (translated) receipt data.g.g.txt4”. BD PRO 1B.

If present PointTerminal. In the ‘Status Dialog’ the background of the four status lines are painted using the upper left quarter of the bitmap with a StrechBlt function.bmp Dialog background for both ‘Status Dialog’ and ‘Administration Select Dialog’.bmp ‘ButtonStop’ button in normal (up) state PointTerminalBackGround.APPENDIX B. The dialog background is painted using a StretchBlt function. PointTerminal OCX Side 46 . c:\Windows\System32\) and naming them: PointTerminalOk. Note that the latter is also used with return transactions by cards that require an application selection (e.). The ActiveX displays two dialogs. By default the dialogs uses the Point colour (RGB(102. copying the button bitmap to the corresponding dialog button.bmp ‘ButtonOk’ button in disabled state PointTerminalStop. Background example bitmap with Point watermark .g. The StretchBlt function stretches or compresses the bitmap to fit the size of the dialog item. Mastercard test card REQ01 M.179)) as background and Point Xenta like button styles ‘ButtonStop’ and ‘ButtonOk’ with size 68x92 pixels. using a BitBlt function.bmp ‘ButtonOk’ button in normal (up) state PointTerminalOkD.AP.g. Customising dialogs. the ‘Status Dialog’ is mandatory and the ‘Administration Select Dialog’ is optional. by placing bitmap files in the same directory as the ActiveX e.122. The buttons and background of the dialogs are user configurable.ocx will use the button bitmap files during dialog painting.size 536x172 pixel.

rename to ‘0099199_000872. The filename is composed by combining the terminals id and the unique transaction reference number to form a string like ‘00990198_000872. The terminal adds additional information to the end of the token before sending the token to the ECR. A Token is a string of data created by the PSAM for later use as input to the Capture (Supplemental or Reversal) transaction. PointTerminal OCX Side 47 . The ActiveX saves the token automatically in the directory specified by configuration.. Tokens The output from an Authorization transaction (pin. The ActiveX provide a method (ReadToken(. and the ActiveX compose the token filename using the terminals id. The first part of the token is in plaintext and includes the necessary information that enables the ECR to handle the token.)) for reading the plaintext and additional data from the token.tok’ if used on terminal with id ‘0099199’. E. The actual token is enciphered and signed. If a token is used on another of the merchants terminal.tok’. and removes this information before sending the token to the PASM. When using the token for later capture (Supplemental or Reversal) the ECR uses the reference number to identify the token. The method uses the full tokenfilename to identify the token (not the transaction reference number).g. The additional information includes extra information about the transaction including any dcc information. the ECR must rename the token file to include the new terminals id. key or prepaid) is called a Token.APPENDIX C. terminal ‘00990198’ and transaction reference ‘000872’. signature.

Trace level is set by using the SetConfiguration (5.txt flxComTrace.APPENDIX D.ini (contact Point). Value set in the terminal is overruled by value set in SetConfiguration().””.””) method. File PtFxDrTr@XXXX.4.txt PointTerminal OCX Side 48 . Trace Trace files is generated if the trace level is different from 16. or by configuring the terminals param. The table shows the trace file property for different levels.txt Level 0 Cyclic Inactive Inactive 2 Cyclic Reset Inactive 3 Cyclic Reset Reset 4 Cyclic Append Reset 5 Cyclic Reset Append 6 Cyclic Append Append 16 Inactive Inactive Inactive PointOcxTraceXXXX.