La comunicación con la Pagando Check Pad requiere que el cliente desarrolle una aplicación o servicio. Esta aplicación funge como el punto de control para la realización de operaciones. Todo a través de una interfaz TCP/IP, estableciendo la conectividad mediante cable de red conectado directamente a la Pagando Check Pad y el dispositivo controlador..
Rol de la aplicación o servicio (Bridge)
- Estas serán las funciones básicas que deberá de realizar el Bridge
- Realizar una conexión TCP/IP en un puerto especifico (
49154
). - Capacidad de generar y enviar mensajes en formato JSON.
- Capacidad de recibir e interpretar mensajes en formato JSON.
- Realizar una conexión TCP/IP en un puerto especifico (
Pasos para la generación del Bridge.
A continuación se enuncian los pasos básicos para la generación de un bridge para lograr la conexión con la Pagando Check Pad. Cabe recalcar que los ejemplos son meramente demostrativos y solo sirven de ayuda para demostrar el propósito de la función.
El cliente puede realizar la selección de cualquier lenguaje de programación que este acostumbrado usar para realizar la aplicación o servicio.
Paso 1: Configuración de ip
La aplicación o servicio necesitara una dirección de red para realizar las operaciones. Esta configuración es crucial para realizar las operaciones y debe ser la misma que obtuvimos en la interfaz de red (dispositivo controlador) al compartir internet a la terminal mediante el cable Ethernet (dirección del gatewat de la red privada entre la Pad y dispositivo controlador).
Estas direcciones suelen ser (se recomienda verificar la dirección asignada en el adaptador de red):
- Windows → 192.168.137.1
- MacOs → 192.168.2.1
Actualmente para la conexión se requiere tener habilitado el puerto 49154
en el cuál se realiza la conexión.
Ejemplo de conexión.
int port = 49154;
String ipv4Address = "Ip proporcionada por sistema operativo";
public void init(int port, String ipv4Address){
this.port = port;
this.ipv4Address = ipv4Address;
this.init2();
}
private void init2(){
try {
// Se valida y se crea un objeto de dirección de red
bindAddr = InetAddress.getByName(ipv4Address);
}
}
DEFINIR puerto COMO Entero, inicializado en 49154
DEFINIR direccionIPV4 CxOMO Cadena, inicializada en "Ip proporcionada por sistema operativo"
DEFINIR direccionDeEnlace COMO ObjetoDireccionRed
// -- PROCEDIMIENTO PÚBLICO DE INICIALIZACIÓN --
PROCEDIMIENTO publico inicializar(nuevoPuerto COMO Entero, nuevaDireccion COMO Cadena)
ESTE.puerto = nuevoPuerto
ESTE.direccionIPV4 = nuevaDireccion
// Se llama al procedimiento interno para completar la inicialización.
LLAMAR A inicializar_interno()
FIN PROCEDIMIENTO
// -- PROCEDIMIENTO PRIVADO INTERNO --
PROCEDIMIENTO privado inicializar_interno()
// Se intenta realizar una operación que podría fallar.
INTENTAR
// Se valida y convierte la cadena de texto de la dirección IP
// a un objeto de dirección de red manejable por el sistema.
ESTE.direccionDeEnlace = ObtenerDireccionPorNombre(ESTE.direccionIPV4)
CAPTURAR EXCEPCION
// Por ejemplo: MOSTRAR "Error: La dirección IP no es válida."
FIN INTENTAR
FIN PROCEDIMIENTO
Paso 2: Creación del Punto de Escucha
Dentro de la aplicación o servicio se deberá de generar un socket de conexión que permita la apertura del puerto definido anteriormente con la dirección IP. Así mismo, deberá de mantener una escucha activa.
serverSocket = new ServerSocket(port, Constants.socketBacklog, bindAddr);
socketServidor = CrearSocketServidor(ESTE.puerto, CONSTANTES.COLA_DE_CONEXIONES, ESTE.direccionDeEnlace)
Paso 3: Mantener hilo en segundo plano.
Para evitar que los procesos impidan un uso de la aplicación mientras se realice esta conexión se recomiendo pasar a una conexión en segundo plano la escucha del socket de conexión.
new Thread(() -> handleConnection()).start();
EJECUTAR_EN_NUEVO_HILO(manejar_conexiones.iniciar)
Paso 4: Aceptación de la Conexión del Cliente
Dentro del hilo, la aplicación entra en un bucle infinito y se detiene esperando a que un cliente se conecte. Cuando esto ocurre, se crea un objeto Socket
que representa el canal de comunicación privado con ese cliente.
while (true) {
// El programa se pausa aquí hasta que un cliente se conecta
Socket clientSocket = serverSocket.accept();
}
INICIO
MIENTRAS verdadero HACER
ESPERAR por una conexión de cliente
clienteSocket = ACEPTAR conexión del cliente
FIN MIENTRAS
FIN
Paso 5: Asignación a un Gestor Dedicado
Ese Socket
se entrega a un objeto CommunicationHandler
, que se especializa en gestionar la conversación con un solo cliente. Este gestor también se inicia en su propio Thread
para manejar el envío y la recepción de forma independiente.
handler = new CommunicationHandler(clientSocket);
communicationThread = new Thread(handler);
communicationThread.start();
// Crear un manejador de comunicación para el cliente recién conectado
manejador = nuevo ManejadorDeComunicacion(clienteSocket)
// Crear un nuevo hilo de ejecución para manejar la comunicación
hiloDeComunicacion = nuevo Hilo(manejador)
// Iniciar el hilo para que se ejecute de forma concurrente
INICIAR hiloDeComunicacion