setStoneTransaction method
void
setStoneTransaction(
- String message
)
Implementation
void setStoneTransaction(String message) {
try {
if (message.contains('{')) {
final map = json.decode(message);
switch (map['method']) {
case 'licence':
String errorMessage = (map['errorMessage'] ?? '').toString();
final messageFlow = map['message'] as String? ?? '';
lastStatus = StoneStatusTechActivateRunning(message: messageFlow);
final resultLicence = int.tryParse((map['result'] ?? '').toString()) ?? 999999;
if (resultLicence != 0 || errorMessage.toLowerCase().contains('erro')) {
if (errorMessage.isEmpty) {
errorMessage = 'Erro ao validar a licença';
}
lastStatus = StoneStatusTechActivateError(message: errorMessage);
}
_emit(lastStatus!);
case 'active':
final message = (map['message'] ?? '').toString().toLowerCase();
if (message.contains('terminal ativado')) {
lastStatus = const StoneStatusTechActivate();
} else if (message.contains('licença ativada')) {
// Ignorar mensagem de licença ativada durante o fluxo de ativação do terminal
// Esta mensagem vem do checkValidLicence e não deve interferir no fluxo
return;
} else {
lastStatus = StoneStatusTechActivateError(message: map['message'] ?? 'Erro ao ativar o terminal');
}
_emit(lastStatus!);
return;
case 'cancel':
lastStatus = StoneStatusTechCanceled(cancelExtraData: map);
_emit(lastStatus!);
return;
case 'transaction':
final transaction = StoneTransactionModel.fromMap(map);
lastStatus = StoneStatusTechTransaction(transaction: transaction);
_emit(lastStatus!);
return;
case 'QRCode':
final transaction = StoneTransactionModel.fromMap(map);
lastStatus = StoneStatusTechQRCodeTransaction(transaction: transaction);
_emit(lastStatus!);
return;
case 'printerTransaction':
lastStatus = const StonePrinterCustomer();
_emit(lastStatus!);
return;
case 'PaymentOptions':
final optionsList = map['options'] as List<dynamic>?;
final options = optionsList?.map((e) => e.toString()).toList() ?? <String>[];
final message = (map['message'] ?? '').toString();
lastStatus = StoneStatusTechPaymentOptions(options: options, message: message);
_emit(lastStatus!);
return;
}
}
} catch (e) {
log('***Erro setStoneTransaction: $e');
}
}