/// <summary> /// Cancel a transaction. /// </summary> /// <param name="cancelation">Cancelation info.</param> internal void Cancel(CancelationOption cancelation) { ICancellationReport cancelReport = this.StoneAuthorizer .Cancel(cancelation.StoneId, cancelation.Amount); if (cancelReport.WasSuccessful == true) { Console.WriteLine("TRANSACAO {0} CANCELADA COM SUCESSO.", cancelation.StoneId); TransactionTableEntry transaction = this.Transactions .Where(t => t.StoneId == cancelation.StoneId) .FirstOrDefault(); if (transaction != null) { transaction.IsCaptured = false; } } else { Console.WriteLine("TRANSACAO {0} NAO PODE SER CANCELADA.", cancelation.StoneId); } }
/// <summary> /// Performs a cancellation operation. /// </summary> /// <param name="sender">Cancellation button.</param> /// <param name="e">Click event arguments.</param> private void OnCancelTransaction(object sender, RoutedEventArgs e) { // Limpa o log: this.uxLog.Items.Clear(); ICardPaymentAuthorizer currentAuthorizer = this.GetCurrentPinpad(); if (currentAuthorizer == null) { this.Log("Selecione um pinpad."); return; } string atk = this.uxCbbxTransactions.SelectedItem.ToString(); // Verifica se um ATK válido foi selecionado: if (string.IsNullOrEmpty(atk) == true) { this.Log("Não é possivel cancelar um ATK vazio."); return; } // Seleciona a transação a ser cancelada de acordo com o ATK: IAuthorizationReport transaction = this.approvedTransactions.Where(t => t.AcquirerTransactionKey == atk).First(); // Cancela a transação: ICancellationReport cancelResult = currentAuthorizer.Cancel(transaction.AcquirerTransactionKey, transaction.Amount); if (cancelResult.WasSuccessful == true) { // Cancelamento autorizado. // Retira a transação da coleção de transação aprovadas: this.approvedTransactions.Remove(transaction); this.uxCbbxTransactions.Items.Remove(transaction.AcquirerTransactionKey); } else { // Cancelamento não autorizado: this.Log(string.Format("{0} - {1}", cancelResult.ResponseCode, cancelResult.ResponseReason)); } this.UpdateTransactions(); }