Pagamento

Nesse passo, você irá realizar o seu primeiro pagamento.

Requisição

Vamos aprender a criar uma requisição simples de pagamento no crédito de R$ 1,00

Aprenda a criar outros tipos de requisições de pagamento

let request = PaymentRequest(
    amount = 100,
    paymentType = .credit,
    installments = 1
)

Iniciar Pagamento

Agora é hora de enviar a requisição

Veja tudo sobre os callbacks disponíveis

TapOnPhone.pay(
    payRequest = request,
    onSuccess = { response ->
        // sucesso
    },
    onError = { error ->
        // erro
    },
    onEvent = { event ->
        // evento recebido (etapa do pagamento)
    }
)

Exemplo Completo

import SwiftUI
import TapOnPhoneSDK

struct PaymentView: View {
    @State private var showSuccess = false
    @State private var showError = false
    @State private var errorMessage = ""
    
    var body: some View {
        VStack(spacing: 20) {
            Button("Realizar Pagamento") {
                let amount = 100
                let paymentType: TapOnPhonePaymentType = .credit
                let installments = 1

                TapOnPhone.pay(
                    payRequest: PayRequest(
                        amount: amount,
                        paymentType: paymentType,
                        installments: installments
                    )
                ) { response in
                    // Sucesso
                    showSuccess = true
                } onError: { error in
                    // Erro
                    if error.type == .payment, let paymentError = error.error as? PaymentErrorResponse {
                        errorMessage = "Erro de pagamento: \(paymentError.message)"
                    } else if let generalError = error.error as? TapOnPhoneError {
                        errorMessage = "Erro: \(generalError.message)"
                    } else {
                        errorMessage = "Erro desconhecido"
                    }
                    showError = true
                } onEvent: { event in
                    // Eventos do SDK (opcional)
                    print("Evento recebido: \(event)")
                }
            }
        }
        .alert("Pagamento realizado com sucesso!", isPresented: $showSuccess) {
            Button("OK", role: .cancel) { }
        }
        .alert("Erro", isPresented: $showError) {
            Button("OK", role: .cancel) { }
        } message: {
            Text(errorMessage)
        }
    }
}