TapOnPhone::pay
ou TapOnPhone::payByGateway
.É 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,
val externalSeller: ExternalSeller? = null,
)
Chave | Tipo | Objetivo | Exemplo |
---|---|---|---|
amount | Long | Valor da transação (em centavos). | 2 (R$ 0,02) |
paymentType | PaymentType | Tipo do pagamento (do tipo PaymentType ). | PaymentType.CREDIT |
installments | Long | Quantidade de parcelas. | 2 |
referenceId | String | Identificador próprio gerado pelo parceiro (opcional, máx. 50 caracteres). | "237ab31-g99c-4e25-9hjs-32u4d3gf7fh2" |
metadata | String (em JSON) ou JsonObject | Metadados personalizados fornecidos pelo parceiro (opcional, máx. 512 caracteres). | Vide Metadados em JsonObject |
externalSeller | ExternalSeller | Dados do external seller (opcional). | Vide External seller |
enum class PaymentType {
CREDIT, // Crédito
DEBIT, // Débito
PIX, // Pix
}
JsonObject
Para criar um objeto de JsonObject
, faça como no seguinte exemplo:
val metadata = buildJsonObject {
put("clientId","1234")
put("name","John Doe")
}
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}")
},
)
}
val externalSeller = ExternalSeller(
addressLine = "Avenida **********, ***", // Endereço
softDescriptor = "SDESC TESTE", // Descrição
cpfCnpj = "**************", // CPF ou CNPJ
state = "SP", // UF
city = "Campinas", // Cidade
country = "076", // Codigo do País
phoneNumber = "+55***********", // Número de telefone
zipCode = "89******", // CEP
subMerchantId = "545*********", // Identificador único
merchantCategoryCode = "7399", // Informação que consta na tabela de CNAEs
name = "VAREJO LTDA", // Razão Social da empresa
voucherPv = "a9f3b7c1d2e8f4g" // Código de cadastro na adquirente (Opcional, mínimo 8 e máximo 15 caracteres)
)
Na classe ExternalSeller, o campo voucherPv é opcional (Mínimo 8 e máximo 15 caracteres).
val tapOnPhone = TapOnPhone()
val externalSeller = ExternalSeller(
addressLine = "Avenida **********, ***", // Endereço
softDescriptor = "SDESC TESTE", // Descrição
cpfCnpj = "**************", // CPF ou CNPJ
state = "SP", // UF
city = "Campinas", // Cidade
country = "076", // Codigo do País
phoneNumber = "+55***********", // Número de telefone
zipCode = "89******", // CEP
subMerchantId = "545*********", // Identificador único
merchantCategoryCode = "7399", // Informação que consta na tabela de CNAEs
name = "VAREJO LTDA", // Razão Social da empresa
voucherPv = "a9f3b7c1d2e8f4g" // Código de cadastro na adquirente (Opcional, mínimo 8 e máximo 15 caracteres)
)
// Depois de inicializado com sucesso
coroutineScope.launch {
tapOnPhone.payByGateway(
payRequest = PaymentRequest(
amount = 10000, // R$ 10,00
paymentType = PaymentType.CREDIT,
installments = 2,
referenceId = UUID.randomUUID().toString(),
externalSeller = externalSeller,
),
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}")
},
)
}
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
)
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
)
}