Realizar una transacción
Una vez se han recuperado los datos de la tarjeta durante el proceso de lectura, es posible dar inicio al proceso de pago.
Paso a paso
- Instanciar el objeto
DoProcessAdquirerOperationData. - Invocar le método
doOperationy pasarle como parámetro el tipo de operación. - Configurar un observer para recibir el resultado.
Ejemplo de implementación
private val operationFlow: OperationFlow?
get() = OperationFlowHolder.operationFlow
val doPayment = DoProcessAdquirerOperationData(
context = this,
version = "",
transactionDate = DateUtil.getLocalDateTimeWithOffset(),
dataFlow = operationFlow
)
doPayment.doOperation(operationType = OperationType.PAYMENT)
doPayment.operationResponse.observe(this) {
it.data?.let { response ->
val operationResponse = response as Adquirer
if (operationResponse.status?.code == OperationResponseCode.APPROVED) {
Log.i(TAG, "Pago aprobado!")
Log.i(TAG, "PaymentId: ${operationResponse.id}")
} else {
Log.i(TAG, "Pago declinado!")
}
} ?: run {
Log.i(TAG, "Pago no procesado!")
}
}Códigos de respuesta
El resultado de la transacción se recibe mediante el objeto Adquirer.
En la siguiente tabla se muestran los diferentes códigos de error, estos se recuperan desde Adquirer.status.code
| Código | Descripción |
|---|---|
| MESSAGE_PAUSED_ERROR | El merchant o customer que se están usando, están temporalmente pausados. |
| MESSAGE_PAUSED_DELETED | El merchant o customer que se están usando, han sido eliminados. |
| REJECT | Transacción declinada. |
| APPROVED | Transacción aprobada. |
| MESSAGE_GENERAL_ERROR | Error default no determinado. |
| MESSAGE_NOT_ALLOWED | No tiene permisos para realizar la transacción. Por ejemplo: Si se intenta realizar un pago en dólares y este feature no se encuentra activo en la configuración del comercio. |
| MESSAGE_EXPIRED_SESSION | El token de sesión ha expirado. |