Perguntas & Respostas
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.
O 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.
<li>
<strong>Onde chamar:</strong> chame na classe <code>Application</code> do app, dentro do método <code>onCreate()</code>.
</li> 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.
O 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.
<li>
<strong>Quando chamar:</strong> deve ser chamado <strong>após</strong> <code>kernelInitialize()</code> e <strong>antes</strong> de usar qualquer outro método do SDK.
</li>
<li>
O método recebe um objeto <code>ConfigParameters</code> contendo contexto, credenciais e configurações opcionais.
</li> Para mais informações, consulte a seção Definir configurações do SDK.
A inicialização do SDK é obrigatória antes de realizar um pagamento?
-
Não. A inicialização é opcional e pode ser feita de duas formas:
<ol> <li> <strong>Manualmente:</strong> chamando <code>TapOnPhone.initialize()</code> antes do pagamento. </li> <li> <strong>Automaticamente:</strong> se não for feita manualmente, o SDK realizará a inicialização automaticamente quando você chamar <code>TapOnPhone.pay()</code>. </li> </ol> </li> <li> A inicialização manual é recomendada para evitar tempo de espera no primeiro pagamento. </li>
Para mais informações sobre o método de inicialização, consulte a seção Inicialização.
Posso 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().
<li>
Isso reduz o tempo de espera e melhora a experiência do usuário.
</li> Para mais informações sobre ativação de sessão, consulte a seção Ativação da Sessão.
Qual é 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:
<ol> <li> <strong>Inicializar o SDK durante o carregamento do app:</strong> chamar <code>TapOnPhone.initialize()</code> logo após o <code>setConfig()</code>. </li> <li> <strong>Ativar a sessão após a inicialização:</strong> chamar <code>TapOnPhone.activateSession()</code> logo após a inicialização bem-sucedida. </li> <li> <strong>Pagar:</strong> chamar <code>TapOnPhone.pay()</code> para iniciar o processo de pagamento. </li> </ol> </li> <li> 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. </li>
Para mais detalhes, consulte as seções Inicialização e Ativação da Sessão.
É preciso inicializar o SDK toda vez que for feita uma venda?
- O SDK é inicializado apenas uma vez, não necessariamente antes de toda venda.
Depois 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.
O que pode ocasionar o erro 2031 (TerminalCreationFailureCause.INTERNAL_ERROR)
-
Credenciais incorretas no processo de onboarding. Verifique novamente as credenciais abaixo:
<ul> <li><code>clientId</code></li> <li><code>clientSecret</code></li> </ul> </li> <li> Erro nas informações do seu aplicativo. Verifique se os dados abaixo estão corretos: <ul> <li><code>packageName</code></li> <li><code>versionCode</code></li> <li><code>SHA-256 Fingerprint</code></li> </ul> </li> <li> Verifique se o manifesto do seu aplicativo (<code>AndroidManifest.xml</code>) não está com a configuração abaixo, pois isso pode impossibilitar a inicialização do SDK: </li>
<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
Ofuscaçã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.**O 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.
<li>
Credenciais incorretas também podem ocasionar esse erro.
</li>
<li>
O <code>versionCode</code> do aplicativo na Play Store pode não estar liberado na Zoop. Verifique o range de versões liberado para uso.
</li>
<li>
Celular em modo Debug ou com root impedirá o uso do aplicativo com o SDK.
</li> Ver também: Attestation e instanceId quando o attestationStatus aparece nas respostas de erro.
Celular 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.
Quanto tempo para receber as credenciais iniciais para integração?
- O SLA é de até 7 dias após o pedido de liberação.
É possível usar a mesma credencial em mais de um aplicativo?
- Não. As credenciais são únicas para cada aplicativo liberado na loja.
Como é possível identificar o celular que originou a transação?
-
As transações do SDK aceitam
metadataereferenceId, que podem conter informações para esse controle.
<li>
A implementação e o gerenciamento dessa identificação ficam a cargo do desenvolvimento do parceiro.
</li> Ambiente de Teste
É 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-debugno 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.
Existe 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
Tem suporte a tecnologia React Native e Flutter?
- Não. A Zoop não oferece suporte para essas tecnologias.
<li>
Garantir o funcionamento da integração em React Native ou Flutter é responsabilidade da equipe de desenvolvimento.
</li> Após finalizar integração e desenvolvimento precisamos enviar para homologação da Zoop?
- Não.
<li>
É 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.
</li> Até 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.
<li>
A Zoop não oferece suporte ao desenvolvimento do aplicativo.
</li>
<li>
É responsabilidade do parceiro garantir uma equipe técnica qualificada para realizar a integração.
</li> É possível acessar o binário do SDK por fora do gerenciamento do Maven?
- Não.
O 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.
<li>
O SDK oferece a funcionalidade de verificar a antena NFC do dispositivo por meio da classe <code>CardProximityReader</code>.
</li> Para mais detalhes, consulte a seção Leitor de Proximidade.
É 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.
Tem algum limite sobre o tamanho da animação na configuração do tema?
- Não. Não há um limite determinado.
<li>
Como referência, essa animação está com largura de <code>343px</code> e altura de <code>250px</code>.
</li> Compatibilidade
O 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
16KBsão uma nova exigência do Google Play para aplicativos que visam o Android 15 ou versões mais recentes.
<li>
Essa mudança é necessária para garantir compatibilidade futura, otimização de memória e conformidade com as políticas do Google Play.
</li>
<li>
<strong>Prazo:</strong> 31 de outubro de 2025, com possibilidade de extensão até 30 de maio de 2026.
</li>
<li>
<strong>Consequência:</strong> se as atualizações do seu app não forem compatíveis com páginas de <code>16KB</code>, não será possível lançá-las após o prazo.
</li>
<li>
A partir da versão <strong>1.7.2</strong>, o SDK Zoop já inclui suporte para páginas de <code>16KB</code>.
</li> 

