5 - Otimizar pagamento

Use initialize e activateSession para antecipar etapas opcionais do SDK iOS e acelerar o fluxo de pagamento.

Use TapOnPhone.initialize(...) e TapOnPhone.activateSession(...) para antecipar etapas opcionais do SDK iOS e reduzir o tempo percebido no início do pagamento.

Os dois métodos desta página são opcionais. Se você não chamá-los, o SDK poderá inicializar e criar a sessão automaticamente durante a primeira transação.

initialize

Prepara o SDK antes da primeira cobrança. A partir da versão 3.2.1, a inicialização explícita deixou de ser obrigatória.

activateSession

Cria a sessão antes do pagamento. Se você não chamar esse método, a sessão será criada no momento da transação.

Antes de começar

  • Adicione o SDK ao seu projeto conforme descrito em Primeiros Passos.
  • Configure o SDK com as credenciais fornecidas antes de chamar os métodos desta página.
  • Se você estiver no modo multiseller, revise a configuração de seller antes de inicializar o SDK.

Fluxo recomendado

  1. Chame TapOnPhone.initialize(...) para preparar o SDK antes da primeira venda.
  2. Chame TapOnPhone.activateSession(...) para antecipar a criação da sessão de pagamento.
  3. Inicie a transação normalmente quando o cliente estiver pronto para pagar.

1. Inicialize o SDK

Use TapOnPhone.initialize(...) quando quiser deixar o SDK pronto antes da primeira transação. O método aceita closures para tratar sucesso, erro e eventos da aplicação.

  • onSuccess: executa quando a inicialização termina com sucesso.
  • onError: executa quando ocorre erro na inicialização.
  • onEvent: entrega eventos emitidos pelo SDK durante o processo.
TapOnPhone.initialize(
    onSuccess: { [weak self] in
        guard let self else { return }
        print("SDK initialized successfully")
    },
    onError: { [weak self] error in
        guard let self else { return }
        let initError = error.error as! TapOnPhoneError
        print("SDK start error - code: ", initError.code.rawValue)
        print("name: ", initError.code.description)
        print("message: ", initError.message)
    },
    onEvent: { ApplicationEvent in
        print("ApplicationEvent: \(ApplicationEvent)")
    }
)

Saída esperada em caso de sucesso

SDK initialized successfully

Saída esperada em caso de erro

SDK start error - code: <código>
name: <nome do erro>
message: <mensagem do erro>
Optional: Multiseller

No modo multiseller, disponível a partir da versão 3.4.9, você deve informar o seller em TapOnPhone.initialize(sellerId:) quando o seller estiver nil ou vazio no setConfig.

Use esse formato quando a definição do seller acontecer em runtime.

2. Crie a sessão antecipadamente

Use TapOnPhone.activateSession(...) para criar a sessão antes do pagamento. Esse método é opcional e pode ajudar a acelerar o fluxo quando você já sabe qual tipo de pagamento será iniciado.

Chame TapOnPhone.activateSession(...) somente depois de TapOnPhone.initialize(...).

TapOnPhone.activateSession(
    paymentType: .credit, // ou .debit
    onSuccess: { [weak self] _ in
        guard let self else { return }
        print("Success creating session!")
    },
    onError: { [weak self] error in
        guard let self else { return }
        print("Session error - code: ", error.code.rawValue)
        print("name: ", error.code.description)
        print("message: ", error.message)
    },
    onEvent: { ApplicationEvent in
        print("ApplicationEvent: \(ApplicationEvent)")
    }
)

Saída esperada em caso de sucesso

Success creating session!

Saída esperada em caso de erro

Session error - code: <código>
name: <nome do erro>
message: <mensagem do erro>

Optional: Quando usar esses métodos

Use a inicialização e a criação de sessão antecipadas quando você quiser reduzir o tempo percebido pelo cliente no começo da cobrança.

Esse fluxo é útil principalmente nestes cenários:

  • quando o operador abre a tela de pagamento antes de aproximar o cartão;
  • quando o tipo de pagamento já é conhecido com antecedência, como credit ou debit;
  • quando você quer separar a preparação do SDK da execução da venda.

Optional: Se você não chamar os métodos

Você não precisa chamar esses métodos para que o pagamento funcione. Nesse caso, o SDK executará a inicialização e a criação da sessão automaticamente durante a primeira transação, se necessário.

Essa abordagem reduz a quantidade de chamadas no seu fluxo, mas pode aumentar o tempo percebido no início do pagamento.

Optional: Eventos disponíveis

Tanto initialize quanto activateSession aceitam onEvent para expor eventos da aplicação durante a execução.

Para consultar a lista de eventos disponíveis e o comportamento esperado em cada etapa, veja a documentação específica de eventos do SDK.

Resumo

MétodoObrigatórioQuando usar
TapOnPhone.initialize(...)NãoQuando você quiser preparar o SDK antes da primeira transação
TapOnPhone.activateSession(...)NãoQuando você quiser criar a sessão antes do pagamento

Se o seu app já sabe que uma cobrança vai começar, chamar esses métodos antes da transação ajuda a deixar o pagamento mais rápido e previsível.