Objetivo

Niveles de Servicio y alcance

Diagrama de Flujo

Autenticación

Dispersiones SPEI

Notificaciones CEP

Cambio de Estado

Autenticación Consulta

U

Consulta Transacciones por Emisor

U

Consulta de Transacciones por Usuario

U

Consulta de Saldo

Especificaciones y complementos

J

Regresar

Este documento describe como crear una conexión con La Plataforma Tecnológica de CLUBPAGO que permita procesar en línea tus pagos recibidos en los puntos de venta afiliados a CLUBPAGO.

Definiciones y abreviaciones utilizadas

Abreviación Descripción
JSON (acrónimo de JavaScript Object Notation, «notación de objeto de JavaScript») es un formato de texto sencillo para el intercambio de datos
Mensajería Modelo de comunicación, Mensaje es la información dirigida de un emisor a un receptor. Donde ambos conocen la estructura y los conceptos de la información
PDV Punto de Venta
Timeout El tiempo estipulado de espera máxima para la respuesta entre emisor y receptor
EMISOR Es el proveedor de servicio que requiere el pago
Cliente Es el cliente final o usuario del servicio del Emisor. Es el que acude al PDV y realiza el pago
Referencia Identificador de pago que presenta el Cliente al realizar su pago
URL Uniform Resource Locator, es la dirección específica que se asigna a cada uno de los recursos disponibles en la red con la finalidad de que estos puedan ser localizados o identificados.
HTTPS Protocolo de conectividad seguro utilizado para la Mensajería
SPEI Sistema de Pagos Electrónicos Interbancarios para pagos entre cuentas de bancos en México.

NIVELES DE SERVICIO

Disponibilidad de servicio plataforma CLUBPAGO 99%

Tiempo de espera máxima por respuesta al EMISOR o Proveedor

15 segundos
Tiempo compromiso de procesamiento de un pago, desde la captura de referencia, hasta concluir con recepción de pago 30 segundos

Alcance

Con la utilización de nuestra herramienta tecnológica GENERADOR DE REFERENCIAS y API en línea tu plataforma realiza la generación de referencia de retiro para que tus clientes pueden disponer de efectivo en las cadenas comerciales autorizadas.

Con este conector también podrás enviar dispersiones por SPEI (Transferencias electrónicas). Previamente se proporcionará una Cuenta Clabe para el fondeo de la cuenta de dispersión. EL Emisor vía API enviará solicitud de dispersión al conector de CLUBPAGO, solicitud que será procesada por CLUBPAGO y posteriormente enviará respuesta al Emisor.

DIAGRAMA DE FLUJO SPEI

 

1.- Dispersiones por SPEI

1.- Emisor envía la solicitud de dispersión..

2.- ClubPago recibe solicitud y procesa la dispersión.

3.- Procesador de dispersiones ejecuta la transferencia electrónica y envía respuesta a ClubPago.

4.- Club Pago recibe respuesta del procesador y envía notificación al Emisor.

SERVICIOS WEB A IMPLEMENTAR POR EL EMISOR

La Plataforma CLUBPAGO podrá solicitar los siguientes SERVICIOS WEB, los cuales serán llamados por HTTPS

1. Dispersión por SPEI
2.- Notificaciones CEP
3.- Notifiaciones de Cambio de Estado
4.- Servicios de Consulta

 

SERVICIO DE AUTENTICACIÓN

AUTENTICACIÓN PARA EL EMISOR

CLUBPAGO entregará un TOKEN que funcionará como identificador Único para el EMISOR. Este TOKEN es de longitud variable y se forma de letras y números

Método: Post

https://qa.clubpago.site/plat/apiDispersiones/token

Parámetros

Nombre Tipo Descripción Obligatorio
User Alfanúmerico Usuario del sistema SI
Pswd Alfanúmerico Contraseña SI

Petición enviada por CLUBPAGO

El Emisor llamará a este servicio mediante un método HTTP POST, utilizando las reglas de autenticación de CLUBPAGO. El contenido de la petición será de tipo application/json, codificado en UTF-8

Ejemplo de Solicitud :

{
    “User”: “Disper”,
    “Pswd”: “DisperDisperf/8sx$%#!”
}

var options = new RestClientOptions("")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("https://qa.clubpago.site/Plat/apiDispersiones/token", Method.Post);
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@"  ""User"": ""Disper""," + "\n" +
@"  ""Pswd"": ""Disper Disperf/8sx$%#!""" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://qa.clubpago.site/Plat/apiDispersiones/token")
.header("Content-Type", "application/json")
.body("{\n\t\"User\": \"Disper\",\n\t\"Pswd\": \"DisperDisperf/8sx$%#!\"\n}")
.asString(); 
<?php
$curl = curl_init();
curl_setopt_array($curl, array( CURLOPT_URL => 'https://qa.clubpago.site/Plat/apiDispersiones/token', CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
  "User": "Disper",
  "Pswd": "DisperDisperf/8sx$%#!"
}',
CURLOPT_HTTPHEADER => array(
  'Content-Type: application/json'
),
));
 $response = curl_exec($curl);
 curl_close($curl);
echo $response;
curl --location 'https://qa.clubpago.site/Plat/apiDispersiones/token' \
--header 'Content-Type: application/json' \
--data '{
"User": "Disper",
"Pswd": "Disper Disperf/8sx$%#!"
}'

Ejemplo de Respuesta

{
” Message “: “Token generado exitosamente”,
” Token “:” eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNjM3OWZj Ni01NDNlLTRhZmMtOWZhYy01NjgxN
GY1MzdkZmIiLCJVc2VySWQiOiIyNDQiLCJFbWlzb3JJZCI6IjYyOCIsIlVzZXJOYW1lIjoiRW1pOTUwSEIiLCJu
YmYiOjE3NzAxMzczMDEsImV4cCI6MTc3MDI0MTcwMSwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbH
VicGFn by5teCJ9.GXm1avm0tMKcaVpfXSOohB9nu4y0BB4mqzAhGhOhIS4”,
“Expiration”: “00260103012505307001”,
}

