Pagamento

Venda

  • Faz-se uso do método TapOnPhone::pay.

Parâmetros

É necessário passar os parâmetros conforme a seguir:

data class PaymentRequest(
    val amount: Long,
    val paymentType: PaymentType,
    val installments: Int? = null,
    val referenceId: String? = null,
    val metadata: String? = null
)
ChaveTipoObjetivoExemplo
amountLongValor da transação (em centavos).2 (R$ 0,02)
paymentTypePaymentTypeTipo do pagamento (do tipo PaymentType).PaymentType.CREDIT
installmentsLongQuantidade de parcelas.2
referenceIdStringIdentificador próprio gerado pelo parceiro (opcional, máx. 50 caracteres)."237ab31-g99c-4e25-9hjs-32u4d3gf7fh2"
metadataString (em JSON) ou JsonObjectMetadados personalizados fornecidos pelo parceiro (opcional, máx. 512 caracteres).Vide Metadados em JsonObject

Opções de pagamento

enum class PaymentType {
    CREDIT, // Crédito
    DEBIT, // Débito
    PIX,  // Pix 
}

Metadados em JsonObject

Para criar um objeto de JsonObject, faça como no seguinte exemplo:

val metadata = buildJsonObject {
    put("clientId", "1234")
    put("name", "John Doe")
}

Exemplo de pagamento

val tapOnPhone = TapOnPhone()

// Depois de inicializado com sucesso
coroutineScope.launch {
    tapOnPhone.pay(
        payRequest = PaymentRequest(
            amount = 10000, // R$ 10,00
            paymentType = PaymentType.CREDIT,
            installments = 2,
            referenceId = UUID.randomUUID().toString(),
            metadata = """
                {
                    "clientId": "1234",
                    "name": "John Doe"        
                }
            """,
        ),
        onApproved = { result ->
            println("Pagamento Aprovado! Id: ${result.transactionId}")
        },
        onError = { error ->
            println("Pagamento negado - id: ${error.transactionId}")
            println("Mensagem: ${error.message}")
            println("Código: ${error.code}")
            println("Descrição: ${error.description}")
        },
    )
}

Resposta de sucesso PaymentApprovedResponse

data class PaymentApprovedResponse(
    val transactionId: String, // Id da transação na Zoop
    val referenceId: String, // Seu id para transação, se fornecido no request
    val cardBrand: CardBrand // Bandeira do cartão
)

Resposta de erro PaymentErrorResponse

data class PaymentErrorResponse(
    val transactionId: String?, // Id da transação na Zoop se disponível, caso a falha tenha ocorrido antes de ser enviado para Zoop, será `null`
    val referenceId: String?, // Seu id para transação, se fornecido no request
    val message: String, // mensagem de erro para o usuário
    val code: Int?, // código de erro
    val source: String?, // onde ocorreu o erro
    val description: String?, // descrição mais detalhada do erro
    val errorSource: String?, // onde ocorreu o erro ex: sdk, backend, kernel, acquirer
    val operationType: String?, // Tipo de operação que originou o erro ex: pay, activation
    val kernel: KernelError? // Detalhes do erro do kernel
) {
    data class KernelError(
        val code: Int, // código do erro kernel
        val name: String, // nome do erro kernel
        val description: String // descrição do erro kernel
    )
}