Pagamento via cartão
Pagamento Via Cartão
Faz-se uso da classe mPOSPaymentRequestBuilder
.
Exemplo de pagamento
val paymentRequest = MPOSPlugin.createPaymentRequestBuilder()
.amount(5)
.option(Option.CREDIT)
.installments(1)
//.referenceId("") // Identificador próprio (opcional)
//.metadata(buildJsonObject {}) // Metadados adicionais (opcional)
//.externalSeller(ExternalSeller(...)) // External seller (opcional)
.callback(object: Callback<mPOSPaymentResponse>() {
override fun onStart() {
Log.d("mPOS", "onStart")
state = state.copy(status = Status.MESSAGE, message = "Iniciando")
}
override fun onSuccess(response: mPOSPaymentResponse) {
Log.d("mPOS", "onSuccess")
state = state.copy(status = Status.MESSAGE, message = "SUCESSO")
}
override fun onFail(error: Throwable) {
Log.d("mPOS", "onFail ${error.message}")
val message = if (error.message?.contains("invalid session") == true) {
"Não foi realizado um login"
} else {
error.message
}
state = state.copy(status = Status.MESSAGE, message = message ?: "Falha")
}
})
.messageCallback(object: Callback<MessageCallbackRequestField.MessageData>() {
override fun onSuccess(response: MessageCallbackRequestField.MessageData) {
Log.d("mPOS", "messageCallback ${response.message}")
state = state.copy(status = Status.MESSAGE, message = response.message)
}
override fun onFail(error: Throwable) {
Log.d("mPOS", "messageCallback fail")
}
})
.build()
Zoop.post(paymentRequest)
Parâmetros de Entrada
Chave | Tipo | Objetivo | Exemplo |
---|---|---|---|
amount | Long | Valor da transação (em centavos). | 2 (R$ 0,02) |
option | Option | Opção do pagamento (do tipo Option ). | Option.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 |
Opções de pagamento
Option.CREDIT // Crédito à vista
Option.CREDIT_WITH_INSTALLMENTS // Crédito parcelado
Option.DEBIT // Débito
Metadados em JsonObject
Para criar um objeto de JsonObject
, faça como no seguinte exemplo:
val metadata = buildJsonObject {
put("endereco","Avenida X")
put("parcelado", false)
put("tentativa", 1)
put("vencimento", "2024-02-15")
put("versao", "1.23.4")
}
External seller
data class ExternalSeller(
addressLine = "Avenida **********, ***", // Endereço.
softDescriptor = "SDESC TESTE", // Nome da empresa.
cpfCnpj = "***********", // CPF ou CNPJ, não é necessário adicionar máscara nesse campo.
state = "SP", // Estado.
city = "Campinas", // Cidade.
country = "076", // Sigla ou código do país.
phoneNumber = "+55***********", // O número de telefone deve iniciar com o código do país, DDD e o número.
zipCode = "89******", // CEP do cliente.
subMerchantId = "545*********", // Informação que identifica se a bandeira e o emissor possam discernir qual o estabelecimento que está.
merchantCategoryCode = "7399", // MCC do estabelecimento.
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)
)
Callbacks
.callback
Responsável pelo fluxo do pagamento, início, processamento, conclusão (sucesso/falha).
onStart
Esta callback é sinalizada quando o fluxo do pagamento começa, podendo ser sinalizado pela aplicação o início do processamento.
onSuccess
Neste momento, a transação foi aprovada, e você recebe o objeto do tipo mPOSPaymentResponse
, contendo um TransactionData
, acessível por response.transactionData
, contendo todos os dados da transação.
data class TransactionData(
val value: Int?, // Valor da transação em centavos
val paymentType: Int?, // Tipo de pagamento
val installments: Int?, // Parcelas
val status: String?, // Status (approved/canceled)
val brand: String?, // Marca do cartão ex: Visa
val address: String?, // Endereço do seller
val sellerName: String?, // Nome do seller
val acquiring: String?, // Adquirente
val pan: String?, // PAN do cartão
val autoCode: String?, // Código de autorização
val documentType: String?, // Tipo de documento, CPF/CNPJ
val document: String?, // Documento
val nsu: String?, // NSU
val date: String?, // Data da transação
val hour: String?, // Hora da transação
val cv: String?, // CV
val arqc: String?, // ARQC
val aid: String?, // AID
val sellerReceipt: String?, // Recibo do estabelecimento
val customerReceipt: String?, // Recibo do cliente
val approvalMessage: String?, // Mensagem de aprovação ex: APROVADA PELO EMISSOR
val aidLabel: String?, // Label do cartão
val transactionId: String?, // Id da transação
val receiptId: String? = null, // Id do recibo, caso aplicável (hoje, apenas transações Pix)
val pixId: String? = null, // Id do Pix
var cardFingerprint: String? = null, // Token único do cartão
val cardEntryMode: String? // Identifica qual o modo de entrada do cartão(TARJA, CHIP, NFC)
)
onFail
Falha na transação, é recebido um exception, podendo ser do tipo:
ZoopPaymentException
: Falha no fluxo do pagamento, neste caso, passamos a mensagem de erro, podendo ser acessada comoexception.message
.ZoopTimeoutException
: Tempo excedido na operação.ZoopClosedConnectionException
: Conexão interrompida.ZoopNetworkException
: Falha de conexão.
onComplete
Sinaliza o final do fluxo do pagamento, tanto em casos de sucesso/falha.
.messageCallback
Responsável pelas mensagens no fluxo do pagamento. Ex.: “Aproxime, insira ou passe o cartão”.
onSuccess
Mensagem a ser exibida pela aplicação para o usuário, acessada como response.message
.
onFail
Não recebe nenhum dado, esta callback não é chamada.