SERVICIO DE DISPERSIÓN POR SPEI

El servicio de dispersión será llamado por el EMISOR cuando un cliente solicite dispersión por SPEI, el conector de CLUBPAGO recibe la solicitud y la procesa al recibir la respuesta del procesador de dispersiones recibe la respuesta y envía la notificación al EMISOR.

CLUBPAGO entregará un TOKEN que funcionará como identificador Único para el EMISOR. Este TOKEN es de longitud variable y se forma de letras y números

Método: Post

https://qa.clubpago.site/Plat/apiDispersiones/EnviaDispersion

Parámetros

Nombre Tipo Descripción Obligatorio
NombreCliente Alfabético Nombre del beneficiario SI
Monto Numérico Monto a transferir SI
Clabe/Tarjeta Numérico Clabe Interbancaria o Tarjeta Crédito o Débito SI
IdBanco Numérico Identificador del banco SI
Telefono Numérico Número de teléfono SI
Correo Alfabético Correo Electrónico SI
IdExterno Alfabético Identificador de transacción único NO

Nota: Para obtener IdBanco lo puedes consultar desde la siguiente dirección: https://www.banxico.org.mx/cep-scl/listaInstituciones.do

Ejemplo

Id Banco
40062 AFIRME
40127 AZTECA
40072 BANORTE
40012 BBVA MEXICO
40021 HSBC
40036 INBURSA
40014 SANTANDER
90646 STP

Respuesta del servicio

El servicio espera una respuesta HTTP 200 OK, con un cuerpo de tipo application/json con los siguientes campos:

Nombre Tipo Descripción Obligatorio
Code Numérico 2 El código de respuesta indicando el resultado de la autorización.
Response Alfanumérico 255 Una descripción del error, en caso de una autorización fallida.
Esto solo es usado por CLUBPAGO para revisión de posibles errores.
TransactionID Numérico 16 Id de la transacción enviada por CLUBPAGO.
FolioAuth Numérico 10 Un número que identifique el pago, en caso de una autorización exitosa.
ClaveRastreo Numérico 30 Identificador único de transacción bancaria SPEI

Códigos de Respuesta

El servicio autorizador debe de regresar un código indicando el resultado de la autorización:

CÓDIGO DESCRIPCIÓN CAUSA
00 Solicitud de dispersión exitosa. La información de la solicitud de dispersión es correcta.
700 Servicio de dispersión no disponible Plataforma de dispersiones no disponible
701 Nombre del cliente necesario. No se ingresó el nombre del beneficiario.
702 Monto debe ser mayor a 0. No se ingresó el monto de la dispersión.
703 La cuenta clabe es requerida. No se ingresó la cuenta clabe del beneficiario.
704 Id de banco inválido. No se ingresó el número de Id del banco del beneficiario.
705 Teléfono necesario. No se ingresó el número de teléfono del beneficiario.
706 Sin configuración para realizar dispersión No existe configuración en plataforma de dispersiones
707 Monto fuera de los rangos configurados. El monto de la dispersión esta fuera del rango configurado enplataforma ClubPago.
708 Cuenta clabe no pertenece a banco seleccionado. La cuenta Clabe pertenece a otra institución bancaria.
709 Dígito verificador incorrecto de clabe. Error en el digito verificador no coincide con la cuenta clabe.
710 Cuenta clabe debe ser de 18 dígitos. Se ingresó Cuenta Clabe con error en la longitud de los dígitos.
711 Dispersión fallida. Se presenta problema en la dispersión.
712 Servicio de dispersión no habilitado. El Emisor o el servicio de dispersión se encuentra deshabilitado.
713 Correo electrónico del cliente necesario El campo correo electrónico es obligatorio.
714 Devuelto-retorno La dispersión fue devuelta.
715 Devuelto-tipo de operación errónea Error en el tipo de operación.
716 Devuelto-excede el límite de saldo autorizado de la cuenta Excedió el límite del saldo autorizado.
717 Devuelto-cuenta inexistente La cuenta no existe.
718 Devuelto-excede el límite de abonos permitidos en el mes en la cuenta Excedió el límite de transacciones al mes para esa cuenta.
719 Excede la longitud del campo beneficiario (40) Ingresó más de 40 caracteres en el campo beneficiario.
720 La tarjeta debe ser de 16 dígitos No se ingresaron 16 dígitos de tarjeta.
721 Tarjeta no pertenece a banco seleccionado Error al ingresar Id de banco.
722 Digito verificador incorrecto de la tarjeta Error en dígito verificador.
723 El emisor no cuenta con saldo para retiros Sin saldo para dispersar.
724 No se pudo obtener el listado de transacciones No se pudo realizar la consulta.
725 Devuelto-cuenta bloqueada Se rechazó por cuenta está bloqueada.
726 Devuelto-falta información mandatorio para completar el pago Se rechazó por falta de información obligatoria.
727 La operación supera el límite permitido El monto de la operación supero el límite autorizado.
728 Operación previamente enviada Transacción duplicada.
729 Origen no soportado IP no autorizada para él envió de solicitud de dispersión.
730 Devuelto cuenta cancelada Se rechazó por cuenta cancelada.
731 Devuelto cuenta no pertenece al participante receptor Se rechazó porque la cuenta no pertenece al beneficiario.
732 Devuelto tipo de cuenta no corresponde Se rechazó porque la cuenta que se ingresó es diferente a la que pertenece (tarjeta /cuenta).

 

Ejemplo de Solicitud Dispersión:

{
   “NombreCliente”: “Angel Maldonado Prueba”,
    “Monto”:100,
    “Clabe”:”012060015789314962″,
    “IdBanco”: 40012,
    “Telefono”:”8712627115″,
    “Correo”: “amaldonado@clubpago.mx”,
    “Concepto”:”Envío de dinero”,
    “IdExterno”:”1129″
}

