Po obdržení ID transakce by vaše aplikace měla vygenerovat a odeslat požadavek na transakci. Platební aplikace spustí celý platební proces a vrátí výsledek. Ve starších verzích (níže než verze 1.2.) byla k získání výsledku transakce použita synchronní komunikace (funkce naslouchání je zastaralá). Pro novou verzi je komunikace asynchronní, kde se pro získání aktuálního stavu transakce používá metoda getTransactionState.
void transactionRequestV2(String transactionRequesJsonString, ITransactionResultListener listener) throws RemoteException
Request [TransactionRequestV2Entity]
Na základě typu transakce jsou následující pole povinná/nepovinná/volitelná:
[(M) povinné, (O) volitelná)]

Upozornění
Formát pro všechny částky je na dvě desetinná místa, takže například 50 Kč by mělo být vyplněno jako 5000.
Popis polí
amount
Částka určuje objem transakce. Tato částka se počítá v domácí měně, kterou používá terminál. Formát je na dvě desetinná místa, takže například 50 Kč by mělo být vyplněno jako 5000.
tipAmount
V restauracích můžete požádat zákazníka o přidání spropitného. Tato částka se pak přičte k původní částce zadané obchodníkem.
transactionID
Jedinečné ID generované platební aplikací během procesu registrace transakce.
clientID
transactionType
Typ transakce definuje typ transakce, kterou chcete zahájit. Dostupné hodnoty jsou:
- SALE(1)
- VOID(2)
- CLOSE_BATCH(4)
originTransactionID
Používá se pro storno transakce a měl by obsahovat ID transakce, kterou chcete zrušit.
originReferenceNum
Toto pole je volitelné a může být vyplněno referenčním číslem – libovolným řetězcem AN s maximálně 20 znaky. Tento řetězec je viditelný ve všech přehledech transakcí a pomáhá účetním oddělením spárovat platby s objednávkami. Diakritika není podporována.
cancelMode
2 – Older transactions
printByPaymentApp
Definuje, zda účtenku klientovi předá vaše aplikace nebo GP tom. Výchozí hodnota je true (tedy GP tom nabídne způsob předání účtenky klientovi). Pokud pošlete hodnotu “false”, ihned po transakci vrátíme uživatele do vaší aplikace a předání účtenky je na vás.
Response [TransactionResultV2Entity]

Doporučení!
Tato odpověď je v API kvůli zpětné kompatibilitě se staršími verzemi. Důrazně doporučujeme nepoužívat jej pro manipulaci na vaší straně, protože je nahrazen metodou dotazu na transakci. Očekáváme, že tato odpověď bude v budoucnu zcela odstraněna – důvod: není vždy zajištěno, že odpověď na ni bude přijata (například při ukončení aplikace systémem nebo uživatelem).
Všechna pole jsou vysvětlena v tomto článku.
Příklad requestu typu prodej
final TransactionRequestV2Entity entity = new TransactionRequestV2Entity();
entity.setTransactionID(/*Your registration ID*/);
entity.setPrintByPaymentApp(true);
entity.setTipAmount(200L); //2
entity.setAmount(15500L); //155
entity.setTransactionType(TRANS_TYPE_SALE); //TRANS_TYPE_SALE == 1
}
//Please use json string of (TransactionRequestV2Entity) to communicate with API for version 2
try {
iSmartconnectService.transactionRequestV2(new Gson().toJson(entity), transactionResultListener);
} catch (RemoteException e) {
e.printStackTrace();
}
Příklad requestu typu storno transakce
/**
* Last Transaction Void
*/
private fun doVoid() {
val entity = TransactionRequestEntity()
entity.transactionType = 2
entity.trasanctionID = “000005”
entity.cancelMode = 1
try {
iSmartconnectService?.transactionRequest(entity, transactionResultListener)
} catch (e: RemoteException) {
Log.e(TAG, e.message) }
}
/**
* Void of previous transaction with UI ->
* Data from previous transaction must be entered on Terminal Screen
*/
private fun doSpecialVoidWithUI() {
val entity = TransactionRequestEntity()
entity.transactionType = 2
entity.trasanctionID = regTransactionId
entity.cancelMode = 2
try {
iSmartconnectService?.transactionRequest(entity, transactionResultListener)
} catch (e: RemoteException) {
Log.e(TAG, e.message) }
}
/**
* Void of previous transaction without UI ->
* Data from previous transaction must are sent in TransactionRequestEntity
*/
private fun doSpecialVoidWithoutUI() {
val entity = TransactionRequestEntity()
entity.transactionType = 2
entity.trasanctionID = regTransactionId
entity.cancelMode = 2
//Data from previous transaction we would like to cancel
entity.originTransactionID = “000002”
entity.originSeqNumber = “001362001”
entity.last4CardNumber = “8175”
entity.amount = “100”
entity.originDate = “160420”
entity.originalTerminalId = “255746”
try {
iSmartconnectService?.transactionRequest(entity, transactionResultListener)
} catch (e: RemoteException) {
Log.e(TAG, e.message)
}
}
Příklad requestu uzávěrka
private fun doCloseBatch() {
val entity = TransactionRequestEntity()
entity.transactionType = 4
entity.trasanctionID = “000005”
try {
iSmartconnectService?.transactionRequest(entity, transactionResultListener)
} catch (e: RemoteException) {
Log.e(TAG, e.message)
}
}