Tap2ID - Verifone
Core SDK Workflow
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 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
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
Terminal must have:
Terminal.CardAcquisitionBehaviour = 10= Card capture works, but follow-on payment NOT allowed1= Card capture works, AND payment can use captured card ✅