var options = new RestClientOptions("https://qa.clubpago.site")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/Plat//apiDispersiones/EnviaDispersion", Method.Post);
request.AddHeader("Authorization", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY");
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@"  ""NombreCliente"": ""Angel Maldonado Prueba""," + "\n" +
@"    ""Monto"":100," + "\n" +
@"    ""Clabe"":""012060015789314962""," + "\n" +
@"    ""IdBanco"": 40012," + "\n" +
@"    ""Telefono"":""8712627115""," + "\n" +
@"  ""Correo"": ""amaldonado@clubpago.mx""," + "\n" +
@"    ""Concepto"":""Envío de dinero""," + "\n" +
@"    ""IdExterno"":""1130""" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://qa.clubpago.site/Plat//apiDispersiones/EnviaDispersion")
.header("Authorization", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY")
.header("Content-Type", "application/json")
.body("{\n\t\"NombreCliente\": \"Angel Maldonado Prueba\",\n    \"Monto\":100,\n    \"Clabe\":\"012060015789314962\",\n    \"IdBanco\": 40012,\n    \"Telefono\":\"8712627115\",\n\t\"Correo\": \"amaldonado@clubpago.mx\",\n    \"Concepto\":\"Envío de dinero\",\n    \"IdExterno\":\"1130\"\n}")
.asString(); 
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://qa.clubpago.site/Plat//apiDispersiones/EnviaDispersion',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"NombreCliente": "Angel Maldonado Prueba",
"Monto":100,
"Clabe":"012060015789314962",
"IdBanco": 40012,
"Telefono":"8712627115",
"Correo": "amaldonado@clubpago.mx",
"Concepto":"Envío de dinero",
"IdExterno":"1130"
}',
  CURLOPT_HTTPHEADER => array(
 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY',
  'Content-Type: application/json'
  ),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location 'https://qa.clubpago.site/Plat//apiDispersiones/EnviaDispersion' \
--header 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "NombreCliente": "Angel Maldonado Prueba",
  "Monto":100,
  "Clabe":"012060015789314962",
  "IdBanco": 40012,
  "Telefono":"8712627115",
  "Correo": "amaldonado@clubpago.mx",
  "Concepto":"Envío de dinero",
  "IdExterno":"1130"
}'

Ejemplo de Respuesta Dispersión:

{
    “code”: “00”,
    “response”: “Solicitud de dispersión exitosa”,
    “transactionID”: 782,
    “folioAuth”: “14782”,
    “ClaveRastreo”“EC1D58137947DDB1E96F8044”
}

Dispersión Tarjeta

El servicio de dispersión será llamado por el EMISOR cuando un cliente solicite dispersión por SPEI con tarjeta , el conector de CLUBPAGO recibe la solicitud y la procesa al recibir la respuesta del procesador de dispersiones recibe la respuesta y envía la notificación al EMISOR.

La estructura de la solicitud será la siguiente:

Método: Post

https://qa.clubpago.site/Plat/apiDispersiones/EnviaDispersionTarjeta

Ejemplo de Solicitud Dispersión Tarjeta:

{
    "NombreCliente": "Angel Maldonado Prueba",
  "Monto":300,
  "Tarjeta":"5204166116668296",
  "IdBanco": 40002,
  "Telefono":"8712627115",
  "Correo": "amaldonado@clubpago.mx",
  "Concepto":"Envío de dinero"
}

var options = new RestClientOptions("https://qa.clubpago.site")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("/Plat//apiDispersiones/EnviaDispersion", Method.Post);
request.AddHeader("Authorization", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY");
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@"  ""NombreCliente"": ""Angel Maldonado Prueba""," + "\n" +
@"    ""Monto"":100," + "\n" +
@"    ""Clabe"":""012060015789314962""," + "\n" +
@"    ""IdBanco"": 40012," + "\n" +
@"    ""Telefono"":""8712627115""," + "\n" +
@"  ""Correo"": ""amaldonado@clubpago.mx""," + "\n" +
@"    ""Concepto"":""Envío de dinero""," + "\n" +
@"    ""IdExterno"":""1130""" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://qa.clubpago.site/Plat//apiDispersiones/EnviaDispersion")
.header("Authorization", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY")
.header("Content-Type", "application/json")
.body("{\n\t\"NombreCliente\": \"Angel Maldonado Prueba\",\n    \"Monto\":100,\n    \"Clabe\":\"012060015789314962\",\n    \"IdBanco\": 40012,\n    \"Telefono\":\"8712627115\",\n\t\"Correo\": \"amaldonado@clubpago.mx\",\n    \"Concepto\":\"Envío de dinero\",\n    \"IdExterno\":\"1130\"\n}")
.asString(); 
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://qa.clubpago.site/Plat//apiDispersiones/EnviaDispersion',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"NombreCliente": "Angel Maldonado Prueba",
"Monto":100,
"Clabe":"012060015789314962",
"IdBanco": 40012,
"Telefono":"8712627115",
"Correo": "amaldonado@clubpago.mx",
"Concepto":"Envío de dinero",
"IdExterno":"1130"
}',
  CURLOPT_HTTPHEADER => array(
 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY',
  'Content-Type: application/json'
  ),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
curl --location 'https://qa.clubpago.site/Plat//apiDispersiones/EnviaDispersion' \
--header 'Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY' \
--header 'Content-Type: application/json' \
--data-raw '{
  "NombreCliente": "Angel Maldonado Prueba",
  "Monto":100,
  "Clabe":"012060015789314962",
  "IdBanco": 40012,
  "Telefono":"8712627115",
  "Correo": "amaldonado@clubpago.mx",
  "Concepto":"Envío de dinero",
  "IdExterno":"1130"
}'

Ejemplo de Respuesta Dispersión Tarjeta:

{
    “code”: “00”,
    “response”: “Solicitud de dispersión exitosa”,
    “transactionID”: 783,
    “folioAuth”: “14783”,
    “ClaveRastreo”: “489E18C71144618236E06FC4”
}

SERVICIO DE NOTIFICACIONES CEP

ClubPago proporciona el Servicio de Notificaciones CEP para que el emisor pueda validar el CEP de la transacción realizada, esto únicamente en operaciones de $0.01.

El servicio de notificaciones de CEP será llamado por ClubPago y notificado al WEBHOOK que el
Emisor proporcione a ClubPago.

