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.