Provider de Transação

❗️

Esse provider é utilizado apenas para transações com Pinpad

📘

Tipos de Transação

Para saber mais sobre tipos de transação acesse a seção Transações Financeiras

🚧

Transações em Ambiente de Integração

Nosso 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:

NomeTipoDescrição
amount obrigatórioStringValor da transação em centavos.
requestId opcionalStringID do pedido
initiatorTransactionKey obrigatórioStringÉ 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 opcionalEmailClientSeu email de noReply para envio do comprovante eletrônico.
instalmentTransactionEnum (¹) obrigatórioEnumQuantidade de parcelas.
typeOfTransactionEnum (¹) obrigatórioEnumTipo da transação (débito, crédito ou voucher).
pinpadObject obrigatórioO pinpad que você deseja passar a transação.
shortName opcionalStringNome de exibição no extrato do cliente (máximo de 14 caracteres). Deixar em branco caso queira que apareça o nome do estabelecimento cadastrado na Stone
capture obrigatórioBooleanDefine se a transação será realizada com captura automática ou não.
SubMerchantCategoryCode opcionalStringMCC do sub-merchant que efetuou a transação. Atributo obrigatório para aplicações de subadquirentes
subMerchantAddress opcionalStringLogradouro do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantCity opcionalStringCidade do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantPostalAddress opcionalStringCEP do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantRegisteredIdentifier opcionalStringIdentificador do sub-merchant no Sistema do Subadquirente. Atributo obrigatório para aplicações de subadquirentes
SubMerchantTaxIdentificationNumber opcionalStringCNPJ do sub-merchant (apenas números). Atributo obrigatório para aplicações de subadquirentes
SubMerchantStreetName opcionalStringRua/Avenida do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantLegalName opcionalStringRazão social do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantBuildingNumber opcionalStringNúmero do prédio do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantCountryCode opcionalStringCódigo do país do sub-merchant (ex: 076 para Brasil). Atributo obrigatório para aplicações de subadquirentes
SubMerchantState opcionalStringUF do estado do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantNeighborhood opcionalStringBairro do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantEmail opcionalStringEmail de contato do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantPhone opcionalStringTelefone de contato do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantTaxIdentificationType opcionalStringTipo de documento fiscal do sub-merchant (ex: CNPJ, CPF). Atributo obrigatório para aplicações de subadquirentes
SubMerchantSiteUrl opcionalStringURL do site do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
SubMerchantPaymentGatewayId opcionalStringID do gateway de pagamento do sub-merchant. Atributo obrigatório para aplicações de subadquirentes
📘

Sub-Merchant

No 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 typeOfTransactionEnum

Os 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ção

Todos 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 Autorizador

Todos os códigos possíveis retornados pelo autorizador Stone em produção se encontram na seção Códigos de Retorno do Autorizador Stone.