La estructura de la solicitud será la siguiente:

El cuerpo de la petición contendrá un objeto JSON con las siguientes propiedades:

Parámetros

 

Nombre Tipo Descripción Obligatorio
rfcCepgo Alfabético RFC del beneficiario SI
urlCEP Numérico URL del CEP SI
nombreCep Alfabético Nombre del beneficiario SI
empresa Alfabético Nombre de la empresa validadora SI
Fecha de Operación Numérico Fecha de Operación SI
Sello Alfabético Firma Electrónica emitida por Banxico SI
Clave Rastreo Alfabético Clave de Rastreo SI
Cuenta Beneficiario Alfabético Cuenta del beneficiario SI

Ejemplo de WEBHOOK solicitud:

Metódo POST:

https://webhook.site/e8f59c0c-4805-46f4-b69f-0b29baee0ec6
{
"rfcCep": "JIGE990426515",
"urlCEP":"https://www.banxico.org.mx/cep/goi=90646&s=20210302&d=LB2S5j3JuJ7pKCRn5f00YuUEVz%2FkspOOejm%2Fxl7kFGgafeqGzIA8yJxAWol5%2FusgfeN1pIUfRAJGjg%2BB9hQPRlW6ahS8CXZxfK2qRNN375A%3D",
"nombreCep": "ELIZABETH JIMENEZ GARCIA",
"empresa": "CPAGODISPER",
"fechaOperacion": "20260309",
"sello": "fc/Kvtr0RBMZBQ4fvTlEbrGGsjHexATgNfb3dQxBiUvFxK7QSTFs1agKQ7iEXgal3N6GXxrZ5OMakkVPrc4esyI9iLv91m+P6uXKwTpoomdN2IxDo+hRbBqzOK88DhVN7+B3kB+6fhitGWwSQzJTYInvXn0x1+2qhGv2ZpAGnJUtIW9yYr2xuSrFs2M9J7bg7PAmvPOJfZh1GoLC3dXOFcaBsRSyA7kvFVXrFWZ6HnlI9y/iH1XlZzqmWwOwzzf3vuNsz1lWfW0rhLymxqTiwAmftP/QxvnOTm/gWiTd5LPjK6NRPXVeDipQJTz9pKSXVSKnrhTylyAdssGY+JqsEg==",
"claveRastreo": "56DAE3E33942B1B727256B7B",
"cuentaBeneficiario": "127180016376644864"
}
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://webhook.site/0dd9c237-af02-4203-b27e-1a4d02b6f680")
.header("X-Origin", "TmpNd04yVXhaV1poTlRBMVl6STVPREpqTURG")
.header("User-Agent", "CPAPI_AGNT_V1")
.header("Content-Type", "application/json")
.body("{\r\n    \"rfcCep\": \"JIGE990426515\",\r\n    \"urlCEP\": \"https://www.banxico.org.mx/cep/go?i=90646&s=20210302&d=LB2S5j3JuJ7pKCRn5f00YuUEVz%2FkspOOejm%2Fxl7kFGgafeqGzIA8yJxAWol5%2FusgfeN1pIUfRAJGjg%2BB9hQPRlW6ahS8CXZxfK2qRNN375A%3D\",\r\n    \"nombreCep\": \"ELIZABETH JIMENEZ GARCIA\",\r\n    \"empresa\": \"CPAGODISPER\",\r\n    \"fechaOperacion\": \"20260309\",\r\n    \"sello\": \"fc/Kvtr0RBMZBQ4fvTlEbrGGsjHexATgNfb3dQxBiUvFxK7QSTFs1agKQ7iEXgal3N6GXxrZ5OMakkVPrc4esyI9iLv91m+P6uXKwTpoomdN2IxDo+hRbBqzOK88DhVN7+B3kB+6fhitGWwSQzJTYInvXn0x1+2qhGv2ZpAGnJUtIW9yYr2xuSrFs2M9J7bg7PAmvPOJfZh1GoLC3dXOFcaBsRSyA7kvFVXrFWZ6HnlI9y/iH1XlZzqmWwOwzzf3vuNsz1lWfW0rhLymxqTiwAmftP/QxvnOTm/gWiTd5LPjK6NRPXVeDipQJTz9pKSXVSKnrhTylyAdssGY+JqsEg==\",\r\n    \"claveRastreo\": \"56DAE3E33942B1B727256B7B\",\r\n    \"cuentaBeneficiario\": \"127180016376644864\"\r\n}")
.asString();
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://qa.clubpago.site/Plat//apiDispersiones/EnviaDispersion")
.header("Authorization", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY")
.header("Content-Type", "application/json")
.body("{\n\t\"NombreCliente\": \"Angel Maldonado Prueba\",\n    \"Monto\":100,\n    \"Clabe\":\"012060015789314962\",\n    \"IdBanco\": 40012,\n    \"Telefono\":\"8712627115\",\n\t\"Correo\": \"amaldonado@clubpago.mx\",\n    \"Concepto\":\"Envío de dinero\",\n    \"IdExterno\":\"1130\"\n}")
.asString(); 
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://webhook.site/0dd9c237-af02-4203-b27e-1a4d02b6f680',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"rfcCep": "JIGE990426515",
"urlCEP": "https://www.banxico.org.mx/cep/go?i=90646&s=20210302&d=LB2S5j3JuJ7pKCRn5f00YuUEVz%2FkspOOejm%2Fxl7kFGgafeqGzIA8yJxAWol5%2FusgfeN1pIUfRAJGjg%2BB9hQPRlW6ahS8CXZxfK2qRNN375A%3D",
"nombreCep": "ELIZABETH JIMENEZ GARCIA",
"empresa": "CPAGODISPER",
"fechaOperacion": "20260309",
"sello": "fc/Kvtr0RBMZBQ4fvTlEbrGGsjHexATgNfb3dQxBiUvFxK7QSTFs1agKQ7iEXgal3N6GXxrZ5OMakkVPrc4esyI9iLv91m+P6uXKwTpoomdN2IxDo+hRbBqzOK88DhVN7+B3kB+6fhitGWwSQzJTYInvXn0x1+2qhGv2ZpAGnJUtIW9yYr2xuSrFs2M9J7bg7PAmvPOJfZh1GoLC3dXOFcaBsRSyA7kvFVXrFWZ6HnlI9y/iH1XlZzqmWwOwzzf3vuNsz1lWfW0rhLymxqTiwAmftP/QxvnOTm/gWiTd5LPjK6NRPXVeDipQJTz9pKSXVSKnrhTylyAdssGY+JqsEg==",
"claveRastreo": "56DAE3E33942B1B727256B7B",
"cuentaBeneficiario": "127180016376644864"
}',
CURLOPT_HTTPHEADER => array(
'X-Origin: TmpNd04yVXhaV1poTlRBMVl6STVPREpqTURG',
'User-Agent: CPAPI_AGNT_V1',
'Content-Type: application/json'
),

));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

