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);

Captura com Informações de Sub-Merchant

Para transações que requerem informações do sub-merchant, você pode adicionar os dados do estabelecimento comercial que está realizando a transação:*

final TransactionObject transaction = new TransactionObject();

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

// Informações do Sub-Merchant
transaction.setSubMerchantCity("São Paulo");
transaction.setSubMerchantPostalAddress("01310-100");
transaction.setSubMerchantStreetName("Avenida Paulista");
transaction.setSubMerchantTaxIdentificationNumber("12345678000190");
transaction.setSubMerchantRegisteredIdentifier("MERCHANT123");
transaction.setSubMerchantLegalName("Stark Corporation Ltda");
transaction.setSubMerchantBuildingNumber("1000");
transaction.setSubMerchantCountryCode("076");
transaction.setSubMerchantState("SP");
transaction.setSubMerchantNeighborhood("Bela Vista");
transaction.setSubMerchantEmail("[email protected]");
transaction.setSubMerchantPhone("11987654321");
transaction.setSubMerchantTaxIdentificationType("CNPJ");
transaction.setSubMerchantSiteUrl("www.starkcorp.com.br");
transaction.setSubMerchantPaymentGatewayId("GATEWAY123");

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();

📘 Importante:

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.

Os campos de sub-merchant são opcionais, porém em caso de sub-adquirente a passagem desses campos é obrigatória.