Pagamento
Venda
- Faz-se uso do método
TapOnPhone.pay()
.
Parâmetros
É necessário passar os parâmetros conforme a seguir:
struct PaymentRequest(
let amount: Int
let paymentType: TapOnPhonePaymentType
let installments: Int
let metadata: String?
)
amount
-> Valor em centavos. Ex: 100 = R$ 1,00paymentType
-> Tipo de pagamento (TapOnPhonePaymentType.credit
, TapOnPhonePaymentType.debit
)installments
-> Quantidade de parcelas (para compra parcelada valor deve ser igual ou maior que 2)metadata
-> String arbitrária enviado junto à transação (limitada a 512 caracteres)
Para informação sobre os possíves eventos, ver aqui
Exemplo de 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 {
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)")
}
)
Resposta de sucesso PaymentApprovedResponse
struct PaymentApprovedResponse {
let transactionId: String // Id da transação na Zoop
let cardBrand: String // Bandeira do cartão
let readerIdentifier: String? // Id do leitor de pagamentos
let readResultId: String? // Id do resultado da leitura do cartão
}
Resposta de erro ErrorResponse
struct ErrorResponse {
let type: ErrorType
let error: Any // Quando initialize, cast para TapOnPhoneError, quando payment, cast para PaymentErrorResponse
}
enum ErrorType {
case initialize
case payment
case onboarding
}
struct PaymentErrorResponse {
let error: TapOnPhoneError // Estrutura de erro do SDK informando o que exatamente aconteceu
let transactionId: String? // Id da transação na Zoop
let cardBrand: String? // Bandeira do cartão
let readResultId: String? // Id do resultado da leitura do cartão
}