curl --location 'https://webhook.site/0dd9c237-af02-4203-b27e-1a4d02b6f680' \
--header 'X-Origin: TmpNd04yVXhaV1poTlRBMVl6STVPREpqTURG' \
--header 'User-Agent: CPAPI_AGNT_V1' \
--header 'Content-Type: application/json' \
--data '{
"rfcCep": "JIGE990426515",
"urlCEP": "https://www.banxico.org.mx/cep/go?i=90646&s=20210302&d=LB2S5j3JuJ7pKCRn5f00YuUEVz%2FkspOOejm%2Fxl7kFGgafeqGzIA8yJxAWol5%2FusgfeN1pIUfRAJGjg%2BB9hQPRlW6ahS8CXZxfK2qRNN375A%3D",
"nombreCep": "ELIZABETH JIMENEZ GARCIA",
"empresa": "CPAGODISPER",
"fechaOperacion": "20260309",
"sello": "fc/Kvtr0RBMZBQ4fvTlEbrGGsjHexATgNfb3dQxBiUvFxK7QSTFs1agKQ7iEXgal3N6GXxrZ5OMakkVPrc4esyI9iLv91m+P6uXKwTpoomdN2IxDo+hRbBqzOK88DhVN7+B3kB+6fhitGWwSQzJTYInvXn0x1+2qhGv2ZpAGnJUtIW9yYr2xuSrFs2M9J7bg7PAmvPOJfZh1GoLC3dXOFcaBsRSyA7kvFVXrFWZ6HnlI9y/iH1XlZzqmWwOwzzf3vuNsz1lWfW0rhLymxqTiwAmftP/QxvnOTm/gWiTd5LPjK6NRPXVeDipQJTz9pKSXVSKnrhTylyAdssGY+JqsEg==",
"claveRastreo": "56DAE3E33942B1B727256B7B",
"cuentaBeneficiario": "127180016376644864"
}'

Ejemplo de WEBHOOK respuesta:

{
  “resultCode”:0,
  “resultDesc”:”CEP guardado exitosamente.”,
   “data”:{
   “rfcCep”:”JIGE990426515″,                               “urlCEP”:”https://www.banxico.org.mx/cep/go=90646&s=20210302&d=LB2S5j3JuJ7pKCRn5f00YuUEVz%2FkspOOejm%2Fxl
7kFGgafeqGzIA8yJxAWol5%2FusgfeN1pIUfRAJGjg%2BB9hQPRlW6ahS8CXZxfK2qRNN375A%3D”,
   “nombreCep”:”ELIZABETH JIMENEZ GARCIA”,
  “empresa”:”CPAGODISPER”,
   “fechaOperacion”:”20260309″,         “sello”:”fc/Kvtr0RBMZBQ4fvTlEbrGGsjHexATgNfb3dQxBiUvFxK7QSTFs1agKQ7iEXgal3N6GXxrZ5OMakkVPrc4esyI9iLv91m+P6uXKwTpoomdN2IxDo+hRbBqzOK88DhVN7+B3kB+6fhitGWwSQzJTYInvXn0x1+2qhGv2ZpAGnJUtIW9yYr2xuSrFs2M9J7bg7PAmvPOJfZh1GoLC3dXOFcaBsRSyA7kvFVXrFWZ6HnlI9y/iH1XlZzqmWwOwzzf3vuNsz1lWfW0rhLymxqTiwAmftP/QxvnOTm/gWiTd5LPjK6NRPXVeDipQJTz9pKSXVSKnrhTylyAdssGY+JqsEg==”,
  “claveRastreo”:”56DAE3E33942B1B727256B7B”,
  “cuentaBeneficiario”:”127180016376644864″,
  “statusCambioEstado”:null
       }
}

SERVICIO DE CAMBIO DE ESTADO

ClubPago proporciona el Servicio de Notificaciones de Cambio Estado, para poder actualizar el cambio de estado de las dispersiones, el cual puede ser DEVUELTO o CANCELADO.
El servicio de notificaciones de estado será llamado por ClubPago y notificado al WEBHOOK que el Emisor proporcione a ClubPago.

La estructura de la solicitud será la siguiente:

El cuerpo de la petición contendrá un objeto JSON con las siguientes propiedades:

 

Nombre Tipo Descripción Obligatorio
IdDispersion Numérico Identificador de dispersión . SI
ClaveRastreo Alfabético Clave de rastreo de la dispersión. SI
Monto Numérico Monto de la dispersión SI

statusCambioEstado

Alfabético Devuelto/Cancelado. SI

Ejemplo de WEBHOOK

Metodo POST

