---
title: "Changelog"
url: "https://devcenter.stone.com.br/sdk-android-changelog"
image: "https://devcenter.stone.com.br/_og/d/c_Ocean.takumi,title_Changelog,props_eyJ0aGVtZSI6eyJtb2RlIjoibGlnaHQiLCJjb2xvcnMiOnsicHJpbWFyeSI6IiMzMEE2NkQifX19,p_Ii9zZGstYW5kcm9pZC1jaGFuZ2Vsb2ci,s_qqXYp3d52MrDQL7I.png"
---

# Changelog

Alterações realizadas na aplicação

## [4.20.13 (2026-08-13) — versão recomendada](#_42013-2026-08-13-versão-recomendada)

Release de feature, gerada a partir do PR #1601 na branch master-4.x (commit 9e52540). Adiciona suporte a impressão de comprovante com os dados do submerchant (subcredenciador) quando a transação carrega esses dados, cobrindo via cliente e via estabelecimento, pagamento e cancelamento, impressão e reimpressão. establishmentCode impresso continua sendo o stoneCode do estabelecimento primário — nenhuma mudança em libs externas (datacontainer-api, receiptgenerator).

-   feat (PRJHW-5090): comprovantes de pagamento e cancelamento (via cliente e via estabelecimento) passam a exibir nome, documento (CPF/CNPJ) e endereço do submerchant no lugar do estabelecimento primário, quando a transação for de submerchant. Fallback campo a campo: se o submerchant não tiver um dado específico preenchido, usa o do primário.
-   feat: nova função ReceiptEstablishmentData.from(transaction, user) centraliza essa escolha (submerchant vs. primário) num resolver único, consumido pelos dois builders de comprovante.
-   feat: normalizeTaxIdType garante que o tipo de documento impresso seja sempre "CPF" ou "CNPJ" (inferindo pelo tamanho do número quando o valor recebido vier inválido), evitando um IllegalArgumentException na lib de geração de comprovante.
-   fix: persiste (escrita) e recupera (leitura) o cadastro completo do submerchant no DataContainer — nome, razão social, tipo de documento, país e endereço completo — para que a reimpressão também mostre os dados corretos, não só a impressão inicial.
-   fix: corrige um bug pré-existente em que o logradouro do submerchant era gravado na coluna de complemento em vez de rua.
-   fix: quando o nome fantasia (shortName) do submerchant não é informado, usa a razão social (subMerchantLegalName) como nome persistido/impresso, em vez de deixar em branco.

`Nota de compatibilidade: reimpressão de transações de submerchant anteriores a esta versão pode mostrar o logradouro legado na linha de complemento (comportamento gracioso; afeta só dados legados imutáveis, já persistidos com o bug antigo).`

## [4.20.12 (2026-08-13)](#_42012-2026-08-13)

