Obtener el historial de transacciones
El SDK de Clip permite obtener el historial de transacciones que se han realizado.
Las funciones disponibles para trabajar con el historial son las siguientes:
- search(): permite realizar una búsqueda de transacciones del mismo día y aplicar distintos filtros.
- detail(): muestra detalles para una transacción individual.
- refund(): realiza el reembolso de una transacción.
La siguiente tabla muestra los elementos en el objeto de respuesta ClipTransaction que regresan las funciones anteriores:
Elemento |
Descripción |
Tipo de dato |
|||
receiptNumber |
Identificador único de la transacción |
String |
|||
amount |
Cantidad del pago |
BigDecimal |
|||
tip |
Cantidad de la propina |
BigDecimal |
|||
totalAmount |
Cantidad total del pago incluyendo propina |
BigDecimal |
|||
cardType |
Tipo de tarjeta utilizada para el pago:
|
Object, string |
|||
last4 |
Últimos cuatro dígitos de la tarjeta utilizada para el pago |
String |
|||
installment |
Indica si el pago se difiere en mensualidades |
String |
|||
walletAmount |
Cantidad a pagar con monedero electrónico |
BigDecimal |
|||
walletType |
Tipo de monedero
|
Object |
|||
walletSubType |
Clasificación de la tarjeta de puntos. Posibles tipos de tarjetas:
|
String |
|||
merchantInvoiceId |
Referencia alfanumérica proporcionada por el vendedor |
String |
|||
status |
Estado de la transacción. Lista de posibles estados de la transacción:
|
Object, string |
|||
currency |
Código de divisa para la transacción del pago conforme a ISO 4217 |
String |
|||
paymentDate |
Fecha de creación del pago |
Date |
|||
location |
Objeto que contiene la información de ubicación |
Object |
|||
|
longitude |
Coordenada de longitud para la ubicación de la transacción |
Double |
||
|
latitude |
Coordenada de latitud para la ubicación de la transacción |
Double |
Buscar transacciones en el historial
Implementa la siguiente función para buscar transacciones en el historial:
ClipHistory.search(SearchParamsRequest.byDate(date: Date, page: Int), object : ClipHistoryListener.OnSearchSuccessListener {
override fun onSearchSuccess(response: List<ClipTransaction>?) {
}
}, , object : ClipHistoryListener.OnErrorListener {
override fun onError(error: StatusCode.ClipError) {
}
})
ClipHistory.search(SearchParamsRequest.byDate(Date date, int page), new ClipHistoryListener.OnSearchSuccessListener() {
@Override
public void onSearchSuccess(@Nullable List<ClipTransaction> list) {
}
}, new ClipHistoryListener.OnErrorListener() {
@Override
public void onError(@NotNull StatusCode.ClipError clipError) {
}
});
La siguiente tabla incluye una descripción para los parámetros de la función:
Elemento |
Descripción |
|
SearchParamsRequest |
Función de búsqueda |
|
|
.byCardNumber |
Realiza la búsqueda por el número de tarjeta utilizada para el pago |
|
.byDate |
Realiza la búsqueda por la fecha del pago |
|
.byDateRange |
Realiza la búsqueda por un rango de fechas definido |
|
.byReceiptNumber |
Realiza la búsqueda por el número de recibo que identifica al pago |
CardNumber: El objeto CardNumber está compuesto por los últimos 4 dígitos que aparecen en la tarjeta.
Elemento |
Descripción |
Tipo de dato |
|||
value |
L os últimos 4 dígitos que aparecen en la tarjeta. El regex que se valida es: ^\d{0,4}$ De no cumplir con el formato especificado, se regresará una excepción de tipo: InvalidParameterFormat. |
String |
ReceiptNumber: El objeto ReceiptNumber representa el número de recibo generado por Clip al concluir una transacción de manera exitosa.
Elemento |
Descripción |
Tipo de dato |
|||
value |
Número de recibo generado por Clip. El regex que se valida es: ^[a-zA-Z0-9-_]{0,}$ De no cumplir con el formato especificado, se regresará una excepción de tipo: InvalidParameterFormat. |
String |
Mostrar los detalles de una transacción
Implementa la siguiente función para mostrar los detalles de una transacción en específico:
ClipHistory.detail(receiptNumber: ReceiptNumber, object : ClipListener<ClipTransaction?> {
override fun onCompleteListener(response: ClipTransaction?, error: StatusCode.ClipError?) {}
})
ClipHistory.detail(ReceiptNumber receiptNumber, new ClipListener<ClipTransaction?>() {
@Override
public void onCompleteListener(@Nullable ClipTransaction clipTransaction, @Nullable StatusCode.ClipError error) {
}
});
La siguiente tabla incluye una descripción para los parámetros de la función:
Elemento |
Descripción |
|
receiptNumber |
Realiza la búsqueda por el número de recibo que identifica al pago |
|
timeZone |
Representación de la zona horaria. |
Realizar una devolución de transacción
Implementa la siguiente función para realizar una devolución de transacción en específico:
ClipRefund.refund(receiptNumber: ReceiptNumber, object : ClipListener<Boolean> {
override fun onCompleteListener(response: Boolean, error: StatusCode.ClipError?) {}})
ClipRefund.refund(ReceiptNumber receiptNumber, new ClipHistoryListener<Boolean>() {
@Override
public void onCompleteListener(boolean response, @Nullable StatusCode.ClipError error) {
}
}});
La siguiente tabla incluye una descripción para los parámetros de la función:
Elemento |
Descripción |
|
receiptNumber |
Número de recibo que identifica la transacción a realizar el reembolso |
Configurar los ajustes del dispositivo
La librería de Clip permite configurar ciertos ajustes del dispositivo desde tu aplicación de Android.
Actualmente, los ajustes de configuración que se pueden consultar son:
- Batería: muestra el nivel de batería en el dispositivo Clip.
- Firmware: muestra la versión de firmware instalada en el dispositivo Clip.
- Tiempo de apagado: permite configurar el tiempo de apagado automático en tu Clip Plus 2 para ahorrar batería.
- Sesión de Clip: la sección de ajustes permite cerrar sesión en la cuenta Clip.
- Lector conectado: permite conectar o desconectar un lector Clip por medio de conexión Bluetooth.
Nota
La configuración de Tiempo de apagado solo está disponible para el dispositivo Clip Plus 2.
Para agregar la función de configuración de ajustes, en el listener del botón tu aplicación Android, agrega la siguiente función:
ClipApi.showSettingsActivity(activity: Activity, loginEnabled: Boolean, logoutEnabled: Boolean, requestCode: Integer)
ClipApi.showSettingsActivity(Activity activity, boolean loginEnabled, boolean logoutEnabled, requestCode: Integer);
La siguiente tabla incluye una descripción para los parámetros de la función:
Elemento |
Tipo de Dato |
Descripción |
loginEnabled |
Boolean |
Permite mostrar un botón de Login dentro de la pantalla de ajustes. |
logoutEnabled |
Boolean |
Permite mostrar un botón de Logout dentro de la pantalla de ajustes. |
Pagos a distancia
El SDK de Clip permite que con tu propia aplicación de Android generes enlaces para pagos a distancia.
Esta sección incluye cómo implementar las siguientes funciones:
- Crear un enlace para pago a distancia
- Consultar el historial y realizar búsquedas
- Consultar detalles individuales de un pago a distancia
- Cancelar un enlace de pago a distancia
Crear un pago a distancia
Para poder generar un URL de pago a distancia, es necesario llamar a la siguiente función:
ClipApi.launchRemotePaymentActivity(activity: Activity, amount: BigDecimal, requestCode: Int)
ClipApi.launchRemotePaymentActivity(Activity activity, BigDecimal amount, int requestCode);
Nota:
Esta función valida que el formato de la cantidad sea de máximo 5 cifras y 2 decimales. Cualquier cantidad mayor a 99999.99 regresa un código de error 12005.
Mira cómo hacerlo
Consulta la receta con los pasos necesarios para crear un enlace de pago a distancia en tu proyecto.
Consultar el historial de pagos a distancia
Para agregar la función de historial de pagos a tu aplicación, el primer paso es crear un objeto con el tipo de filtro que se desea aplicar.
Los diferentes tipos de búsqueda que incluye este método son:
- Fecha
- Rango de fechas
- Cantidad
- Correo electrónico del cliente
- Código de enlace de pago
Para buscar por cantidad del enlace de pago:
val query = SearchParamsRequest.byAmount(amount: String, page: Int)
Map<String, String> query = SearchParamsRequest.byAmount(String amount, int page);
Para buscar por dirección de correo electrónico del cliente:
val query = SearchParamsRequest.byCustomerEmail(customerEmail: String, page: Int)
Map<String, String> query = SearchParamsRequest.byCustomerEmail(String customerEmail, int page);
Para buscar por fecha:
val query = SearchParamsRequest.byDate(date: Calendar, page: Int)
Map<String, String> query = SearchParamsRequest.byDate(Calendar date, int page);
Para buscar por rango de fechas:
val query = SearchParamsRequest.byDateRange(dateFrom: Calendar, dateTo: Calendar, page: Int)
Map<String, String> query = SearchParamsRequest.byDateRange(Calendar dateFrom, Calendar dateTo, int page);
Para buscar por código del enlace de pago:
val query = SearchParamsRequest.byRequestNumber(requestCode: String, page: Int)
Map<String, String> query = SearchParamsRequest.byRequestNumber(String requestCode, int page);
Implementar el método de búsqueda:
Después de crear el método con el tipo o tipos de búsqueda a integrar en tu aplicación, agrega el método de búsqueda general.
Para agregar la función de historial de pagos a tu aplicación, implementa el siguiente método:
ClipRemotePayment.search(searchQuery: SearchQuery, object : ClipListener<RemotePaymentHistoryResponse?> {
override fun onCompleteListener(response: RemotePaymentHistoryResponse?, error: StatusCode.ClipError?) {
}
})
ClipRemotePayment.search(Map<String, String> searchQuery, new ClipListener<RemotePaymentHistoryResponse?>() {
@Override
public void onCompleteListener(@Nullable RemotePaymentHistoryResponse response, StatusCode.ClipError error) {
}
});
Filtrar el historial de pagos a distancia por estado de la transacción:
Adicionalmente, la lista de resultados del historial de pagos a distancia permite filtrar por estado de la transacción.
Los estados de transacción que puede tener un pago a distancia son:
- PENDING: estado pendiente de la transacción desde el momento de su creación hasta que se realiza el pago. Una transacción con estado pendiente tiene un tiempo de expiración de 72 horas.
- PAID: el pago a distancia ha sido completado de forma exitosa.
- CANCELLED: el pago a distancia fue cancelado antes de realizar el pago.
- OVERDUE: el pago no se completó dentro de las 72 horas de validez.
- REFUNDED: el pago fue reembolsado.
Para integrar el filtro por estado de transacción, crea el siguiente objeto:
val query = SearchParamsRequest.byStatus(status: RemotePaymentFilter, page: Int)
Map<String, String> query = SearchParamsRequest.byStatus(RemotePaymentFilter status, int page);
Los códigos de estado que actúan como parámetro son:
- RemotePaymentFilter.PENDING: 0
- RemotePaymentFilter.PAID: 1
- RemotePaymentFilter.CANCELLED: 2
- RemotePaymentFilter.OVERDUE: 3
- RemotePaymentFilter.REFUNDED: 4
La siguiente tabla describe los elementos que regresa la función en el objeto de respuesta RemotePaymentHistoryResponse:
Elemento |
Descripción |
Tipo de dato |
|||
RemotePaymentHistoryResponse |
Objeto que contiene los resultados de la consulta del historial
|
object |
|||
|
RemotePaymentItem |
Lista de objetos tipo RemotePaymentItem con información del historial de enlaces de pago a distancia. |
list |
||
|
|
requestId |
Identificador para la solicitud del enlace de pago. |
string |
|
|
|
requestCode |
Identificador para el pago, parámetro del enlace URL que se envía al cliente. |
string |
|
|
|
amount |
Cantidad a pagar. El límite actual para pagos a distancia es de 1500 pesos. |
big decimal |
|
|
|
customerEmail |
Correo electrónico del cliente |
string |
|
|
|
status |
Objeto que mapea el estado correspondiente del enlace de pago |
object |
|
|
|
|
RemotePaymentHistoryStatus |
Estado del enlace de pago al momento de la consulta. Posibles estados:
|
string |
|
|
createdDate |
Fecha de creación del enlace para pago a distancia |
date |
|
|
|
dueDate |
Fecha de expiración del enlace |
date |
|
|
RemotePaymentPagination |
Objeto de paginación para los resultados |
|
||
|
|
totalItems |
Número total de elementos que contiene la lista. |
integer |
|
|
|
itemsPerPage |
Especifica el número de elementos a mostrar en cada página. |
integer |
Consultar los detalles de un pago a distancia
Se consultan los detalles de una transacción por medio del identificador Request Code.
Para consultar los detalles de la transacción, agrega la siguiente función:
ClipRemotePayment.detail(requestCode: String, object : ClipListener<RemotePaymentDetailResponse?>{
override fun onCompleteListener(response: RemotePaymentDetailResponse, error: StatusCode.ClipError?) {
}
})
ClipRemotePayment.detail(String requestCode, new ClipListener<RemotePaymentDetailResponse>(){
@Override
public void onSuccess(@Nullable RemotePaymentDetailResponse response, @Nullable StatusCode.ClipError error) {
}
});
La siguiente tabla describe los elementos que regresa la función en el objeto de respuesta RemotePaymentDetailResponse:
Elemento |
Descripción |
Tipo de dato |
||
RemotePaymentDetailResponse |
Objeto que contiene los detalles de un pago a distancia |
object |
||
|
requestId |
Identificador para la solicitud del enlace de pago. |
string |
|
|
requestCode |
Identificador para el pago, parámetro del enlace URL que se envía al cliente. |
string |
|
|
amount |
Cantidad a pagar. El límite actual para pagos a distancia es de 1500 pesos. |
big decimal |
|
|
customerEmail |
Correo electrónico del cliente. |
string |
|
|
status |
Objeto que contiene información del estado del enlace de la transacción. |
object
|
|
|
|
RemotePaymentHistoryStatus |
Posibles estados:
|
|
|
createdDate |
Fecha de creación del enlace para pago a distancia. |
date |
|
|
dueDate |
Fecha de expiración del enlace de pago. |
date |
|
|
message |
Concepto personalizado al crear el enlace. |
string |
|
|
closedDate |
Fecha en que se finalizó el proceso de transacción. |
date |
|
|
link |
Enlace para el pago a distancia que contiene como parámetro el requestCode. |
string |
|
|
receiptNumber |
Número de recibo proporcionado por el cliente. |
string |
|
|
cardLast4 |
Últimos 4 dígitos del número de tarjeta utilizada para el pago. |
string |
Cancelar un pago a distancia
La librería del SDK de Clip permite cancelar un URL de pago a distancia antes de que se haya completado el pago.
La solicitud de un pago a distancia se identifica por un Request Code.
Para cancelar un pago a distancia, agrega la siguiente función:
ClipRemotePayment.cancel(requestCode: RequestCode, object : ClipListener<RemotePaymentDetailResponse?>{
override fun onCompleteListener(response: RemotePaymentDetailResponse?, error: StatusCode.ClipError?) {
}
})
ClipRemotePayment.cancel(RequestCode requestCode, new ClipListener<RemotePaymentDetailResponse>() {
@Override
public void onCompleteListener(@Nullable RemotePaymentDetailResponse response, @Nullable StatusCode.ClipError error) {
}
});