https://webhook.site/e8f59c0c-4805-46f4-b69f-0b29baee0ec6
{
"idDispersion": 38199,
"claveRastreo":" D070903C9B498B8A2B88A7AE ",
"monto": " 1500 ",
"statusCambioEstado": "DEVUELTO"
}
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://webhook.site/0dd9c237-af02-4203-b27e-1a4d02b6f680")
.header("X-Origin", "TmpNd04yVXhaV1poTlRBMVl6STVPREpqTURG")
.header("User-Agent", "CPAPI_AGNT_V1")
.header("Content-Type", "application/json")
.body("{\r\n    \"rfcCep\": \"JIGE990426515\",\r\n    \"urlCEP\": \"https://www.banxico.org.mx/cep/go?i=90646&s=20210302&d=LB2S5j3JuJ7pKCRn5f00YuUEVz%2FkspOOejm%2Fxl7kFGgafeqGzIA8yJxAWol5%2FusgfeN1pIUfRAJGjg%2BB9hQPRlW6ahS8CXZxfK2qRNN375A%3D\",\r\n    \"nombreCep\": \"ELIZABETH JIMENEZ GARCIA\",\r\n    \"empresa\": \"CPAGODISPER\",\r\n    \"fechaOperacion\": \"20260309\",\r\n    \"sello\": \"fc/Kvtr0RBMZBQ4fvTlEbrGGsjHexATgNfb3dQxBiUvFxK7QSTFs1agKQ7iEXgal3N6GXxrZ5OMakkVPrc4esyI9iLv91m+P6uXKwTpoomdN2IxDo+hRbBqzOK88DhVN7+B3kB+6fhitGWwSQzJTYInvXn0x1+2qhGv2ZpAGnJUtIW9yYr2xuSrFs2M9J7bg7PAmvPOJfZh1GoLC3dXOFcaBsRSyA7kvFVXrFWZ6HnlI9y/iH1XlZzqmWwOwzzf3vuNsz1lWfW0rhLymxqTiwAmftP/QxvnOTm/gWiTd5LPjK6NRPXVeDipQJTz9pKSXVSKnrhTylyAdssGY+JqsEg==\",\r\n    \"claveRastreo\": \"56DAE3E33942B1B727256B7B\",\r\n    \"cuentaBeneficiario\": \"127180016376644864\"\r\n}")
.asString();
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://qa.clubpago.site/Plat//apiDispersiones/EnviaDispersion")
.header("Authorization", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJmMjMyZGEzMC1mNDE5LTRiYjgtODJkYS05NTc2OGVhMjhiMzMiLCJVc2VySWQiOiIzODkiLCJFbWlzb3JJZCI6IjY4MiIsIlVzZXJOYW1lIjoicWFwcnVlYmFzYW0iLCJuYmYiOjE3NzMwODUxMTAsImV4cCI6MTc3MzE4OTUxMCwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.s3B1nq5Um8LtlwUS_TsIQAfq8z9LuVZCYV335prUwhY")
.header("Content-Type", "application/json")
.body("{\n\t\"NombreCliente\": \"Angel Maldonado Prueba\",\n    \"Monto\":100,\n    \"Clabe\":\"012060015789314962\",\n    \"IdBanco\": 40012,\n    \"Telefono\":\"8712627115\",\n\t\"Correo\": \"amaldonado@clubpago.mx\",\n    \"Concepto\":\"Envío de dinero\",\n    \"IdExterno\":\"1130\"\n}")
.asString(); 
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://webhook.site/0dd9c237-af02-4203-b27e-1a4d02b6f680',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"rfcCep": "JIGE990426515",
"urlCEP": "https://www.banxico.org.mx/cep/go?i=90646&s=20210302&d=LB2S5j3JuJ7pKCRn5f00YuUEVz%2FkspOOejm%2Fxl7kFGgafeqGzIA8yJxAWol5%2FusgfeN1pIUfRAJGjg%2BB9hQPRlW6ahS8CXZxfK2qRNN375A%3D",
"nombreCep": "ELIZABETH JIMENEZ GARCIA",
"empresa": "CPAGODISPER",
"fechaOperacion": "20260309",
"sello": "fc/Kvtr0RBMZBQ4fvTlEbrGGsjHexATgNfb3dQxBiUvFxK7QSTFs1agKQ7iEXgal3N6GXxrZ5OMakkVPrc4esyI9iLv91m+P6uXKwTpoomdN2IxDo+hRbBqzOK88DhVN7+B3kB+6fhitGWwSQzJTYInvXn0x1+2qhGv2ZpAGnJUtIW9yYr2xuSrFs2M9J7bg7PAmvPOJfZh1GoLC3dXOFcaBsRSyA7kvFVXrFWZ6HnlI9y/iH1XlZzqmWwOwzzf3vuNsz1lWfW0rhLymxqTiwAmftP/QxvnOTm/gWiTd5LPjK6NRPXVeDipQJTz9pKSXVSKnrhTylyAdssGY+JqsEg==",
"claveRastreo": "56DAE3E33942B1B727256B7B",
"cuentaBeneficiario": "127180016376644864"
}',
CURLOPT_HTTPHEADER => array(
'X-Origin: TmpNd04yVXhaV1poTlRBMVl6STVPREpqTURG',
'User-Agent: CPAPI_AGNT_V1',
'Content-Type: application/json'
),

));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

curl --location 'https://webhook.site/0dd9c237-af02-4203-b27e-1a4d02b6f680' \
--header 'X-Origin: TmpNd04yVXhaV1poTlRBMVl6STVPREpqTURG' \
--header 'User-Agent: CPAPI_AGNT_V1' \
--header 'Content-Type: application/json' \
--data '{
"rfcCep": "JIGE990426515",
"urlCEP": "https://www.banxico.org.mx/cep/go?i=90646&s=20210302&d=LB2S5j3JuJ7pKCRn5f00YuUEVz%2FkspOOejm%2Fxl7kFGgafeqGzIA8yJxAWol5%2FusgfeN1pIUfRAJGjg%2BB9hQPRlW6ahS8CXZxfK2qRNN375A%3D",
"nombreCep": "ELIZABETH JIMENEZ GARCIA",
"empresa": "CPAGODISPER",
"fechaOperacion": "20260309",
"sello": "fc/Kvtr0RBMZBQ4fvTlEbrGGsjHexATgNfb3dQxBiUvFxK7QSTFs1agKQ7iEXgal3N6GXxrZ5OMakkVPrc4esyI9iLv91m+P6uXKwTpoomdN2IxDo+hRbBqzOK88DhVN7+B3kB+6fhitGWwSQzJTYInvXn0x1+2qhGv2ZpAGnJUtIW9yYr2xuSrFs2M9J7bg7PAmvPOJfZh1GoLC3dXOFcaBsRSyA7kvFVXrFWZ6HnlI9y/iH1XlZzqmWwOwzzf3vuNsz1lWfW0rhLymxqTiwAmftP/QxvnOTm/gWiTd5LPjK6NRPXVeDipQJTz9pKSXVSKnrhTylyAdssGY+JqsEg==",
"claveRastreo": "56DAE3E33942B1B727256B7B",
"cuentaBeneficiario": "127180016376644864"
}'

