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
20592059

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

  • Lista del historial
  • Elemento de paginación

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:

  • PENDING: 0
  • PAID: 1
  • CANCELLED: 2
  • OVERDUE: 3
  • REFUNDED: 4

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:

  • PENDING: 0
  • PAID: 1
  • CANCELLED: 2
  • OVERDUE: 3
  • REFUNDED: 4

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) {
        
    }

});