3.2.2
Link para download do xcframework para adição manual do sdk
Release Notes
Principais alterações
Compatibilidade: Redução da versão mínima do iOS para compilação e
importdo projeto para iOS 15. Os métodos só podem ser chamados a partir do iOS 16.4.Novos eventos: Eventos para notificar quando a tela de animação da bandeira é exibida, falha, e fim da exibição. Podendo ser verificado aqui.
Correção de erros: Durante o uso do SDK, caso algum método seja chamado sem antes ter sido chamado o método
TapOnPhone.setConfig, o usuário receberá um objetoErrorResponsedo tipoinitialize, que terá umTapOnPhoneError.setConfigNotCalled.Otimização no pacote: Remoção de símbolos de teste do pacote final, deixando o binário mais leve, mais limpo, mais seguro e garante que o cliente final não rode código/instrumentação que só faz sentido durante testes.
Compatibilidade
Em um aplicativo cuja versão mínima de iOS seja 15, por exemplo, será necessário validar em código a versão para uso, conforme abaixo:
| Target iOS 15 sem validação | Target iOS 15 com validação |
|---|---|
![]() |
![]() |
Caso seja iOS 16.4 ou superior, não é necessário, conforme abaixo:
| Target mínimo iOS 16.4 |
|---|
![]() |
Novos eventos
Os eventos de animação de bandeira serão enviados sempre que o SDK exibir a tela ao fim de uma transação de sucesso, nos casos de transações visa/elo
enum ApplicationEvent {
//... outros eventos disponíveis na página de eventos
case brandAnimationStarted // Inicio da exibição da tela de animação da bandeira
case brandAnimationFailed // Falha na exibição da tela de animação da bandeira
case brandAnimationFinished // Animação de bandeira encerrada
}Correção de erros
Caso algum método do SDK seja chamado sem ter sido chamado pela primeira vez o método TapOnPhone.setConfig(), o usuário receberá um erro, conforme exemplo abaixo:
Exemplo no pagamento
TapOnPhone.pay(
payRequest: PaymentRequest(
amount: 1000, // R$ 10,00
paymentType: TapOnPhonePaymentType.credit,
installments: 2,
metadata: """
{
"clientId": "1234",
"name": "John Doe"
}
"""
),
onSuccess: { [weak self] result in
guard let self else { return }
print("Payment approved! id: \(result.transactionId)")
},
onError: { [weak self] transactionError in
guard let self else { return }
if transactionError.type == .payment {
let error = transactionError.error as! PaymentErrorResponse
print("Payment denied - id: ", error.transactionId ?? "unknown")
print("code: ", error.error.code.rawValue)
print("name: ", error.error.code.description)
print("message: ", error.error.message)
} else {
// Aqui virá o erro setConfigNotCalled
error.error as! TapOnPhoneError
print("SDK start error - code: ", error.code.rawValue)
print("name: ", error.code.description)
print("message: ", error.message)
}
},
onEvent: { ApplicationEvent in
print("ApplicationEvent: \(ApplicationEvent)")
}
)
TapOnPhoneError(
code: .setConfigNotCalled,
source: .sdk,
message: "Set Config method wasn't called, credentials not provided.",
description: description,
readerIdentifier: readerId,
timestamp: Double.getTimestamp()
)Exemplo na inicialização
TapOnPhone.initialize(
onSuccess: { [weak self] in
guard let self else { return }
print("Success Initialize SDK!")
},
onError: { [weak self] error in
// Aqui virá o erro setConfigNotCalled
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)")
}
)Exemplo:
| Erro durante inicialização |
|---|
![]() |
Tabelas de erros De - Para
Removidos ou modificados
| SDK Antigo | SDK 3.2.2 | |||||
|---|---|---|---|---|---|---|
| Código | Nome | Descrição | Código | Nome | Descrição | Novo evento |
| 6001 | deviceReadySuccess | O dispositivo está pronto para usar o Tap to Pay | Removido | terminalActivationFinished | ||
| 6002 | apiAuthenticationSuccess | Ativação na zoop com sucesso | Removido | zoopActivationSucceeded | ||
| 6003 | deinitSuccess | SDK foi encerrado | Removido | Não aplicável | ||
| 6004 | appleAccountLinkSuccess | Conta apple foi vinculada | Removido | Não aplicável | ||
| 6005 | sessionPrepareSuccess | Sessão foi criada | Removido | Não aplicável | ||
| 6006 | transactionSuccess | Sucesso na transação | Removido | paymentProcessSucceeded | ||
| 6007 | paymentTypeChangeSuccess | Mudança de tipo de pagamento | Removido | Não aplicável | ||
| 6013 | appleAccountLinkError | Falha no vínculo de conta apple | Removido | Não aplicável | ||
| 6014 | sdkNotInitializedError | SDK não inicializado | Removido | Não aplicável | ||
| 6015 | transactionError | Falha na transação | Removido | paymentProcessFailed | ||
| 6045 | operationTimedOut | Tempo expirou | Removido | Não aplicável | ||
| 6068 | paymentTypeChangeFailed | Falha ao trocar o tipo de pagamento | Removido | Não aplicável | ||
| 6070 | readerInitializationStarted | Iniciando leitor | Removido | Não aplicável | ||
| 6071 | readerUpdating | Atualizando leitor | Removido | Não aplicável | ||
| 6073 | readerReadyForTap | Leitor pronto para o cartão | Removido | cardReadingStarted | ||
| 6074 | readerCardDetected | Cartão detectado | Removido | holdCardSteady | ||
| 6075 | readerRemoveCard | Afastar o cartão | Removido | Não aplicável | ||
| 6076 | readerReadCompleted | Leitura concluída | Removido | cardReadingFinished | ||
| 6077 | readerReadRetry | Lendo cartão novamente | Removido | cardReadingRetry | ||
| 6078 | readerReadCancelled | Leitura cancelada | Removido | transactionAborted | ||
| 6079 | readerReadNotCompleted | Leitura cancelada | Removido | Não aplicável | ||
| 6080 | readerPinEntryRequested | Pin solicitado | Removido | pinInputStarted | ||
| 6081 | readerPinEntryCompleted | Captura de PIN finalizada | Removido | pinInputFinished | ||
| 6082 | readerUserInterfaceDismissed | Tela do apple removida | Removido | Não aplicável | ||
| 6084 | readerInitializationEnded | Inicialização do leitor finalizada | Removido | Não aplicável | ||
| 6085 | sessionWillRestart | Sessão será reiniciada | Removido | Não aplicável | ||
| 6086 | sessionStarted | Sessão iniciada | Removido | Não aplicável | ||
| 6087 | sessionEnded | Sessão finalizada | Removido | Não aplicável | ||
| 6088 | readCardData | Dados lidos | Removido | Não aplicável | ||
| 6089 | changingPaymentType | Mudando tipo de pagamento | Removido | Não aplicável | ||
Erros adicionados
| SDK 3.2.2 | SDK Antigo | ||||
|---|---|---|---|---|---|
| Código | Nome | Descrição | Código | Nome | Descrição |
| 6092 | apiRequestTimedOut | Tempo excedido durante requisição à Zoop | Não existia | ||
| 6093 | invalidPaymentToken | Token inválido para pagamento | Não existia | ||
| 6094 | animationFailed | Falha na apresentação da animação da bandeira | Não existia | ||
| 6095 | cardReadExtractionFailed | Falha na extração de dados do cartão | Não existia | ||
| 6096 | expiredCard | Cartão vencido | Não existia | ||
| 6097 | invalidCard | Cartão inválido | Não existia | ||
| 6098 | invalidExternalSellerData | Dados externos inválidos | Não existia | ||
| 6099 | setConfigNotCalled | Método de configuração não foi chamado, não é possível usar o SDK. | Não existia | ||
| 6100 | operationInProgress | Já existe uma operação em andamento | Não existia | ||
| 6101 | inactiveCard | O cartão utilizado está desabilitado. | Não existia | ||
| 6102 | internalError | Erro interno do SDK | Não existia | ||
| 6103 | contentNotFound | O conteúdo do onboarding Apple não foi encontrado. | Não existia | ||
| 6104 | contentDisplayFailed | O conteúdo do onboarding Apple não pôde ser exibido. | Não existia | ||
| 6105 | systemBusy | O sistema está ocupado. | Não existia | ||
| 6106 | unknown | Erro Apple não conhecido. | Não existia | ||