AUTENTICACIÓN SERVICIOS DE CONSULTA

El servicio de consulta por transacciones por emisor muestra la totalidad de transacciones exitosas por emisor en un rango de fechas. La estructura de la solicitud será la siguiente:

El cuerpo de la petición contendrá un objeto JSON con las siguientes propiedades:

 

Nombre Tipo Descripción Obligatorio
User Alfanumérico  Nombre de Usuario  SI
PSW Alfanumérico Contraseña SI

Ejemplo

https://qa.clubpago.site/plat/apiDispersiones/ConsultaTransaccionesPorUsuario

Método POST :

{
    “User”: “Emisorcppruebas”,
    “Pswd”: “Emisorcppruebas”
}

var options = new RestClientOptions("")
{
MaxTimeout = -1,
};

var client = new RestClient(options);
var request = new RestRequest("https://qa.clubpago.site/plat/apiConsulta/token", Method.Post);
request.AddHeader("Content-Type", "application/json");
var body = @"{
" + "n" +
@"  ""User"": ""Emisorcppruebas"",
" + "n" +
@"  ""Pswd"": ""Emisorcppruebas""
" + "n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://qa.clubpago.site/plat/apiConsulta/token")
.header("Content-Type", "application/json")
.body("{rnt"User": "Emisorcppruebas",rnt"Pswd": "Emisorcppruebas"rn}")
.asString();

 

<?php

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://qa.clubpago.site/plat/apiConsulta/token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"User": "Emisorcppruebas",
"Pswd": "Emisorcppruebas"
}',

CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

curl --location 'https://qa.clubpago.site/plat/apiConsulta/token' 
--header 'Content-Type: application/json' 
--data '{ "User": "Emisorcppruebas", "Pswd": "Emisorcppruebas"
}'

Respuesta

{
” Message “: “Token generado exitosamente”,
” Token “:” eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJiNjM3OWZj          Ni01NDNlLTRhZmMtOWZhYy01NjgxNGY1MzdkZmIiLCJVc2VySWQiOiIyNDQiLCJFbWlzb3JJZCI6IjYyOCIsIlVzZXJOYW1lIjoiRW1pOTUwSEIiLCJuYmYiOjE3NzAxMzczMDEsImV4cCI6MTc3MDI0MTcwMSwiaXNzIjoiY2x1YnBhZ28ubXgiLCJhdWQiOiJjbHVicGFnby5teCJ9.GXm1avm0tMKcaV1V3h7FP5nZRNzsFS4iQrJfAES2RypsLBXLZE”,
“Expiration”: “00260103012505307001”,
}

 SERVICIO DE CONSULTA TRANSACCIONES POR EMISOR

El servicio de consulta por transacciones por emisor muestra la totalidad de transacciones exitosas por emisor en un rango de fechas. La estructura de la solicitud será la siguiente:

El cuerpo de la petición contendrá un objeto JSON con las siguientes propiedades:

 

Parámetros

 

Nombre Tipo Descripción Obligatorio
DtDesde Fecha Fecha Desde SI
DtHasta Fecha Fecha Hasta SI

Método POST

https://qa.clubpago.site/plat/apiDispersiones/ConsultaTransaccionesPorEmisor

Ejemplo de Solicitud :

{
  "dtDesde": "2026-01-01T00:00:00Z",
"dtHasta": "2026-01-20T23:59:59Z"
}

var options = new RestClientOptions("")
{
MaxTimeout = -1,
};

var client = new RestClient(options);
var request = new RestRequest("https://qa.clubpago.site/plat/apiConsulta/token", Method.Post);
request.AddHeader("Content-Type", "application/json");
var body = @"{
" + "n" +
@"  ""User"": ""Emisorcppruebas"",
" + "n" +
@"  ""Pswd"": ""Emisorcppruebas""
" + "n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://qa.clubpago.site/plat/apiConsulta/token")
.header("Content-Type", "application/json")
.body("{rnt"User": "Emisorcppruebas",rnt"Pswd": "Emisorcppruebas"rn}")
.asString();

 

<?php

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://qa.clubpago.site/plat/apiConsulta/token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"User": "Emisorcppruebas",
"Pswd": "Emisorcppruebas"
}',

CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

curl --location 'https://qa.clubpago.site/plat/apiConsulta/token' 
--header 'Content-Type: application/json' 
--data '{ "User": "Emisorcppruebas", "Pswd": "Emisorcppruebas"
}'
{
    “ResponseCode”: “00”,
    “ResponseMessage”: “Consulta exitosa”,
    “Data”: [
        {
            “TransactionId”: 382,
            “TransactionDate”: “2026-01-14T09:37:11.947”,
            “NombreBeneficiario”: “Jazmin Gonzalez”,
            “CLABE”: “002580300865454925”,
            “Banco”: 40002,
            “Monto”: 2.0000,
            “ClaveRastreo”: “1C2E3E37CC43C8979841BAC8”
        }
  ]
}

 SERVICIO DE CONSULTA TRANSACCIONES POR USUARIO

El servicio de consulta por transacciones por emisor usuario muestra la totalidad de transacciones exitosas por emisor en un rango de fechas. La estructura de la solicitud será la siguiente:

El cuerpo de la petición contendrá un objeto JSON con las siguientes propiedades:

 

Parámetros

 

Nombre Tipo Descripción Obligatorio
DtDesde Fecha Fecha Desde SI
DtHasta Fecha Fecha Hasta SI

Ejemplo:

