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.
