Simulações
Guia de simulações no iOS Simulator
Simulações no iOS Simulator
O SDK Tap on Phone iOS oferece recursos de simulação para desenvolvimento, testes automatizados e validação de integração no iOS Simulator, sem cartão NFC.
As simulações descritas nesta página dependem do ambiente sandbox da Zoop e estão disponíveis a partir das versões indicadas abaixo.
O que você pode simular
| Recurso | Versão mínima |
|---|---|
| Pagamento completo no simulador | 3.4.12 |
| Recusa por valor (R$ 5,01–5,99) | 3.4.12 |
Kernel update (kernelUpdateProgress) | 3.5.0 |
ImportanteSimulações no simulador não substituem testes em dispositivo físico com NFC. Use dispositivo real para validar Tap to Pay, onboarding Apple e fluxos de produção.
Antes de começar
- SDK 3.4.12 ou superior (recomendado: 3.5.0).
- App rodando no iOS Simulator (Xcode).
- Credenciais sandbox provisionadas pela Zoop. Veja Ambiente de Sandbox.
- Fluxo mínimo:
setConfig→initialize(opcional) →pay.
Configurar o ambiente sandbox
let config = ConfigParameters(
credentials: credentials,
environment: .sandbox,
logLevel: .error,
sdkConfig: SdkConfig()
)
TapOnPhone.setConfig(configParameters: config)Pagamentos simulados
Disponível desde a versão 3.4.12.
O SDK executa o fluxo de pagamento completo no iOS Simulator. As transações usam dados de cartões de teste e são enviadas ao backend sandbox da Zoop.
DicaNenhuma alteração na integração é necessária. Basta rodar o app no simulador com
environment: .sandboxe chamar o métodopaynormalmente.
Realizar um pagamento simulado
let request = PaymentRequest(
amount: 1000, // R$ 10,00
paymentType: .credit,
installments: 1,
referenceId: "minha-ref-001"
)
TapOnPhone.pay(
payRequest: request,
onSuccess: { response in
print("Aprovado:", response.transactionId)
},
onError: { response in
switch response.sdkError {
case .payment(let paymentError):
print("Recusado:", paymentError.error.message)
case .tapOnPhone(let error):
print("Erro SDK:", error.message)
case .unknown(let raw):
print("Erro:", raw)
}
},
onEvent: { event in
print("Evento:", event)
}
)Restrições
| Restrição | Detalhe |
|---|---|
| Ambientes permitidos | Apenas sandbox |
| Valor máximo | R$ 200,00 (20.000 centavos) por transação |
| NFC | Não utilizado; leitura simulada localmente |
| Cobrança real | Não ocorre |
AtençãoValores acima de R$ 200,00 são rejeitados no simulador. Tentativas para o ambiente de
productionoucustomtambém retornam erro.
Simular aprovação e recusa por valor
No sandbox, o backend simula respostas da adquirente conforme o valor da transação.
Transações aprovadas
Use valores fora do intervalo R$ 5,01–5,99. Exemplo: R$ 10,00 (amount: 1000).
Transações negadas
Para simular recusa, use valor entre R$ 5,01 e R$ 5,99 (501 a 599 centavos).
| Exemplo | amount | Resultado esperado |
|---|---|---|
| R$ 5,05 | 505 | Erro 6015 e acquirerCode 4005 |
| R$ 5,32 | 532 | acquirerCode 4032 |
O acquirerCode em PaymentErrorResponse segue o padrão 40xx, em que xx são os centavos após R$ 5,00.
onError: { response in
switch response.sdkError {
case .payment(let paymentError):
print("Código SDK:", paymentError.error.code.rawValue)
print("Acquirer:", paymentError.acquirerCode ?? "—")
default:
break
}
}Para a lista completa de códigos simuláveis, consulte Ambiente de Sandbox.
Simular atualização de kernel
Disponível desde a versão 3.5.0.
Permite testar o comportamento do app durante uma atualização de kernel da Apple no iOS Simulator.
Gatilho
Pagamento com valor exatamente R$ 6,01 (amount: 601) no iOS Simulator, com environment: .sandbox.
Comportamento
- O SDK emite eventos
kernelUpdateProgress(Int)de 0 a 100 viaonEvent. - A sequência dura aproximadamente 8 segundos.
- Após a simulação, o fluxo de pagamento continua normalmente.
let request = PaymentRequest(
amount: 601, // R$ 6,01 — dispara kernelUpdateProgress
paymentType: .credit,
installments: 1
)
TapOnPhone.pay(
payRequest: request,
onSuccess: { _ in },
onError: { _ in },
onEvent: { event in
if case .kernelUpdateProgress(let progress) = event {
print("Kernel update:", progress, "%")
}
}
)Personalize a mensagem exibida na UI com TapOnPhoneTheme, mapeando o evento .kernelUpdateProgress(0). Detalhes em 5 - Customização.
Fluxos de teste
Fluxo de pagamento aprovado
setConfig(environment: .sandbox)
→ initialize()
→ pay(amount: 1000)
→ onSuccess com transactionIdFluxo de recusa simulada
setConfig(environment: .sandbox)
→ initialize()
→ pay(amount: 505) // R$ 5,05
→ onError: código 6015, acquirerCode 4005Fluxo de kernel update simulado
setConfig(environment: .sandbox)
→ initialize()
→ pay(amount: 601) // R$ 6,01
→ onEvent: kernelUpdateProgress 0…100 (~8 s)
→ fluxo de pagamento continuaUpdated 14 days ago