Método POST

https://qa.clubpago.site/plat/apiDispersiones/ConsultaTransaccionesPorUsuario

Ejemplo de Solicitud :

{
  "dtDesde": "2026-01-01T00:00:00Z",
"dtHasta": "2026-01-20T23:59:59Z"
}

var options = new RestClientOptions("")
{
MaxTimeout = -1,
};

var client = new RestClient(options);
var request = new RestRequest("https://qa.clubpago.site/plat/apiConsulta/token", Method.Post);
request.AddHeader("Content-Type", "application/json");
var body = @"{
" + "n" +
@"  ""User"": ""Emisorcppruebas"",
" + "n" +
@"  ""Pswd"": ""Emisorcppruebas""
" + "n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://qa.clubpago.site/plat/apiConsulta/token")
.header("Content-Type", "application/json")
.body("{rnt"User": "Emisorcppruebas",rnt"Pswd": "Emisorcppruebas"rn}")
.asString();

 

<?php

$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://qa.clubpago.site/plat/apiConsulta/token',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"User": "Emisorcppruebas",
"Pswd": "Emisorcppruebas"
}',

CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;

curl --location 'https://qa.clubpago.site/plat/apiConsulta/token' 
--header 'Content-Type: application/json' 
--data '{ "User": "Emisorcppruebas", "Pswd": "Emisorcppruebas"
}'

Ejemplo de Respuesta :

{
    “ResponseCode”: “00”,
    “ResponseMessage”: “Consulta exitosa”,
    “Data”: [
        {
            “TransactionId”: 382,
            “TransactionDate”: “2026-01-14T09:37:11.947”,
            “NombreBeneficiario”: “Jazmin Gonzalez”,
            “CLABE”: “002580300865454925”,
            “Banco”: 40002,
            “Monto”: 2.0000,
            “ClaveRastreo”: “1C2E3E37CC43C8979841BAC8”
        }
  ]
}

 SERVICIO DE CONSULTA DE SALDO

El servicio de consulta de saldo muestra el saldo disponible para realizar dispersiones. La estructura de la
solicitud será la siguiente

El cuerpo de la petición contendrá un objeto JSON con las siguientes propiedades:

 

No requeiere paráetros

Ejemplo:

Método POST

https://qa.clubpago.site/plat/apiDispersiones/ConsultaSaldo

Ejemplo de Respuesta :

{
    “ResponseCode”: “00”,
    “ResponseMessage”: “Consulta de saldo exitosa”,
    “Balance”: 64397.2600
}

ESPECIFICACIONES A CONSIDERAR

Tiempo de comunicación entre CLUBPAGO y el Servicio

CLUBPAGO esperará máximo 15 segundos por una respuesta del servicio autorizador, y una vez pasado ese tiempo es posible que CLUBPAGO cancele la conexión y considere la transacción como rechazada.

Comunicación HTTPS

Aunque en el ambiente de Sandbox se permite que el servicio sea HTTP, no olvides que en el ambiente de producción se requiere que el servicio se encuentre solo disponible mediante HTTPS.

Errores en el servicio autorizador

Si los servicios llegaran a fallar, ya sea porque el servidor no responde o por que el servicio no regresó una respuesta HTTP 2xx, CLUBPAGO tomará las siguientes acciones:
    • En el caso del servicio de autorización, se considerará la transacción como rechazada
      y no se aceptará el pago.
    • En el caso de cancelación, CLUBPAGO solo registrará el evento y continuará con la
      operación de cancelación. Es decir, realizará reintentos cada 15 minutos, hasta que
      obtenga una RESPUESTA EXITOSA DEL EMISOR

Tiempo de cancelación

Pago recibido en Cadena:
Una vez autorizada una transacción, ésta podría ser cancelada de manera automática
dentro de los 10 minutos siguientes, por lo que su aplicación debe tomar esto en cuenta e implementar funciones para cubrir esta posibilidad.
Para pagos por transferencia Bancaria y pago con tarjeta la cancelación no aplica, ya que se confirma como exitosa o fallida.

Recomendación para desarrollo de la aplicación del EMISOR

Se recomienda al EMISOR desarrollar utilizando POSTMAN
POSTMAN nace como una herramienta que principalmente nos permite crear peticiones sobre APIs de una forma muy sencilla y poder, de esta manera, probar las APIs. Todo basado en una extensión de Google Chrome. Convirtiendo a POSTMAN plataforma de desarrollo de APIs que se basa por un modelo de desarrollo API First POSTMAN permite el envío de peticiones HTTP REST sin necesidad de desarrollar un cliente.
Una vez instalado POSTMAN, es necesario abrirlo e instalar el plugin Jetpack de Postman para poder crear las pruebas y lanzarlas conjuntamente.
En el Anexo A de este documento encontrará una guía de cómo utilizar POSTMAN para construir su aplicación que interactúe con CLUBPAGO

Contacto para dudas

Favor de contactarme si tienes dudas durante la integración a:

 

Nivel Nombre Correo Teléfono
Nivel 1 Ángel Maldonado Chagoya  amaldonado@clubpago.mx 871 478 0520
Nivel 2 Marco Galván Torres it@rpmmx.net 871 478 0520

ANEXO A
GUIA EMULADOR CLUBPAGO API CON POSTMAN

Para descargar el software POSTMAN lo puedes realizar desde la siguiente dirección:
https://www.postman.com/downloads/
POSTMAN hará la función de envío de solicitudes como si fuera CLUBPAGO API.
Tenemos disponible un Emulador de Emisor que contiene la estructura básica, de ejemplo, que tienes que programar para poder implementar CLUBPAGO API y una colección de solicitudes para importar en POSTMAN.
https://github.com/clubpago/ClubPagoAP

Complementos a esta funcionalidad

CLUBPAGO cuenta con un Sandbox (Ambiente de pruebas) que te ayudará a probar tu INTEGRACION DE PROVEEDORES O EMISORES DE PAGO. Solicita tus accesos y el Documento de Guía de uso del Sanbox de la Plataforma Tecnológica de CLUBPAGO.