Release de correção de infraestrutura/build, gerada a partir do PR [`#1606`](https://github.com/stone-payments/pos-android-sdk/pull/1606) na branch `master-4.x`(commit `6219597`). Não altera comportamento funcional do SDK — corrige apenas regressões de versão de dependências que haviam sido introduzidas silenciosamente no início da série `4.20.x` (no merge `master-4x-with-gateway`, primeira mudança da 4.20.1) e que foram identificadas ao comparar o diff real de build entre as tags `4.18.0` e `4.20.11`.

-   **fix**: restaura `targetSdkVersion` de `24` para `30`.
-   **fix**: restaura AGP (Android Gradle Plugin) de `8.9.2` para `8.12.1`.
-   **fix**: restaura Koin de `3.3.3` para `4.1.1`.
-   **fix**: restaura Kotlin de `2.1.10` para `2.1.21` (via `gradle/libs.versions.toml`).
-   **fix**: restaura `ndkVersion` de `30.0.14904198` para `35.0.0`.
-   **fix**: ajusta `SdkKoinStarter.kt` e os _fakes_ de teste (`BaseTransactionProviderTest.kt`, `StoneStartTest.kt`) para a assinatura de `KoinContext.loadKoinModules` exigida pela Koin `4.1.1` (o código havia sido adaptado para a assinatura da `3.3.3`, causando falha de compilação ao restaurar a versão da lib).

## [4.20.11 (2026-08-12)](#_42011-2026-08-12)

-   **fix** (`PRJHW-4946`): corrige o evento de **cartão removido** que não estava sendo emitido pelo SDK — causa raiz: o _entry mode_ era setado mais tarde no fluxo do que o esperado, então a checagem de remoção do cartão não disparava corretamente. Este é o fix mais relevante da série e o principal motivo para atualizar até esta versão.

## [4.20.10 (2026-08-04)](#_42010-2026-08-04)

-   **chore**: bump do HAL Sunmi para `2.1.7.1`.

## [4.20.9 (2026-08-04)](#_4209-2026-08-04)

-   **refactor**: otimiza o fluxo de inicialização em `StoneStart.kt` (sem mudança de contrato público esperada).

## [4.20.8 (2026-08-03)](#_4208-2026-08-03)

-   **chore**: atualiza HAL Sunmi para `2.1.7.0` e muda a organização padrão para `'stone'`.

## [4.20.7 (2026-07-31)](#_4207-2026-07-31)

-   **fix**: remove validação indevida do tamanho do "stone code" durante a ativação (`#1594`).

## [4.20.6 (2026-07-29)](#_4206-2026-07-29)

-   **feat** (`PRJHW-5050`): adiciona suporte à variante Transire **T2**.

## [4.20.5 (2026-07-27)](#_4205-2026-07-27)

-   **fix** (`PRJHW-5543`): corrige erros de layout nas informações do recibo.

## [4.20.4 (2026-07-14)](#_4204-2026-07-14)

-   **fix** (`PRJHW-5286`): corrige crash em transação de voucher.

## [4.20.3 (2026-07-02)](#_4203-2026-07-02)

-   **chore** (`PRJHW-5134`): bump do PAL para `3.17.0.6`, mantendo o DCC desabilitado.

## [4.20.2 (2026-07-01)](#_4202-2026-07-01)

-   **chore** (`PRJHW-5185`): atualização da versão do HAL Gertec.

## [4.20.1 (2026-06-30) — baseline desta consolidação](#_4201-2026-06-30-baseline-desta-consolidação)

Primeira release "4.20.x" publicada no GitHub (não existe tag `4.20.0`). Traz um grande volume de fixes acumulados de ciclos anteriores. Principais itens:

-   **feat**: envio automático de relatórios de transação (`PRJHW-4398`).
-   **refactor**: `StoneStart` passa a tratar timestamp em `epochMilliseconds` em vez de `epochSeconds` na criação do token de transação (`#1567`).
-   **feat**: suporte ao Transire Series S.
-   **fix**: `PosMifareProvider` — corrige crash e adiciona testes.
-   **fix** (`PRJHW-627`): transação PIX/Instant Payment deixa de persistir `authorize` desnecessariamente.
-   **fix** (`PRJHW-3951`): recibo — tratamento correto de `Bal`/`Amt` decimais em transações de voucher.
-   **fix** (`PRJHW-3463`): não reverte mais uma transação aprovada durante um abort; não desfaz o processo de mudança de status local após resposta online.
-   **fix** (`PRJHW-2891`): número de série aparecia como `UNKNOWN` na filipeta/recibo.
-   **fix**: erro "no EMV card".
-   **chore**: bump de HALs (Gertec Series 7, Positivo, Ingenico 2.1.2, Tectoy 2.2.11).
-   **feat** (`PAIPA-14522`): suporte a páginas de memória de 16KB.
-   **feat** (`PRJHW-4568`): suporte ao D400.
-   **chore** (`PAIPA-14233`): bump da versão do Koin.

## [V4.15.0 (07/01/2026)](#v4150-07012026)

### [Atualizações de Versões](#atualizações-de-versões)

#### [Mudanças Principais](#mudanças-principais)

-   **Koin**: `4.1.1`
-   **Kotlin**: `2.1.21`
-   **Gradle**: `8.13` → `8.14.3`
-   **Android Gradle Plugin (AGP)**: `8.12.1`

#### [Correções](#correções)

-   Atualização do import statement para R class no PosReprintReceiptProvider.
-   Atualização do import statement para R class no TransactionProvider.
-   Atualização caminho do import do BuildConfig.

## [V4.13.0 (11/09/2025)](#v4130-11092025)

### [Atualizações de Versões](#atualizações-de-versões-1)

#### [Mudanças Principais](#mudanças-principais-1)

-   **Koin**: `3.1.6` → `4.1.1`
-   **Kotlin**: `1.9.0` → `2.1.21`
-   **Gradle**: `7.3.3` → `8.13`
-   **Android Gradle Plugin (AGP)**: `7.2.0` → `8.12.1`

### [Mudanças Incompatíveis - Koin 4.x](#mudanças-incompatíveis-koin-4x)

A migração do Koin 3.x para 4.x introduz mudanças significativas na API:

#### [Para Parceiros que usam Koin em suas aplicações](#para-parceiros-que-usam-koin-em-suas-aplicações)

1.  **Conflitos de Versão**: Se sua aplicação usa Koin 3.x, você pode enfrentar conflitos de dependência
2.  **Mudanças na API do Koin 4.x**:
    -   `by inject()` agora requer import diferente
    -   Mudanças na configuração de módulos
    -   Alterações na sintaxe de DSL

### [Impacto para Integração](#impacto-para-integração)

#### [Sem Impacto se](#sem-impacto-se)

-   Você NÃO usa Koin diretamente na sua aplicação
-   Você já está usando Koin 4.x

#### [Ação Necessária se](#ação-necessária-se)

-   Sua aplicação usa Koin 3.x → Você precisa:
    1.  Atualizar para Koin 4.x (recomendado), OU
    2.  Gerenciar conflitos de dependência manualmente
-   Sua aplicação tem configurações específicas de Kotlin/Gradle → Verifique compatibilidade

## [V4.12.0 (25/08/2025)](#v4120-25082025)

**Mudanças importantes**

-   Suporte ao terminal Sunmi A-11;
-   Suporte ao terminal Gpos730;

## [V4.11.5 (17/07/2025)](#v4115-17072025)

**Mudanças importantes**

-   Melhorias de segurança;
-   Melhorias no processo de ativação em debug;

## [V4.11.2 (27/06/2025)](#v4112-27062025)

**Mudanças importantes**

-   Documentação do `abortPayment()`
-   Melhorias internas;

**Correções**

-   Correções no build
-   Correções de dependências

## [V4.11.1 (17/03/2025)](#v4111-17032025)

**Mudanças importantes**

-   Versões minimas alteradas. Mais informação [aqui](https://devcenter.stone.com.br/sdk-android-preparando-aplicacao).
    -   Kotlin: 1.9.0
    -   Java: 17
    -   Gradle: 7.3.3
    -   Android Gradle Plugin: 7.2.0
-   Alteração na assinatura necessária. Mais informação [aqui](https://devcenter.stone.com.br/sdk-android-processo-de-build-de-aplicacao).

**Correções**

-   🐛 Corrige erros de build da versão 4.11.0

## [V4.11.0 (20/02/2025)](#v4110-20022025)

**Mudanças importantes**

-   Versões minimas alteradas. Mais informação [aqui](https://devcenter.stone.com.br/sdk-android-preparando-aplicacao).
    -   Kotlin: 1.9.0
    -   Java: 17
    -   Gradle: 7.3.3
-   Alteração na assinatura necessária. Mais informação [aqui](https://devcenter.stone.com.br/sdk-android-processo-de-build-de-aplicacao).

**Novas Features**

-   ✨ Suporte a novo modelo: **Tectoy T8**

**Correções**

-   ⬆️ Atualização das bibliotecas das fabricantes

## [V4.10.2 (9/12/2024)](#v4102-9122024)

**Correções**

-   ⬆️ Atualização da HAL
-   🐛 Correção do abortPayment

## [V4.9.5 (21/08/2024)](#v495-21082024)

**Correções**

-   🐛 Corrige abort para fluxo de pix
-   🐛 Corrige onError sendo chamado multiplas vezes ao usar abortPayment
-   🐛 Melhora performance na inicialização do Mifare

## [V4.9.2 (24/07/2024)](#v492-24072024)

**Novas Features**

-   ✨ Sonda Pix

**Correções**

-   🐛 Correção do mifare para Positivo (L3, L400)

## [V4.8.9 (10/07/2024)](#v489-10072024)

**Correções**

-   ⬆️ Atualiza biblioteca da fabricante Sunmi
-   🐛 Corrige bug que ao chamar o abortPayment o callback do provider de pagamento não era chamado.

## [V4.8.7 (24/01/2024)](#v487-24012024)

**Novas Features**

-   ✨ Ações enviadas no fluxo de transação onResult depois da remoção do cartão

**Correções**

-   🐛 Correção da chamada de erro duplicada

---

## [V4.8.6 (12/01/2024)](#v486-12012024)

-   ⬆️ Upgrade Hal Stone API
-   ⬆️ Upgrade Hal Ingenico API

---

## [V4.8.5 (21/12/2023)](#v485-21122023)

-   ⬆️ Upgrade Hal Stone API

---

## [V4.8.4 (18/12/2023)](#v484-18122023)

-   🐛 Correção do retorno da impressão no modelo L4

---

## [V4.8.3 (11/12/2023)](#v483-11122023)

-   🐛 Chamada do Callback onError quando o Status do QR\_CODE
-   ♻️ Ajuste no status de error do Pix para serem capturados pela Sonda do POS.

---

## [V4.8.1 (27/10/2023)](#v481-27102023)

-   🛂 Add fine location permission to allow Android 10+ manage wifi without issues

---

## [V4.8.0 (26/09/2023)](#v480-26092023)

-   ✨ Suporte aos novos modelos Positivo L3/ Positivo L400

---

## [V4.7.7 (17/07/2023)](#v477-17072023)

**Correções**

-   🐛 Correção do fluxo de `abortPayment()` no fluxo de QrCode.

---

## [V4.7.6 (27/06/2023)](#v476-27062023)

**Correções**

-   🐛 Correção de timeout do QrCode por pagamento via QrCode ou via Pix.

---

## [V4.7.5 (27/06/2023)](#v475-27062023)

**Correções**

-   🐛 Atualização biblioteca de impressão. Corrigindo Impressão de comprovante de pagamento via Pix.

---

## [V4.7.3 (12/06/2023)](#v473-12062023)

**Novas Features**

-   ✨ Adiciona suporte a crédito pré-pago. Adiciona método `getQualifiers` ao provider de transação, que retorna uma lista de qualificadores. Quando a transação for crédito pré-pago será incluído o valor `"Prepaid"` nessa lista.
-   ✨ Atualiza biblioteca da Gertec para o GPOS700X. Incluindo melhorias e correções por parte das fabricantes.

**Correções**

-   🐛 Corrige problema de async task na detecção do Mifare. Quando o provider era iniciado múltiplas vezes era possível que a detecção parasse de funcionar.

---

## [V4.5.6 (26/04/2023)](#v456-26042023)

**Correções**

-   🐛 Corrige campo AUT não é impresso no comprovante.

---

## [V4.5.4 (17/03/2023)](#v454-17032023)

**Correções**

-   ✨ Atualiza biblioteca da Gertec para o GPOS700X. Incluindo melhorias e correções por parte das fabricantes.

---

## [V4.5.3 (03/03/2023)](#v453-03032023)

**Correções**

-   🐛 Corrige NullPointerException em getTransType no modelo APOS A8.
-   ✨ Atualiza bibliotecas das fabricantes. Incluindo melhorias e correções por parte das fabricantes.

---

## [V4.5.2 (01/02/2023)](#v452-01022023)

**Correções**

-   🐛 Funcionamento do envio de comprovante por email restaurado.

---

## [V4.5.0](#v450)

**Novas Features**

-   ✨ Pix

---

## [V4.4.0 (11/10/2022)](#v440-11102022)

**Novas Features**

-   ✨ Parcelamento 18x

---

## [V4.3.11 (22/08/2022)](#v4311-22082022)

**Novas Features**

-   ✨ Novo status de erro PED\_NO\_KEY\_FOUND\_ERROR - POS Sem chaves

**Correções**

-   🐛 Correção mifareProvider has not been initialized

## [V4.3.9 (11/08/2022)](#v439-11082022)

**Correções**

-   🐛 Erro ao mapear na tabela de Transaction o campo cardBrandName

## [V4.3.8 (09/08/2022)](#v438-09082022)

**Correções**

-   🐛 SDK salva cache da ativação mesmo após restaurar dados

## [V4.3.1 (24/07/2022)](#v431-24072022)

**Correção**

-   🐛 Remoção do status PARTIAL\_APPROVED

## [V4.3.0 (21/07/2022)](#v430-21072022)

**Novas Features**

-   ✨ Atualizar affiliationKey no job de ativação

**Correções**

-   🐛 Correção do fluxo de Retap (NFC)

## [V4.0.8 (24/03/2022)](#v408-24032022)

-   Melhoria no fluxo de validação das URLs externas
-   Correção no fluxo que busca informações sobre o dispositivo

## [V4.0.7 (14/03/2022)](#v407-14032022)

-   Correção do fluxo de transações não sendo revertidas automaticamente
-   Correção do cancelamento por ITK
-   Desabilitado o uso do useAdvanced no fluxo de reversão
-   Melhoria no fluxo de teste automatizado

## [V4.0.6 (22/02/2022)](#v406-22022022)

-   Correção no retorno de erro. Retornava CARD\_READ\_ERROR quando deveria retornar EMV\_NO\_APP\_ERROR.
-   Correção Indicador de Fallback habilitado em contactless.
-   Atualização HAL Gertec 1.20.0

## [V4.0.5 (15/02/2022)](#v405-15022022)

-   Novo campo "cardBrandName" no TransactionObject.
-   Adiciona log com stacktrace no método abortPayment.
-   Remove código legado que não estava mais sendo usado.

## [V4.0.4 (08/02/2022)](#v404-08022022)

-   Correção onResult sendo chamado duas vezes.

## [V4.0.3 (25/01/2022)](#v403-25012022)

-   Controle de Fallback de Redes usando o parâmetro useAdvancedHttp no construtor dos providers transacionais

## [V4.0.2 (13/01/2022)](#v402-13012022)

-   Refatoração dos fluxos de ativação, pagamento, captura, cancelamento e reversão (Melhoria no desempenho)
-   Removido metodo setEnvironment. ([Nova forma de configurar ambiente](https://devcenter.stone.com.br/reference/configurando-ambientes))
-   Remoção do Jcenter.
-   Refatora PosAndroidDevice para classe, pode ser usado para recuperar o serial, modelo do dispositivo. `Stone.getPosAndroidDevice()`
-   Correção no fluxo de abortPayment, transação não era revertida quando abortada no meio da request.
-   Melhoria no fluxo de reversão.
-   Dois novos status adicionados no TransactionStatusEnum (PENDING e REVERSED).
-   Adicionado host pagarme.

## [V3.14.13 (13/12/2021)](#v31413-13122021)

-   Correção de Null Pointer Exception no FncCommand.
-   Correção de bug onde a transação não era revertida em alguns casos de erros.

## [V3.14.12 (08/12/2021)](#v31412-08122021)

-   Correção de bug ao carregar tabelas.
-   Deprecia PrintProvider e PrintReceiptProvider.

## [V3.14.10 (18/11/2021)](#v31410-18112021)

-   Correção de problemas de instabilidade no pinpad.
-   Otimizações no fluxo de pagamento com pinpad.

## [V3.14.8 (09/11/2021)](#v3148-09112021)

-   Correção na ativação de dispositivos mobile.

## [V3.10.0 (11/12/2020)](#v3100-11122020)

-   Atualização de SDK e HAL da Gertec.
-   Utilização de Modulo OWL para envio de e-mail.
-   Correção de bug de nro de Parcelas na Filipeta.
-   Correção de bug que impedia a transação de app com PackageId maior que 35 chars.

## [V3.7.0 (17/06/2020)](#v370-17062020)

-   Padronização de mensageria para o autorizador da Stone.

## [V3.6.0 (10/04/2020)](#v360-10042020)

-   Integração com Data Container 1.0.0: Funções de Pagamento compartilhadas com POS Android
    -   Reversão
    -   Cancelamento
    -   Ativação
    -   Relatórios

## [V3.5.0 (19/02/2020)](#v350-19022020)

-   Suporte inicial à HW Gertec (GPOS700).
-   Implementação de API Mifare para GPOS700
-   Atualiza a versão da lib PAL para 2.10.0

## [V3.4.3.2 (25/03/2020)](#v3432-25032020)

-   Correção nas configurações de segurança locais do POS (KAP).

## [V3.4.3 (09/01/2020)](#v343-09012020)

-   Correção de duplicidade na resposta da ativação.

## [V3.4.2 (06/11/2019)](#v342-06112019)

-   Correção de ativação do POS Android
-   Correção de inicialização ao usar o SDK exclusivamente com Pinpads

## [V3.4.1 (28/10/2019)](#v341-28102019)

-   Suporte a novos cartões da bandeira Master Card
-   Correção de captura de transações voucher

## [V3.4.0 (10/10/2019)](#v340-10102019)

**Suporte oficial ao POS Android Ingenico A8**

-   Nas verões anteriores existia uma distinção para o uso em dispositívos POS Android através de branchs RC (Release Candidate). Para mais informações [clique aqui](https://devcenter.stone.com.br/sdk-android-preparando-aplicacao) .

**Modificações recomendadas**

-   Suporte multidex para aplicações com versão da `minSdkVersion` inferiores à 21. Para mais informações clique aqui .

## [v3.3.2 (25/09/2019)](#v332-25092019)

**Novas Implementações**

-   Novas dependências. Para atualizá-las, é preciso atualizar o arquivo build.gradle a nível de projeto:

```java
/**
* Foi adicionado uma nova URL do package cloud.

* -> maven { url "https://packagecloud.io/Stone/pos-android-service-
container/maven2" }

**/
allprojects {
repositories {
jcenter()
maven { url "https://packagecloud.io/stone/sdk-android/maven2" }

maven { url "https://packagecloud.io/stone/sdk-android-
snapshot/maven2" }

maven { url "https://packagecloud.io/Stone/pos-android-service-
container/maven2" }

google()
}
}
```

E depois atualizar o arquivo build.gradle a nível de app:

```java
/**
* Foi atualizado a versão do sdk para a versão 3.3.2.
**/
dependencies {
implementation 'br.com.stone:stone-sdk:3.3.2'
implementation 'br.com.stone:stone-sdk-posandroid:3.3.2'

implementation 'br.com.stone:stone-sdk-posandroid-
ingenico:3.3.2'

}
```

-   Adicionado nova ação: `TRANSACTION_REQUIRES_CARDHOLDER_TO_CHECK_DEVICE`
-   Adicionado novos erros: `EMV_GENERIC_ERROR``EMV_FAILED_CARD_CONN_ERROR``EMV_NO_APP_ERROR``EMV_INITIALIZATION_ERROR``EMV_CAPK_ERROR``EMV_TLV_ERROR``EMV_NO_CAPK_ERROR``EMV_AID_ERROR``PRINTER_GENERIC_ERROR``PRINTER_INVALID_DATA_ERROR``PRINTER_OVERHEATING_ERROR``PED_PASS_GENERIC_ERROR``PED_PASS_INIT_ERROR``PED_PASS_CRYPT_ERROR``TRANS_GENERIC_ERROR``TRANS_APP_INVALID_ERROR``TRANS_CVV_NOT_PROVIDED_ERROR``TRANS_CVV_INVALID_ERROR``TRANS_APP_INVALID_INDEX_ERROR``TRANS_ONLINE_PROCESS_ERROR_ERROR``CARD_GENERIC_ERROR``SWITCH_INTERFACE``CARD_READ_MULTI_ERROR``PINPAD_CLOSED_CONNECTION``NOT_STONE_POS_OR_POS_MISCONFIGURED``COULD_NOT_ACTIVATE_ALL_STONE_CODES`

**Melhorias**

-   Adicionando na classe `Stone.java` a possibilidade de checagem referente a inicialização do SDK.

**Stone.Java**

```java
if(Stone.isInitialized()) {
//SDK Initialized
}
Stone.setOnInitializeListener(object : StoneStart.OnInitializeListener {
override fun onSuccess() {
// SDK Initislized with success
}
override fun onError() {
// SDK Initislized with error
}
})
```

**Alterações**

-   Adição de novo atributo `external_id` ao `TransactionObject`

**Correções**

-   **\[FIXED\]** Mudança de utilização da lib Koin através de instância local

## [v3.1.0 RC9 (07/06/2019)](#v310-rc9-07062019)

**Novas Implementações**

-   Adicionado novo erro especifico para switch interface: `ErrorsEnum.SWITCH_INTERFACE`

Esse erro acontece quando ocorre um erro na leitura de um cartão NFC de pagamento e é necessário inserir o chip. Aconselhamos que seja exibida uma a mensagem: "Ocorreu um erro na leitura. Insira o chip."

**Correções**

-   **\[FIXED\]** Corrigidas atualização e persistência do `TransactionObject` no fluxo do POS Android
-   **\[FIXED\]** Fluxo de fallback contactless
-   **\[FIXED\]** AID sendo impresso na via do lojista

## [v3.1.0 RC8 (25/03/2019)](#v310-rc8-25032019)

**Novas Implementações**

-   Agora retornando `ErrorsEnum.CARD_READ_TIMEOUT_ERROR` quando o usuário não insere/retira o cartão 30 segundos após pedirmos

Quando pedimos para o cliente inserir ou remover o cartão, esperamos apenas 30 segundos para essa ação acontecer, com o objetivo de não travar o pinpad nem consumir recursos desnecessários. Agora, em cenários como esse, retornamos o `ErrorsEnum.CARD_READ_TIMEOUT_ERROR` na lista de erros (seja no callback de OnSuccess ou de OnError). Para tratar especificamente esse erro, basta fazer como indicado na nossa demo (`transactionProvider?.listOfErrors`) e procurar por esse enum.

**Correções**

-   **\[FIXED\]** Corrigido bug na função de validação de cartão que causava crash.

## [v3.1.0 RC7 (18/03/2019)](#v310-rc7-18032019)

-   **\[FIXED\]** Corrigido bug no envio de comandos para o pinpad.
-   **\[FIXED\]** Corrigido crash no recibo quando cvm é nulo.

## [v3.1.0 RC6 (22/01/2019)](#v310-rc6-22012019)

**Novas Implementações**

-   Adicionado ao `ErrorsEnum` o enum SDK\_VERSION\_IS\_OUTDATED.
-   Adicionada a classe `PosTransactionProvider` o método `onCardReTap`.
-   Adicionada a classe `PaymentFlowWrapper` os métodos `installApk` e o `uninstallApk`.

## [v3.1.0 RC5 (17/12/2018)](#v310-rc5-17122018)

-   **\[FIXED\]** Atualização da biblioteca de integração com POS Android, incluindo correção de módulo NexGo e outras correções menores.

## [v3.1.0 RC4 (11/12/2018)](#v310-rc4-11122018)

-   **\[ADDED\]** Adicionado suporte à nova versão do POS Ingenico APOS A8 com teclado estático.

## [v3.0.0 RC6 (06/08/2018)](#v300-rc6-06082018)

-   **\[FIXED\]** Correção de erro nas transações com cartões Santander Visa para equipamento NexGo (Outros equipamentos não foram afetados);
-   **\[FIXED\]** Correção de erro nas transações com cartões Alelo para equipamento NexGo (Outros equipamentos não foram afetados).

## [v3.0.0 RC5 (26/07/2018)](#v300-rc5-26072018)

-   Correção do bug nas transações com cartões Bradesco Visa em terminais da NexGo.

## [v3.0.0 RC4 (20/07/2018)](#v300-rc4-20072018)

-   Correção do bug onde transações mastercard débito estavam sendo negadas
-   Correção do bug onde a SDK parava de responder após o evento `TRANSACTION_SENDING` com cartões nubank
-   SDK da Nexgo atualizada para `v2.0.7`

## [v3.0.0](#v300)

-   Classe StoneTransaction removida da SDK. Agora para fazer transações, preencha diretamente o TransactionObject com as informações necessárias.
-   Novo provider PosTransactionProvider para efetuar transações com o POS Android.
-   Novo provider PosPrintProvierpara impressão no POS Android
-   Método String getAuthorizationCode() removido do TransactionProvider por já ter esse campo no TransactionObject;
-   Adicionado CONTACTLESS no EntryMode enum.
-   Todos os erros que geravam o Enum GENERIC\_ERROR foram movidos para UNKNOWN\_ERROR
-   Nova permissão SYSTEM\_ALERT\_WINDOW para desenhar os dígitos da senha em tela no POS android.
-   Novos Enums de erro: /\*\* SWIPE\_INCORRECT, TOO\_MANY\_CARDS, UNKNOWN\_ERROR, INTERNAL\_ERROR, // Erros de impressão do POS PRINTER\_PRINT\_ERROR, PRINTER\_BUSY\_ERROR, PRINTER\_INIT\_ERROR, PRINTER\_LOW\_ENERGY\_ERROR, PRINTER\_OUT\_OF\_PAPER\_ERROR, PRINTER\_UNSUPPORTED\_FORMAT\_ERROR, // PED ERROR PED\_PASS\_KEY\_ERROR, PED\_PASS\_USER\_CANCELED\_ERROR, PED\_PASS\_NO\_PIN\_INPUT\_ERROR, PED\_PASS\_TIMEOUT\_ERROR, // TRANS ERROR TRANS\_APP\_BLOCKED\_ERROR, TRANS\_SELECT\_TYPE\_USER\_CANCELED\_ERROR, TRANS\_INVALID\_AMOUNT\_ERROR, TRANS\_PASS\_MAG\_BUT\_IS\_ICC\_ERROR, TRANS\_NO\_TRANS\_TYPE\_ERROR, TRANS\_WRONG\_TRANS\_TYPE\_ERROR, // CARD ERROR CARD\_ERROR, CARD\_READ\_ERROR, CARD\_READ\_TIMEOUT\_ERROR, CARD\_READ\_CANCELED\_ERROR, CARD\_REMOVED\_ERROR, CARD\_UNSUPPORTED\_ERROR, TRANSACTION\_OBJECT\_NULL\_ERROR,
-   android gradle build tools atualizado para 3.0.1

## [v2.5.9 (03/04/2018)](#v259-03042018)

-   Agora não é mais necessário usar o LoadTablesProvider para efetuar a carga de tabelas no Pinpad, todo o gerenciamento será feito internamente pela SDK.
-   Enum TABLES\_NOT\_FOUND foi depreciado por não ser mais disparado.
-   Enum NEED\_LOAD\_TABLES foi depreciado por não ser mais disparado.
-   Provider DownloadTablesProvider removido por não ter mais utilidade.
-   Corrigido bug onde o enum PINPAD\_ALREADY\_CONNECTED não era chamado ao conectar com um pinpad já conectado.
-   Corrigido bug no BluetoothConnectionProvider que causava crash no app se ocorresse um erro desconhecido.
-   Melhoria na detecção das bandeiras.
-   Corrigido problema na migration do banco de pinpads quando atualizado de versões muito antigas da SDK.
-   Essa versão corrige o problema de atualização da mobox/sweda.

## [v2.5.8](#v258)

-   Timeout das requests http aumentado para 1 minuto
-   Corrigido bug da SDK deixar 2 ou mais stone codes iguais ficarem ativos no ActiveApplicationProvider
-   Adicionado stacktrace das exceptions no BluetoothConnectionProvider

## [v2.5.7](#v257)

-   Provider CancellationProvider agora retorna o actionCode do cancelamento pelo método cancellationProvider.getActionCode() e o status do cancelamento pelo cancellationProvider.getResponseCodeEnum().
-   Métodos getTransactionStatus() e getStatusAsString() do CancellationProvider foram removidos em prol dos novos métodos citados acima.
-   Corrigido bug onde a mensagem de "Transação Aprovada" não aparecia no pinpad em algumas transações
-   Novo método activate(String stoneCode) para ativar e adicionar um novo stone code na lista de stone codes ativos.
-   Novo método deactivate(String stoneCode) para desativar somente um stone code da lista de ativos
-   Corrigido bug onde versões anteriores da SDK recebiam NPE em pinpads já salvos sem o campo novo acqidx do PinpadObject.

## [v2.5.6](#v256)

Nova dependência OkHttp para substituir o HttpUrlConnection nas requests da SDK para nossos servidores; Forçando TLS >= 1.2 em todas as requests da SDK; Novo Provider CaptureTransactionProvider para capturar transações cuja requisição foi feita com captura posterior (setando stoneTransaction.capture = false); Correção na efetuação de transações da bandeira SODEXO; Melhoria na captura do CVM do pinpad, forçando o retorno; Gerenciando o uso da chave Elavon/Stone internamente. Não é mais necessário setar Stone.setAcquirer(Acquirer acquirer). Se o Pinpad não tiver nenhuma das duas chaves, a SDK retornará o erro ErrorsEnum.PINPAD\_WITHOUT\_KEY durante a conexão do pinpad no BluetoothConnectionProvider; Novo ambiente INTERNAL\_CERTIFICATION para validação do app pelo time de integrações da Stone;

## [v2.5.5](#v255)

-   Adicionado campo subMerchantAddress no TransactionObject para editar o endereço do lojista que está efetuando a transação;
-   Adicionado campo subMerchantCategoryCode no TransactionObject para editar o mcc do lojista que está efetuando a transação;
-   Adicionado campo shortName no TransactionObject para armazenar em banco opção setada no campo shortName do StoneTransaction;
-   Adicionado campo capture no TransactionObject para armazenar em banco opção setada no campo capture do StoneTransaction;
-   Construtor CancellationProvider(Context context, int idFromTransactionInBase, UserModel userModel) depreciado. Em vez dele, use CancellationProvider(Context context, TransactionObject transaction)
-   Correção no migration da tabela de Transaction onde algumas colunas não estavam sendo inseridas quando atualizadas de versões muito antigas da SDK;
-   Novos Enums de erro: /\*\* SWIPE\_INCORRECT, TOO\_MANY\_CARDS, UNKNOWN\_ERROR, INTERNAL\_ERROR, // Erros de impressão do POS PRINTER\_PRINT\_ERROR, PRINTER\_BUSY\_ERROR, PRINTER\_INIT\_ERROR, PRINTER\_LOW\_ENERGY\_ERROR, PRINTER\_OUT\_OF\_PAPER\_ERROR, PRINTER\_UNSUPPORTED\_FORMAT\_ERROR, // PED ERROR PED\_PASS\_KEY\_ERROR, PED\_PASS\_USER\_CANCELED\_ERROR, PED\_PASS\_NO\_PIN\_INPUT\_ERROR, PED\_PASS\_TIMEOUT\_ERROR, // TRANS ERROR TRANS\_APP\_BLOCKED\_ERROR, TRANS\_SELECT\_TYPE\_USER\_CANCELED\_ERROR, TRANS\_INVALID\_AMOUNT\_ERROR, TRANS\_PASS\_MAG\_BUT\_IS\_ICC\_ERROR, TRANS\_NO\_TRANS\_TYPE\_ERROR, TRANS\_WRONG\_TRANS\_TYPE\_ERROR, // CARD ERROR CARD\_ERROR, CARD\_READ\_ERROR, CARD\_READ\_TIMEOUT\_ERROR, CARD\_READ\_CANCELED\_ERROR, CARD\_REMOVED\_ERROR, CARD\_UNSUPPORTED\_ERROR, TRANSACTION\_OBJECT\_NULL\_ERROR,
-   android gradle build tools atualizado para 3.0.1

## [v2.5.4-1](#v254-1)

-   Corrigido bug onde a transação era efetuada mas não era salva no banco.

## [v2.5.4](#v254)

-   Correção na leitura de informações de cartões ELO.
-   Enum GENERIC\_ERROR utilizado pelo ActiveApplicationProvider para quando o stone code não é reconhecido foi alterado para INVALID\_STONE\_CODE\_OR\_UNKNOWN.
-   Melhoria na estrutura interna e na performance do TransactionProvider.
-   Correção no envio do comprovante por email, colocando campo "assinatura" quando não era necessário.
-   Corrigido bug onde eventualmente o método getListOfErrors() retornava null

## [v2.5.3](#v253)

-   Corrigido bug quando o BluetoothConnectionProvider disparava o evento onSuccess duplicado.
-   Corrigido bug da SDK baixando tabelas toda vez que abria o app.
-   Support Library atualizado para 27.0.2.

## [v2.5.2](#v252)

-   Adicionado campo cancellationDate no TransactionObject para armazenar a data do cancelamento;
-   Adicionado campo lastConnectionAt no PinpadObject para armazenar a data da última vez que houve conexão com o pinpad;
-   Todos os erros durante a conexão com o device bluetooth que retornavam em dialog. Agora os erros são adicionados no array de erros do provider. Segue exemplo de uso:

```java
BluetoothConnectionProvider.setConnectionCallback(new StoneCallbackInterface() {

    public void onSuccess() {
        //handle success
    }

    public void onError() {
        List<ErrorsEnum> listOfErrors = bluetoothConnectionProvider.getListOfErrors();
        if (listOfErrors.contains(ErrorsEnum.PINPAD_ALREADY_CONNECTED)) {
            //Do something
        } else if (listOfErrors.contains(ErrorsEnum.TIME_OUT)) {
            //Do something
        } else if (listOfErrors.contains(ErrorsEnum.DEVICE_NOT_COMPATIBLE)) {
            //Do something
        } else if (listOfErrors.contains(ErrorsEnum.IO_ERROR_WITH_PINPAD)) {
            //Do something
        }
    }
});
```

-   O método Stone.getPinpadListSize() não mais retorna null quando a lista de pinpads estiver vazia
-   Refatorado o gerenciamento das versões das tabelas, corrigindo o problema de carregar tabelas a cada transação;
-   Construtores LoadTablesProvider(Context, GcrRequestCommand, PinpadObject) e LoadTablesProvider(Context, String, PinpadObject) depreciados. Use LoadTablesProvider(Context context, PinpadObject) em vez disso;

## [v2.5.1](#v251)

-   SendEmailProvider depreciado em prol do uso do SendEmailTransactionProvider
-   Adicionado flag merchantReceipt (default false) pra informar se é pra enviar a via do cliente ou do estabelecimento no SendEmailTransactionProvider
-   Método setEmailToSent e setEmailsToSent da classe SendEmailTransactionProvider depreciado, usar addTo()/setTo() para setar o destinatário do email
-   Possibilidade de definir o remetente do email no SendEmailTransactionProvider no método setFrom
-   Adicionado campo balance no TransactionObject pra transações voucher (SODEXO, Ticket, etc...)
-   Bug de cartões (principalmente HIPER) retornando UNKNOWN fixed
-   Novos métodos (findTransactionWithAuthorizationCode(), findTransactionWithInitiatorTransactionKey() e findTransactionByFilter() ) no TransactionDAO para busca das transações no banco local da SDK.

## [v2.5.0](#v250)

-   Permissões android.permission.VIBRATE e android.permission.ACCESS\_WIFI\_STATE removidas da SDK
-   Novos campos cvm e serviceCode no TransactionObject
-   appcompat-v7 atualizado para 26.1.0
-   Enum de feedback CARD\_REMOVE deprecated por não ser uma mensagem alterável.
-   Enum de feedback REVERSAL deprecated pois não mandamos nenhuma mensagem para o pinpad
-   Revertendo transações quando negado pelo cartão
-   Bug de mostrar mensagem RETIRE O CARTÃO em cartões mágnéticos fixed
-   gson atualizado de 2.8.1 para 2.8.2
-   Várias melhorias de performance

## [v2.4.8](#v248)

-   Adicionando REVERSING\_TRANSACTION\_WITH\_ERROR ao enum Action
-   Revertendo transações automaticamente, quando ocorrer um erro

As transações que não foram processadas por um erro de conexão devem ter canceladas utilizando o ReversalProvider

## [v2.4.7](#v247)

-   Adicionando o status WITH\_ERROR para transações com erro e que precisam ser canceladas (ex: timeout)
-   Adicionando o ReversalProvider para varrer o banco de transações e cancelar as transações com o status WITH\_ERROR
-   Correção no cancelamento de transações

**exemplo do ReversalProvider**

```java
ReversalProvider reversalProvider = new ReversalProvider(this);
reversalProvider.setDialogMessage("Cancelando transação com erro");
reversalProvider.isDefaultUI();
reversalProvider.setConnectionCallback(new StoneCallbackInterface() {
      @Override
      public void onSuccess() {
        // code code code
      }

      @Override
      public void onError() {
        // code code code
      }
});
```

## [v2.4.6](#v246)

-   Downgrade da targetSdkVersion de 26 para 25 devido a problemas de compatibilidade com APIs antigas
-   URL de ativação do ambiente CERTIFICATION alterada
-   Corrigido bug ao executar a migration de versões anteriores à 2.3.0
-   Downgrade da XStream para 1.4.7 devido a problemas com Java8 nas versões mais novas
-   Remoção da permissão READ\_PHONE\_STATE da SDK!

## [v2.4.5](#v245)

Localização do BluetoothConnectionProvider corrigida.

## [v2.4.4](#v244)

-   Melhoria e update das dependências
-   Personalização das mensagens exibidas no Pinpad. No TransactionProvider, dois novos métodos foram implementados
-   Novos Métodos:

```text
setPinpadFeedbackMessage(PinpadFeedback key, String message) para customizar uma mensagem específica
setPinpadFeedbackMessages(Map<PinpadFeedback, String> pinpadFeedbackMessages) para personalizar todas as mensagens de uma vez
Mensagens disponíveis para personalização e suas mensagens default (em comentário):

PinpadFeedback.DENIED //"TRANSAC NEGADA"
PinpadFeedback.PROCESSING //"PROCESSANDO.."
PinpadFeedback.APPROVED //"TRANSAC APROVADA"
PinpadFeedback.CARD_REMOVE //"RETIRE O CARTAO"
PinpadFeedback.CARD_WITH_PROBLEMS //"ICC COM PROBLEMAS"
PinpadFeedback.DENIED_BY_NET //"TRANSAC NEGADA PELA REDE"
PinpadFeedback.CARD_INVALIDATED //"CARTAO ESTA INVALIDADO"
PinpadFeedback.DENIED_BY_CARD //"TRANSAC NEGADA PELO CARTAO"
```

## [v2.4.2](#v242)

-   Melhorias de _perfomance_

## [v2.4.1](#v241)

-   Adicionando suporte para conexões via cabo (ethernet)
-   Campo signature em caso de necessidade de armazenar a assinatura da transação.
-   Melhorias de perfomance

## [v2.4.0](#v240)

-   Agora a SDK está em no artifactory! siga as instruções de instalação no readme.
-   Possibilidade de escolher o uso de Pinpads Elavon (que não possuem chaves Stone)
-   Todos os Providers recebem Context em vez de Activity no construtor
-   Nova interface StoneActionCallback com um método void onStatusChanged(Action action) para receber eventos adicionais do provider. Esta interface herda de StoneCallbackInterface, então seu uso é opcional. Por enquanto existem somente eventos para transação, mas em breve terá eventos para outros providers.

Eventos disponíveis:

-   TRANSACTION\_WAITING\_CARD Esperando cartão ser inserido/passado
-   TRANSACTION\_WAITING\_PASSWORD Esperando senha do cartão (se houver)
-   TRANSACTION\_SENDING Enviando transação para o servidor
-   TRANSACTION\_WAITING\_REMOVE Esperando a remoção do cartão do pinpad (se for chip)

## [v2.3.2](#v232)

-   Agora você pode desativar a SDK usando deactivate() em ActiveApplicationProvider
-   Método execute() do ActiveApplicationProvider descontinuado. Em vez disso, use o método activate(`List<String>` stoneCodes)
-   Corrigido bug em LoadTablesProvider no qual pedia um objeto desnecessário no construtor.
-   Novo campo entryMode no model da transação informando se a transação foi efetuada com chip ou tarja.
-   Campos e métodos descontinuados.

## [v2.3.1](#v231)

-   Corrigido problema na seleção do ambiente de SANDBOX

Para atualizar o projeto para transacionar no ambiente de integração deve-se fazer os seguintes passos:

-   Baixar o arquivo sdk\_stone\_2.3.1.aar no nosso repositório do [GitHub](https://github.com/stone-payments/sdk-android/tree/master/JARs/Stone)
-   Após baixado o arquivo deve ser colocado na pasta "SEU\_PROJETO"\\app\\libs
-   Com seu projeto aberto acrescente o código abaixo:

No build.grandle (Project):

```java
allprojects {
    repositories {
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}
```

No build.grandle (Module:App):

```java
dependencies {
    compile name: 'sdk_stone_2.3.1', ext: 'aar'
}
```

É recomendado utilizar o comando Clean Project e Rebuild Project antes dos testes caso esteja utilizando a IDE Android Studio.

## [v2.3.0](#v230)

-   Nova forma de instalação da lib, utilizando aar, em breve teremos um repositório para distribuir nossas bibliotecas!
-   Agora você pode definir qual ambiente você quer usar em _runtime_, usando:

**code**

```java
// para integração
Stone.setEnvironment(Environment.SANDBOX)

// produção
Stone.setEnvironment(Environment.PRODUCTION)
```

-   `Stone.developerMode()` deprecated em prol do novo modo de escolha de ambiente mencionado acima.
-   Suporte para novas bandeiras: Elo, Alelo. (Verifique disponibilidade da bandeira no seu stone code com o time de integrações)
-   Correções no envio de algumas transações para stone.
-   Bug ao desconectar o pinpad fixed.

## [v2.2.10](#v2210)

-   Hot fix do endpoint do TMS.
-   Correções de erro na ativação e download das tabelas AID e CAPK.

## [v2.2.9](#v229)

-   Correção do ambiente de homologação.

## [v2.2.8](#v228)

-   Suportando a bandeira Ticket.

## [v2.2.7](#v227)

-   Correções do erro `ClassNotFoundException`em algumas classes da SDK.

## [v2.2.6](#v226)

-   Opção de enviar uma transação não capturada:

**code**

```java
StoneTransaction stoneTransaction = new StoneTransaction();
// set dos valores da transação
stoneTransaction.disableCapture(); // desabilita a captura da transação
```

Default

Por padrão, a transação é capturada!

## [v2.2.5](#v225)

-   Transações com tarja sem senha e com senha.
-   Correções nas conexões com a internet.

---

**Jornada: [Dúvidas, sandbox e mudanças](https://devcenter.stone.com.br/sdk-android-pos-android)**  
Etapa 7 de 7

[**Etapa anterior**Central de ajuda SDK Android Stone](https://devcenter.stone.com.br/sdk-android-excecoes-proguard)

Siga a Stone nas redes sociais

[](https://www.facebook.com/stonepagamentos/)[](https://x.com/sejastone/)[](https://www.instagram.com/stone/)[](https://br.linkedin.com/company/stone-co)[](https://www.youtube.com/channel/UCk4L4JykgoDkN8YeuxkNqIQ)

© Stone Instituição de Pagamento S.A. CNPJ 16.501.555/0001-57

Av. Rebouças, 2880, 4º andar, Pinheiros, CEP 05.402-500 – São Paulo/SP

Instituição de pagamento autorizada pelo Banco Central do Brasil, nas modalidades de credenciadora e emissora de moeda eletrônica.