Perguntas & Respostas

Inicialização e Configuração

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.

  • 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.

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.

  • 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.

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:

    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.

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().

  • 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.

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:

    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.

É 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:

    • 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>

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.

  • 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).

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 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

É 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.

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

  • Para fluxos que dependem de produção e das políticas das lojas, siga as orientações do onboarding e do suporte.

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.

  • Garantir o funcionamento da integração em React Native ou Flutter é responsabilidade da equipe de desenvolvimento.

Apó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.

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.

  • A Zoop não oferece suporte ao desenvolvimento do aplicativo.

  • É responsabilidade do parceiro garantir uma equipe técnica qualificada para realizar a integração.

É 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.

  • 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.

É 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.

  • Como referência, essa animação está com largura de 343px e altura de 250px.

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 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.