Pagos a Distancia
Esta sección contiene la documentación para las siguientes funcionalidades de pagos a distancia:
- Crear un pago a distancia
- Consultar el historial de pagos a distancia
- Consultar los detalles de un pago a distancia
- Cancelar un pago a distancia

Pantallas del flujo de pagos 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) {
}
});