Esse provider é utilizado apenas para transações com Pinpad
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
  | String  | Valor da transação em centavos.  | 
requestId  | String  | ID do pedido  | 
initiatorTransactionKey  | 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  | EmailClient  | Seu email de noReply para envio do comprovante eletrônico.  | 
instalmentTransactionEnum (¹)  | Enum  | Quantidade de parcelas.  | 
typeOfTransactionEnum (¹)  | Enum  | Tipo da transação (débito, crédito ou voucher).  | 
pinpadObject  | O pinpad que você deseja passar a transação.  | |
shortName  | String  | Nome 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  | Boolean  | Define se a transação será realizada com captura automática ou não.  | 
SubMerchantCategoryCode  | String  | MCC do sub-merchant que efetuou a transação.  | 
subMerchantAddress  | String  | Logradouro do sub-merchant.  | 
SubMerchantCity  | String  | Cidade do sub-merchant.  | 
SubMerchantPostalAddress  | String  | CEP do sub-merchant.  | 
SubMerchantRegisteredIdentifier  | String  | Identificador do sub-merchant no Sistema do Subadquirente.  | 
SubMerchantTaxIdentificationNumber  | String  | CNPJ do sub-merchant (apenas números).  | 
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.
(¹) 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);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.
