Perguntas & Respostas

Respostas para dúvidas comuns sobre inicialização, credenciais, sandbox, suporte e compatibilidade do SDK Tap to Pay Android.

Inicialização e Configuração

Encontre respostas rápidas para dúvidas comuns sobre inicialização, credenciais, sandbox, suporte e compatibilidade do SDK Tap to Pay Android.

circle-questionO que é o kernelInitialize() e quando devo chamá-lo?
  • O kernelInitialize() é o primeiro método obrigatório que deve ser chamado antes de usar qualquer funcionalidade do SDK.
  • Onde chamar: chame na classe Application do app, dentro do método onCreate().
class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        if (!TapOnPhone.kernelInitialize(this)) return
    }
}
  • Essa condição evita a execução duplicada do código, garantindo que o kernel seja inicializado apenas uma vez.

Para mais informações, consulte a seção Inicialização do Kernel.

circle-questionO que é o setConfig() e quando devo chamá-lo?
  • O setConfig() é um método obrigatório usado para configurar as credenciais e as configurações do SDK em uma única chamada.
  • Quando chamar: deve ser chamado após kernelInitialize() e antes de usar qualquer outro método do SDK.
  • O método recebe um objeto ConfigParameters contendo contexto, credenciais e configurações opcionais.

Para mais informações, consulte a seção Definir configurações do SDK.

circle-questionA inicialização do SDK é obrigatória antes de realizar um pagamento?
  • Não. A inicialização é opcional e pode ser feita de duas formas:
    1. Manualmente: chamando TapOnPhone.initialize() antes do pagamento.
    2. Automaticamente: se não for feita manualmente, o SDK realizará a inicialização automaticamente quando você chamar TapOnPhone.pay().
  • A inicialização manual é recomendada para evitar tempo de espera no primeiro pagamento.

Para mais informações sobre o método de inicialização, consulte a seção Inicialização.

circle-questionPosso criar a sessão antes de realizar o pagamento?
  • Sim. É possível e recomendado criar a sessão antes do pagamento usando o método TapOnPhone.activateSession().
  • Isso reduz o tempo de espera e melhora a experiência do usuário.

Para mais informações sobre ativação de sessão, consulte a seção Ativação da Sessão.

circle-questionQual é a melhor prática para otimizar o tempo de pagamento?
  • Para otimizar o tempo de pagamento e melhorar a experiência do usuário, recomenda-se:
    1. Inicializar o SDK durante o carregamento do app: chamar TapOnPhone.initialize() logo após o setConfig().
    2. Ativar a sessão após a inicialização: chamar TapOnPhone.activateSession() logo após a inicialização bem-sucedida.
    3. Pagar: chamar TapOnPhone.pay() para iniciar o processo de pagamento.
  • Com essas práticas, o pagamento será mais rápido, pois tanto a inicialização quanto a criação da sessão já terão sido concluídas previamente.

Para mais detalhes, consulte as seções Inicialização e Ativação da Sessão.

circle-questionÉ preciso inicializar o SDK toda vez que for feita uma venda?
  • O SDK é inicializado apenas uma vez, não necessariamente antes de toda venda.
circle-questionDepois de inicializado por quanto tempo a sessão fica ativa?
  • Não existe um tempo limite. A sessão deve ser inicializada sempre que o app é encerrado ou antes de qualquer pagamento.
circle-questionO que pode ocasionar o erro 2031 (TerminalCreationFailureCause.INTERNAL_ERROR)
  • Credenciais incorretas no processo de onboarding. Verifique novamente as credenciais abaixo:
    • clientId
    • clientSecret
  • Erro nas informações do seu aplicativo. Verifique se os dados abaixo estão corretos:
    • packageName
    • versionCode
    • SHA-256 Fingerprint
  • Verifique se o manifesto do seu aplicativo (AndroidManifest.xml) não está com a configuração abaixo, pois isso pode impossibilitar a inicialização do SDK:
<provider
    android:name="androidx.startup.InitializationProvider"
    android:authorities="${applicationId}.androidx-startup"
    tools:node="remove">
</provider>

Para mais informações sobre credenciais, consulte as seções Onboarding e Inicialização.

Credenciais e Segurança

circle-questionOfuscação de código pode dar problema no uso do SDK?
  • Sim. Nesses casos, adicione as seguintes configurações no arquivo proguard-rules.pro:
