start Transaction
Starts a transaction synchronously. Returns UncommittedTransactionResult when a commit decision is required, otherwise TransactionResult. Failed payments are results; communication failures throw TerminalException. Run on a worker thread when used from a UI.
Throws IllegalStateException if a pre-transaction wait (startPreTransaction/ startPreTransactionAsync/preResume) is still pending - continue it via PreTransactionResult.startTransaction instead, or call abort first to discard it.