| [ Web Proxy ] |
| Viewing: https://docs.nmi.com/docs/././device-disconnection | [Back] [Original] |
Because transaction processing runs on the Axium device not on the host mobile device a Bluetooth or TCP/IP disconnection during a transaction does not automatically terminate the transaction the way it would on a traditional PIN pad integration. The transaction continues on the Axium; the SDK simply loses visibility of it.
This page explains the SDK's behaviour during a disconnection and how your integration should respond.
When the SDK loses its connection to the Axium during a transaction:
TransactionUpdate event with the value AttemptingToReconnect (see Configuration and utility events).transactionFinished event.terminateTransaction() see below.The transaction itself continues on the Axium device throughout. From the device's perspective, the host disconnecting is irrelevant the cardholder may still complete the payment.
If your application chooses not to wait for reconnection and calls terminateTransaction() while the SDK is in the reconnection loop, the SDK emits a transactionFinished event with the following values:
| Parameter | Value |
|---|---|
TransactionResult | Unknown |
TransactionState | Unknown |
Errors | MerchantTerminatedTransaction, TransactionInformationUnavailable |
TransactionResult = Unknowndoes NOT mean the transaction failed. It means the SDK could not determine the outcome because the device was unreachable when termination was requested. The transaction may still have completed successfully on the Axium.
When you've terminated during a disconnection, the only way to discover the true outcome is to query the Axium directly once the connection is restored.
connectAndConfigure() or by observing a successful getStatus().getTransactionInformation() passing the terminated transaction's UserReference.TransactionResult and TransactionState to determine whether the transaction was approved, declined, or never completed.val params = Parameters()
params.add(ParameterKeys.UserReference, terminatedUserReference)
val info = ChipDnaMobile.getInstance().getTransactionInformation(params)
val result = info.getValue(ParameterKeys.TransactionResult)
val state = info.getValue(ParameterKeys.TransactionState)Based on the returned values, your integration should:
See the shared Configuration and Utility Methods page for the full getTransactionInformation() reference.
Updated 2 months ago
| Web Proxy Viewer | New URL | Original Page |