Provider de Captura

A operação de pagamento possui 2 etapas: Autorização e Captura. Por padrão, O SDK realiza a transação com autorização e captura, mas existe a possibilidade de você fazer uma transação somente de autorização e depois realizar uma Captura Posterior.
A Captura Posterior irá executar uma operação de captura, ou cobrança, do valor autorizado previamente.

Uma transação pode ser realizada com a captura posterior, quando define-se o setCapture como "false" no TransactionObject, conforme segue:

final TransactionObject transaction = new TransactionObject();

// Define se transação será feita com captura ou não.
transaction.setCapture(false);

Podemos buscar uma transação da seguinte forma:

// Cria uma lista com todas as transacoes
transactionObjects = transactionDAO.getAllTransactionsOrderByIdDesc();

/* Seleciona uma transação da lista
 * transactionObjects.get(0) retorna a transação localizada na posição 0 */
final TransactionObject selectedTransaction = transactionObjects.get(0);

Para verificar se a transação já foi capturada, você pode utilizar o método a seguir, que retornará "false" caso a transação não tenha sido capturada.

//Retorna "false" se a transação ainda não foi capturada
selectedTransaction.isCapture();

Para finalmente realizar a captura, você deve fornecer a este provider uma Activity e um TransactionObject, que se trata da sua transação a ser capturada.

//Captura da transação selecionada
final CaptureTransactionProvider provider = new CaptureTransactionProvider("SUA_ACTIVITY_AQUI", selectedTransaction);
provider.setDialogMessage("Efetuando Captura...");
provider.setConnectionCallback(new StoneCallbackInterface() {
	@Override
	public void onSuccess() {
		//Transação Capturada com sucesso
  }
	@Override
	public void onError() {
		//Ocorreu um erro na captura da transacao
  }
});
provider.execute();

📘

Por exigência da Sodexo as transações dessa bandeira não devem ser enviadas com captura automática.

Quando uma transação da bandeira Sodexo é realizada com captura automática, o nosso SDK detecta essa informação e uma autorização sem captura automática é realizada. Uma requisição de captura é enviada automaticamente logo em seguida.