v1.3.0

Esta versão garante que o terminal só passe a usar um novo estabelecimento depois de ativado com ele. Se a reativação falhar, o terminal volta ao estabelecimento anterior e continua transacionando. A versão também liga cada transação ao estabelecimento que a fez e implementa relógio confiável nas datas.

O que pode exigir mudança no app

  • Compilação: novo valor MASTER_KEY_WORKING_3DES em PayOsSdkEncryptMode. when exaustivos sobre esse enum deixam de compilar.
  • Novos erros em init, updateTerminalConfigurations e nas operações sobre transações.
  • Sem downgrade: o banco local migra para a versão 5. Depois de instalar a 1.3.0 no terminal, não é possível voltar para a 1.2.0 sem limpar os dados do app.

Novas permissões adicionadas ao manifesto do app (via merge): READ_SMS, ACCESS_LOCATION_EXTRA_COMMANDS, ACTION_APN_SETTINGS, android.intent.action.TIME_SET e com.pax.permission.SET_WIFI. Para remover alguma, use tools:node="remove" no manifesto do app.


Mudanças na API pública

TipoMudançaImpacto
PayOsSdkEncryptModeNovo valor MASTER_KEY_WORKING_3DES (só aparece em Pax)Quebra when exaustivos
PayOsSdkTransactionStoreNovo campo establishmentKey: String?: identificador opaco do estabelecimento que fez a transaçãoAditivo

Nenhum método de PayOsSdkPayment ou PayOsSdkPrinter mudou de assinatura.


Mudanças de comportamento

init e troca de estabelecimento

  • Uma reativação com falha não altera mais o estabelecimento ativo. O erro devolvido termina com O terminal foi mantido com a ativação anterior.
  • Na primeira ativação, uma falha não grava nada. getActiveEstablishmentDetails reflete um terminal não ativado.
  • Ao trocar de estabelecimento, o SDK sincroniza antes as transações de cartão pendentes. Se alguma não puder ser sincronizada (por exemplo, sem rede), a troca é recusada com LOGON_NOT_PERFORMED.
  • Depois da troca, não é mais necessário chamar tableLoad.

updateTerminalConfigurations

  • Se os dados de ativação do estabelecimento mudaram no backend, o terminal é reativado pelo mesmo fluxo do init, com rollback.
  • Erros de autenticação agora são devolvidos em onError. Antes, eram ignorados.

Restauração automática da ativação

Se uma reativação for interrompida (app encerrado, abort(), tempo esgotado), o SDK refaz a ativação sozinho: em segundo plano, em configure(), e antes de makeTransaction (crédito/débito), revertTransaction, tableLoad e updateTerminalConfigurations. Uma operação chamada durante essa restauração espera ela terminar, em vez de responder que há uma operação em andamento.

Transações de outro estabelecimento

Depois de uma troca, as transações do estabelecimento anterior continuam em listTransactions e getTransaction, mas são recusadas por:

OperaçãoRetorno
syncTransactionToCloud, revertTransaction, getPixTransactionFromCloud, cancelPixTransactionINVALID_TRANSACTION
printReceipt (última transação)EMPTY_TRANSACTION

Elas voltam a ser aceitas se o terminal for ativado de novo com o estabelecimento anterior.

Datas pelo relógio confiável

As datas deixam de depender do relógio do terminal. Todas as datas aplicam o fuso fixo UTC-3.

abort() e resetTerminalConfigurations

  • abort() ou tempo esgotado durante init ou updateTerminalConfigurations agora interrompem a operação de fato e devolvem ABORTED_OPERATION. A ativação é corrigida automaticamente na próxima operação.
  • resetTerminalConfigurations() só libera o SDK quando a biblioteca do adquirente termina o reset. Um init chamado nesse intervalo recebe Há uma operação em andamento. Aguarde a conclusão ou chame abort().

Novos retornos

SituaçãoCódigoMensagem
Troca recusada por transações não sincronizadasLOGON_NOT_PERFORMEDExistem N transações de cartão não sincronizadas com o estabelecimento atual. / Sincronize-as antes de ativar outro estabelecimento.
Reativação falhou, terminal mantido no estabelecimento anteriorcódigo do erro originalerro original + O terminal foi mantido com a ativação anterior.
Reativação e rollback falharamcódigo do erro originalerro original + Não foi possível restaurar a ativação anterior do terminal.
Etapa da ativação sem respostaTIMEOUTTempo esgotado ao ativar o terminal.
init interrompidoABORTED_OPERATIONA ativação do terminal foi interrompida (tempo esgotado ou operação abortada).
updateTerminalConfigurations interrompidoABORTED_OPERATIONA atualização das configurações do terminal foi interrompida.
Restauração automática falhoucódigo do erroNão foi possível restaurar a ativação do terminal. + erro + A restauração será tentada novamente na próxima operação.
Restauração automática interrompidaABORTED_OPERATIONA restauração da ativação do terminal foi interrompida.
Transação de outro estabelecimentoINVALID_TRANSACTIONTransação realizada por outro estabelecimento.
Reimpressão da última transação de outro estabelecimentoEMPTY_TRANSACTIONNão existem dados da última transação.
Crédito/débito em PagBank sem sub-adquirente configuradoLOGON_NOT_PERFORMEDEstabelecimento não configurado no terminal.

Checklist de migração

  1. Atualize a dependência para 1.3.0.
  2. Trate PayOsSdkEncryptMode.MASTER_KEY_WORKING_3DES em when exaustivos.
  3. Trate os novos retornos de init e updateTerminalConfigurations. Se a troca for recusada por transações pendentes, sincronize e tente de novo.
  4. Trate INVALID_TRANSACTION em sincronização, estorno e operações Pix.
  5. Depois de resetTerminalConfigurations(), aguarde antes de chamar init, ou repita a chamada se receber Há uma operação em andamento.
  6. Remova chamadas a tableLoad logo após trocar de estabelecimento (não são mais necessárias).

Did this page help you?