Tipos de TransaçãoPara saber mais sobre tipos de transação acesse a seção Transações Financeiras
Transações em Ambiente de IntegraçãoNosso Sandbox foi preparado para lhe ajudar a validar todos os cenários possíveis de respostas das bandeiras. As transações recebem respostas correspondentes ao valor dos centavos instanciados.
Exemplo: Transações com valor acima de R$1,00 tem código de resposta 0000. Transações de R$0,01 tem código de resposta 1007.
Todos os possíveis códigos de retorno deste ambiente e seus significados encontram-se na seção Códigos de Retorno do Sandbox.
Enviar transações com o nosso SDK é simples e rápido.
Primeiro você deve instanciar um objeto do tipo TransactionObject:
final TransactionObject transaction = new TransactionObject();E popular os seguintes atributos:
| Nome | Tipo | Descrição |
|---|---|---|
| amount obrigatório | String | Valor da transação em centavos. |
| requestId opcional | String | ID do pedido. |
| initiatorTransactionKey obrigatório | String | É um identificador único da transação definido pela aplicação que inicia a transação. O SDK possui um padrão próprio para gerar este identificador e usará esse padrão se um identificador não for definido. Caso você queira passar o seu próprio identificador, certifique-se que ele será sempre único para todos os seus clientes. |
| emailClient opcional | EmailClient | Seu email de noReply para envio do comprovante eletrônico. |
| instalmentTransactionEnum (¹) obrigatório | Enum | Quantidade de parcelas. |
| typeOfTransactionEnum (¹) obrigatório | Enum | Tipo da transação (débito, crédito ou voucher). |
| pinpadObject obrigatório | O pinpad que você deseja passar a transação. | |
| shortName (condicional) - Parceiros: opcional - Subadquirentes: Obrigatório | String | Nome fantasia do estabelecimento¹ (aparecerá na fatura do portador). Deve obrigatoriamente corresponder ao principal nome utilizado pelo estabelecimento. Campo obrigatório para subadquirentes, porém não restritivo à elas. ¹ Se o estabelecimento comercial faz parte do segmento de casas de câmbio, para transações da bandeira Mastercard será necessário identificar na tagShrtNm da autorização. Exemplo: nomedomerchant*cambio. |
| capture obrigatório | Boolean | Define se a transação será realizada com captura automática ou não. |
| SubMerchantCategoryCode (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | MCC do sub-merchant que efetuou a transação. Atributo obrigatório para aplicações de subadquirentes. |
| subMerchantAddress (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Logradouro do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantCity (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Cidade do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantPostalAddress (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | CEP do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantRegisteredIdentifier (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Identificador do sub-merchant no Sistema do Subadquirente. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantTaxIdentificationNumber (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | CNPJ do sub-merchant (apenas números). Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantStreetName (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Rua/Avenida do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantLegalName (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Razão social do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. NÃO é a informação que aparece na fatura do portador. Veja o campo shortName. |
| SubMerchantBuildingNumber (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Número do prédio do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantCountryCode (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Código do país do sub-merchant (ex: 076 para Brasil). Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantState (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | UF do estado do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantNeighborhood (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Bairro do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantEmail (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Email de contato do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantPhone (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Telefone de contato do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantTaxIdentificationType (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | Tipo de documento fiscal do sub-merchant (ex: CNPJ, CPF). Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantSiteUrl (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | URL do site do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
| SubMerchantPaymentGatewayId (condicional) - Parceiros: Não devem utilizar - Subadquirentes: Obrigatório | String | ID do gateway de pagamento do sub-merchant. Atributo obrigatório para aplicações de subadquirentes. |
Sub-MerchantNo caso de aplicações de subadquirentes o Sub-Merchant é o EC afiliado no sistema da subadquirente.
No caso dos outros parceiros o Sub-Merchant é o EC afiliado na Stone.
Os campos de sub-merchant são opcionais, porém em caso de sub-adquirente a passagem desses campos é obrigatória.
(¹) instalmentTransactionEnum e typeOfTransactionEnumOs valores possíveis para estes atributos estão na seção Transaction Enums.
//Definir o valor da transação em centavos
transactionObject.setAmount("10");
/* AVISO IMPORTANTE: Não é recomendado alterar o campo abaixo do ITK,
* pois ele gera um valor único. Contudo, caso seja necessário
* faça conforme a linha a seguir. */
transactionObject.setInitiatorTransactionKey("SEU_IDENTIFICADOR_UNICO");
//Informar a quantidade de parcelas, veja a tabela de valores para o InstalmentTransactionEnum
transactionObject.setInstalmentTransaction(InstalmentTransactionEnum.ONE_INSTALMENT);
//Definir forma de pagamento
transactionObject.setTypeOfTransaction(TypeOfTransactionEnum.CREDIT);
//Define se transação será feita com captura ou não.
transactionObject.setCapture(true);
//Informações do Sub-Merchant (obrigatório para subadquirentes)
transactionObject.setSubMerchantCity("São Paulo");
transactionObject.setSubMerchantPostalAddress("01310-100");
transactionObject.setSubMerchantStreetName("Avenida Paulista");
transactionObject.setSubMerchantTaxIdentificationNumber("12345678000190");
transactionObject.setSubMerchantRegisteredIdentifier("MERCHANT123");
transactionObject.setSubMerchantLegalName("Stark Corporation Ltda");
transactionObject.setSubMerchantBuildingNumber("1000");
transactionObject.setSubMerchantCountryCode("076");
transactionObject.setSubMerchantState("SP");
transactionObject.setSubMerchantNeighborhood("Bela Vista");
transactionObject.setSubMerchantEmail("[email protected]");
transactionObject.setSubMerchantPhone("11987654321");
transactionObject.setSubMerchantTaxIdentificationType("CNPJ");
transactionObject.setSubMerchantSiteUrl("www.starkcorp.com.br");
transactionObject.setSubMerchantPaymentGatewayId("GATEWAY123");Após instanciar e popular o objeto TransactionObject, você poderá passar o mesmo para o TransactionProvider, junto com os seguintes parâmetros:
- UserModel: Objeto que representa o Stone Code ativado
- PinpadObject: Objeto que representa o pinpad que irá passar a transação
// Processo para envio da transação
final TransactionProvider provider = new TransactionProvider("CONTEXT", transactionObject, "USER_MODEL", "PINPAD_OBJECT");
provider.setDialogTitle("Aguarde"); // Título do Dialog
provider.setDialogMessage("Enviando..."); // Mensagem do Dialog
provider.setConnectionCallback(new StoneActionCallback() {
@Override
public void onSuccess() {
// Transação enviada com sucesso e salva no banco. Para acessar, use o TransactionDAO
}
@Override
public void onStatusChanged(Action action) {
// Nesse callback é retornado o próximo passo a ser executado no fluxo de pagamento
}
@Override
public void onError() {
// Erro na transação
}
});
provider.execute();// Processo para envio da transação
val provider = TransactionProvider("CONTEXT", transactionObject, "USER_MODEL", "PINPAD_OBJECT")
provider.useDefaultUI(true)
provider.dialogTitle = "Aguarde" // Título do Dialog
provider.dialogMessage = "Enviando..." // Mensagem do Dialog
provider.connectionCallback= object : StoneActionCallback {
override fun onSuccess() {
// Transação enviada com sucesso e salva no banco. Para acessar, use o TransactionDAO
}
override fun onStatusChanged(action: Action) {
// Nesse callback é retornado o próximo passo a ser executado no fluxo de pagamento
}
override fun onError() {
// Erro na transação
}
}
provider.execute()Após a execução do provider, a sua aplicação receberá um Callback nos métodos onSuccess() ou onError().
Para ter acesso ao status da transação, você deve utilizar o método:
provider.getTransactionStatus();
Status da TransaçãoTodos os status possíveis se encontram na seção Status da Transação.
Em caso de REJECTED e DECLINED, você pode ver a mensagem de retorno da Stone com o método:
provider.getMessageFromAuthorize()
Códigos de Retorno AutorizadorTodos os códigos possíveis retornados pelo autorizador Stone em produção se encontram na seção Códigos de Retorno do Autorizador Stone.

