Core SDK Workflow
Regular Lookup — Member exists in Diller
New Member — Register in Diller & link card
Add Second Card — Register new card to existing member
1. Initialize → Connect to Terminal
_transactionManager.Initialize(DeviceAddress, ConnectionType.TCPIP)
Establishes connection between POS and P630 terminal via TCP/IP
Must be called first before any other operations
Creates the communication channel
2. Login → Authenticate Operator
_transactionManager.Login(OperatorId, Password)
Logs in the cashier/operator to the terminal
In NULL mode, password is optional
Required before starting payment sessions
3. StartSession → Begin Transaction Context
_transactionManager.StartSession(InvoiceId)
Creates a payment session with unique invoice ID
Groups all operations (card capture, payment) under one session
Must be open before capturing cards or processing payments
4. RequestCardData2 → Early Card Capture (Key Feature)
_transactionManager.RequestCardData2( amount: 10000, // Maximum expected amount tokenRequest: true // Request ANALYTICS + REUSE tokens )
Purpose: Capture card before knowing the final price
Customer taps card once
Returns card data (brand, last4, BIN, expiry)
Returns ANALYTICS token → Used to search Diller for member
Returns REUSE token → Used for future transactions
Stores card data in terminal memory for later payment
5. StartPayment → Process Payment
_transactionManager.StartPayment( amount: 9000, // Final discounted amount currency: "SEK", paymentType: PaymentType.SALE )
With Early Capture (our implementation):
Uses card data from step 4 (no re-tap needed)
Amount can differ from capture amount (discount applied)
Terminal processes payment with stored card
6. EndSession → Close Transaction Context
_transactionManager.EndSession()
Closes the payment session
Clears captured card data
Finalizes the transaction
7. Logout → Disconnect Operator
_transactionManager.Logout()
Logs out the operator
Terminal returns to idle state
Complete flow example
1. Initialize → Connect to terminal at 192.168.68.123 2. Login → Operator "TEST" logs in 3. StartSession → Session "INV-123" opens 4. RequestCardData2 → Customer taps card (max $100) ↓ Returns: { brand: "Visa", last4: "1234", analyticsToken: "ABC..." } 5. [POS searches Diller with token → finds discount] 6. StartPayment → Charge $90 (uses captured card, no re-tap) ↓ Returns: { transactionId: "...", authCode: "057652" } 7. EndSession → Close session 8. Logout → Terminal idle
Critical SDK Configuration
The terminal must have the following configuration set:
Terminal.CardAcquisitionBehaviour = 1
Value | Meaning |
| Card capture works, but follow-on payment is not allowed |
| Card capture works, and payment can use captured card ✅ |



