9 - Eventos
Entenda quais eventos o SDK Tap to Pay iOS dispara nos fluxos de initialize(), activateSession() e pay(), incluindo eventos InPayment e diagramas visuais.
Nesta página, você vai entender quando cada evento do SDK Tap to Pay iOS é disparado nos fluxos de initialize(), activateSession() e pay().
Os eventos são enviados pela callback onEvent nas funcionalidades de pagamento e otimização de pagamento.
Use esta página como referência de implementação e debug. Ela mostra os eventos disponíveis, quando eles aparecem e como o comportamento muda quando parte do fluxo acontece durante o pagamento.
Enum de eventos
public enum ApplicationEvent: Hashable {
// Tela
case launchBuiltInScreen // Tela nativa do SDK apareceu
case closeBuiltInScreen // Tela nativa do SDK desapareceu
// Ativação
case terminalActivationStarted // Começou o processo de ativação (contempla o fluxo completo, ativação Zoop e ativação Apple)
case terminalActivationSucceeded // Ativação realizada com sucesso - a partir da versão 3.4.3
case terminalActivationFailed // Ativação falhou - a partir da versão 3.4.3
case terminalActivationFinished // Finalizou o processo de ativação (contempla o fluxo completo, ativação Zoop e ativação Apple)
case zoopActivationStarted // Começou o fluxo de ativação na Zoop
case zoopActivationSucceeded // Ativação na Zoop realizada com sucesso
case zoopActivationFailed // Ativação na Zoop falhou
case zoopActivationFinished // Ativação na Zoop encerrou - a partir da versão 3.4.3
// Ativação durante pagamento - a partir da versão 3.4.3
case zoopActivationInPaymentStarted
case zoopActivationInPaymentSucceeded
case zoopActivationInPaymentFailed
case zoopActivationInPaymentFinished
case kernelActivationStarted // Criando o leitor do cartão na Apple
case kernelActivationSucceeded // Leitor Apple criado com sucesso
case kernelActivationFailed // Falha na criação do leitor Apple
case kernelActivationFinished // Criação do leitor finalizou - a partir da versão 3.4.3
// Ativação do leitor Apple durante o pagamento - a partir da versão 3.4.3
case kernelActivationInPaymentStarted
case kernelActivationInPaymentSucceeded
case kernelActivationInPaymentFailed
case kernelActivationInPaymentFinished
case sessionActivationStarted // Criação da sessão do pagamento iniciada
case sessionActivationSucceeded // Sessão criada com sucesso
case sessionActivationFailed // Falha na criação da sessão
case sessionActivationRetry // Retentativa de criação de sessão
case sessionActivationFinished // Criação da sessão finalizou - a partir da versão 3.4.3
// Ativação da sessão durante o pagamento - a partir da versão 3.4.3
case sessionActivationInPaymentStarted
case sessionActivationInPaymentSucceeded
case sessionActivationInPaymentFailed
case sessionActivationInPaymentFinished
// Processo do pagamento
case paymentProcessStarted // Processo do pagamento iniciado
case paymentProcessFinished // Processo do pagamento finalizado
case paymentProcessSucceeded // Sucesso no pagamento
case paymentProcessFailed // Falha no pagamento
case paymentConfirmationStarted // Criando confirmação do pagamento
case paymentConfirmationSucceeded // Pagamento confirmado
case paymentConfirmationFailed // Falha na confirmação do pagamento
case paymentConfirmationFinished // Confirmação do pagamento finalizou
// Eventos do pagamento
case cardReadingStarted // Iniciando a leitura do cartão
case cardReadingRetry // Retentativa da leitura do cartão
case cardReadingFinished // Leitura do cartão finalizada
case pinInputStarted // Início da captura de PIN
case pinInputFinished // Captura de PIN finalizada
case authorizingPleaseWait // Enviando autorização
case holdCardSteady // Manter o cartão aproximado
case transactionAborted // Operação cancelada
// Disponíveis a partir da versão 3.2.2
case brandAnimationStarted // Início da exibição da tela de animação da bandeira
case brandAnimationSucceeded // Animação exibida com sucesso - a partir da versão 3.4.3
case brandAnimationFailed // Falha na exibição da tela de animação da bandeira
case brandAnimationFinished // Animação de bandeira encerrada
// Disponível a partir da versão 3.4.0
case kernelUpdateProgress(Int) // Atualização do leitor Apple, com a porcentagem em inteiro. Ex.: 40 representa 40%
}Visão rápida do fluxo
Os eventos de inicialização e criação de sessão podem aparecer em dois momentos.
Comportamento dos eventos InPayment
InPaymentDependendo de como você organiza as chamadas, você pode receber:
- Eventos padrão — por exemplo,
zoopActivationStarted. - Eventos com sufixo
InPayment— por exemplo,zoopActivationInPaymentStarted. - Ambos os tipos — quando
pay()é chamado antes do término dos fluxos opcionais.
Os eventos
InPaymentsó são disparados quando a tela do SDK é aberta durante a execução de um desses processos.
Mapeamento de eventos padrão para InPayment
InPaymentVer mapeamento completo
let relatedEvents: [ApplicationEvent: ApplicationEvent] = [
// Zoop
.zoopActivationStarted: .zoopActivationInPaymentStarted,
.zoopActivationSucceeded: .zoopActivationInPaymentSucceeded,
.zoopActivationFailed: .zoopActivationInPaymentFailed,
.zoopActivationFinished: .zoopActivationInPaymentFinished,
// Kernel
.kernelActivationStarted: .kernelActivationInPaymentStarted,
.kernelActivationSucceeded: .kernelActivationInPaymentSucceeded,
.kernelActivationFailed: .kernelActivationInPaymentFailed,
.kernelActivationFinished: .kernelActivationInPaymentFinished,
// Session
.sessionActivationStarted: .sessionActivationInPaymentStarted,
.sessionActivationSucceeded: .sessionActivationInPaymentSucceeded,
.sessionActivationFailed: .sessionActivationInPaymentFailed,
.sessionActivationFinished: .sessionActivationInPaymentFinished
]Fluxo de métodos e eventos
setConfig()
setConfig()| Campo | Valor |
|---|---|
| Tipo | Obrigatório |
| Eventos disparados | Nenhum |
initialize()
initialize()| Campo | Valor |
|---|---|
| Tipo | Opcional |
Eventos esperados no fluxo completo
terminalActivationStartedkernelActivationStartedkernelActivationSucceededoukernelActivationFailedkernelActivationFinishedzoopActivationStartedzoopActivationSucceededouzoopActivationFailedzoopActivationFinishedsessionActivationStartedterminalActivationSucceededouterminalActivationFailedterminalActivationFinished
Fluxo visual de initialize()
initialize()activateSession()
activateSession()| Campo | Valor |
|---|---|
| Tipo | Opcional |
Se
initialize()ainda estiver em processamento, os eventos do fluxo de inicialização podem sair pela callbackonEventdeactivateSession().
Eventos esperados
sessionActivationStartedsessionActivationSucceededousessionActivationFailedsessionActivationRetry(se necessário)sessionActivationFinished
Fluxo visual de activateSession()
activateSession()pay()
pay()| Campo | Valor |
|---|---|
| Tipo | Obrigatório |
Se
initialize()eactivateSession()não foram chamados antes,pay()pode disparar os eventos desses fluxos durante o pagamento. Quando isso acontece com a tela do SDK já aberta, você também recebe os eventos com sufixoInPayment.
Eventos de ativação durante o pagamento
Eventos de ativação durante o pagamento
zoopActivationInPaymentStarted(se aplicável)zoopActivationInPaymentSucceededouzoopActivationInPaymentFailed(se aplicável)zoopActivationInPaymentFinished(se aplicável)kernelActivationInPaymentStarted(se aplicável)kernelActivationInPaymentSucceededoukernelActivationInPaymentFailed(se aplicável)kernelActivationInPaymentFinished(se aplicável)sessionActivationInPaymentStartedsessionActivationInPaymentSucceededousessionActivationInPaymentFailedsessionActivationInPaymentFinished
Eventos do pagamento
Eventos do pagamento
paymentProcessStartedkernelUpdateProgress(se aplicável)cardReadingStartedholdCardSteadycardReadingRetry(se aplicável)cardReadingFinishedpinInputStarted(se aplicável)pinInputFinished(se aplicável)transactionAborted(se aplicável)authorizingPleaseWaitpaymentProcessSucceededoupaymentProcessFailedpaymentConfirmationStartedpaymentConfirmationSucceededoupaymentConfirmationFailedpaymentConfirmationFinishedbrandAnimationStarted(se aplicável)brandAnimationSucceededoubrandAnimationFailed(se aplicável)brandAnimationFinished(se aplicável)closeBuiltInScreenpaymentProcessFinished
Fluxo visual de pay()
pay()Notas importantes
Ordem de chamada
setConfig()deve ser chamado primeiro. Esse método não dispara eventos.
Métodos opcionais
initialize()eactivateSession()são opcionais. Se eles não forem concluídos antes depay(), os eventos desses fluxos podem aparecer durante o pagamento. Nesse cenário, você pode receber o evento padrão e também sua versão com sufixoInPayment.
Comportamento de
pay()
pay()sempre dispara os eventos de pagamento. Se os métodos anteriores já foram concluídos, você recebe apenas os eventos de pagamento e de criação de sessão. Se não foram, você recebe eventos de ativação e pagamento no mesmo fluxo.
Falhas podem alterar a ordem esperada
Eventos como
transactionAborted,terminalActivationFailede outros eventos de erro podem acontecer fora da ordem listada, dependendo do ponto em que a falha ocorreu. Por exemplo: sepaymentProcessFailedfor emitido, não haverá eventos de confirmação; apenascloseBuiltInScreenepaymentProcessFinished.
Sessão durante o pagamento
A criação de sessão pode acontecer durante
pay()mesmo queactivateSession()já tenha sido chamado antes. Em alguns casos, o SDK já terá uma instância pronta e a resposta será imediata.
Legenda dos fluxos
| Cor | Significado |
|---|---|
| ⬛ Preto | Ação que vai acontecer |
| 🟨 Amarelo | Evento disparado |
| 🟥 Vermelho | Evento de falha |
| 🟩 Verde | Evento de sucesso |
| 🟦 Azul | Condicional de outro evento ou funcionalidade |
Updated about 23 hours ago