-keep class com.zoop.sdk.** { *; }
-keep class com.mypinpad.tsdk.** { *; }
-keep class javax.naming.** { *; }
-keep class javax.naming.directory.** { *; }
-dontwarn javax.naming.**
-dontwarn javax.naming.directory.**
circle-questionO que pode dar erros de Attestation?
  • Erros de attestation estão associados à não aprovação do aparelho pela Play Store e a outras métricas de segurança.
  • Credenciais incorretas também podem ocasionar esse erro.
  • O versionCode do aplicativo na Play Store pode não estar liberado na Zoop. Verifique o range de versões liberado para uso.
  • Celular em modo Debug ou com root impedirá o uso do aplicativo com o SDK.

Ver também: Attestation e instanceId quando o attestationStatus aparece nas respostas de erro.

circle-questionCelular em modo Debug ou realizado Root consegue funcionar com o SDK?
  • Não. O app com o SDK nesses dois modos não passará nas etapas de segurança e provavelmente retornará um dos erros de Attestation.
circle-questionQuanto tempo para receber as credenciais iniciais para integração?
  • O SLA é de até 7 dias após o pedido de liberação.
circle-questionÉ possível usar a mesma credencial em mais de um aplicativo?
  • Não. As credenciais são únicas para cada aplicativo liberado na loja.
circle-questionComo é possível identificar o celular que originou a transação?
  • As transações do SDK aceitam metadata e referenceId, que podem conter informações para esse controle.
  • A implementação e o gerenciamento dessa identificação ficam a cargo do desenvolvimento do parceiro.

Ambiente de Teste

circle-questionÉ possível testar em ambiente de desenvolvimento ou sandbox?
  • Sim. A partir do SDK 2.3.1, use a dependência com.zoop.sdk:taponphone-sandbox-debug no Gradle no lugar de staging/production.
  • Para fluxos que dependem de produção e das políticas das lojas, siga as orientações do onboarding e do suporte.

Consulte também a seção Ambiente Sandbox.

circle-questionExiste alguma previsão da Zoop ter um ambiente de teste/sandbox para desenvolvimento?
  • Sim. O modo Sandbox está disponível no SDK a partir da versão 2.3.1 para integração e testes sem publicar o aplicativo na loja.

Consulte a seção Ambiente Sandbox.

Suporte e Desenvolvimento

circle-questionTem suporte a tecnologia React Native e Flutter?
  • Não. A Zoop não oferece suporte para essas tecnologias.
  • Garantir o funcionamento da integração em React Native ou Flutter é responsabilidade da equipe de desenvolvimento.
circle-questionApós finalizar integração e desenvolvimento precisamos enviar para homologação da Zoop?
  • Não.
  • É necessário apenas enviar um vídeo do fluxo de pagamento completo do aplicativo desenvolvido até a tela de sucesso, com a animação da bandeira Visa e Elo.
circle-questionAté que ponto vai o suporte técnico da Zoop no desenvolvimento do app?
  • O suporte técnico na integração do app cobre apenas problemas associados diretamente ao SDK.
  • A Zoop não oferece suporte ao desenvolvimento do aplicativo.
  • É responsabilidade do parceiro garantir uma equipe técnica qualificada para realizar a integração.
circle-questionÉ possível acessar o binário do SDK por fora do gerenciamento do Maven?
  • Não.
circle-questionO SDK posiciona o local do celular para aproximar o cartão?
  • Não. Isso deve ser apresentado na animação de aproximação pelo próprio parceiro que realiza o desenvolvimento.
  • O SDK oferece a funcionalidade de verificar a antena NFC do dispositivo por meio da classe CardProximityReader.

Para mais detalhes, consulte a seção Leitor de Proximidade.

circle-questionÉ possível incluir animações personalizadas na tela de aproximação do cartão?
  • Sim. No menu Configurações do Tema, é possível visualizar essa opção.
circle-questionTem algum limite sobre o tamanho da animação na configuração do tema?
  • Não. Não há um limite determinado.
  • Como referência, essa animação está com largura de 343px e altura de 250px.

Compatibilidade

circle-questionO que são páginas de memória de 16KB e por que preciso me preocupar com isso?
  • As páginas de memória de 16KB são uma nova exigência do Google Play para aplicativos que visam o Android 15 ou versões mais recentes.
  • Essa mudança é necessária para garantir compatibilidade futura, otimização de memória e conformidade com as políticas do Google Play.
  • Prazo: 31 de outubro de 2025, com possibilidade de extensão até 30 de maio de 2026.
  • Consequência: se as atualizações do seu app não forem compatíveis com páginas de 16KB, não será possível lançá-las após o prazo.
  • A partir da versão 1.7.2, o SDK Zoop já inclui suporte para páginas de 16KB.
Aviso do Google Play sobre compatibilidade com páginas de memória de 16KBTela do Google Play com prazo de suporte para páginas de memória de 16KB

Did this page help you?