Recientemente, alrededor de la taquilla en línea, gran emoción, el 1 de julio de 2019, el último aplazamiento termina, así que tuve que lidiar con este problema. Aquellos que tienen 1C u otro sistema especialmente no pueden esforzarse, pero si tienes tu propio sistema auto-escrito, entonces la integración con las cajas registradoras en línea también recae sobre tus hombros.
Mi experiencia es útil para la integración con los cajeros automáticos Atol en el modo de intercambio de datos de red, su programa puede enviar datos al servidor web Atol tanto en el host local como en la red local, puede enviarlos incluso desde el navegador AJAX, incluso desde el servidor a través de CURL, por lo tanto, No importa en qué idioma esté escrito su software corporativo, todo es multiplataforma.
Me he encontrado con la boletería Atol 30f: es una máquina de escribir tan simple con una caja negra (FN), es justo cuando toda la lógica para ordenar está en un software externo, y no en el software integrado en el cajero. Además, los dispositivos de este tipo son relativamente baratos, en comparación con sus homólogos de Android.
También me gustaría señalar que los "especialistas" de algunas empresas involucradas en el soporte no saben en absoluto que Atoll con la versión 10 tiene un servidor web incorporado en el controlador que acepta trabajos JSON, además, este controlador también se puede instalar en Linux, a juzgar por Por la cantidad de soluciones preparadas en las frambuesas, puedo suponer que también se puede instalar allí, en la distribución de la décima versión del controlador está presente el instalador para el brazo.
El esquema planificado es algo como esto: hay CRM que se ejecuta en el servidor en la red local, se abre desde los navegadores, desde el servidor, los cheques se enviarán a PHP a través de curl e impresos en la caja registradora. Y la caja en sí está conectada a cualquier computadora en Windows en la misma red.
Dicen que si no activa el cajero, puede funcionar en modo de impresora e imprimir que el cheque no es válido, pero no pude verificarlo, tuve que hacer ventas y devoluciones de centavo.
El controlador de la décima versión se descarga
aquí .
Antes de instalar, debe instalar
Java con la misma profundidad de bits que el controlador; de lo contrario, la casilla de verificación del servidor web no estará disponible, si instala el controlador KKT de 64 bits, Java x64.
Parece que, lógicamente, necesita instalar un controlador de 64 bits en un sistema de 64 bits, pero algunos software de 32 bits no podrán trabajar con él (como esto se aplica a 1C si es de 32 bits).

Al final de la instalación hay una marca de verificación: para configurar el servidor web, si no estaba instalado, debe ir al navegador en
127.0.0.1 : 16732 / settings, marque la casilla "activar servidor" y guardar.


Después de eso, debe reiniciar el servidor a través de START-> ATOL-> restart ...
También quiero advertirle de inmediato que si inicia el servidor web, las aplicaciones locales no podrán acceder al KKT, por mucho tiempo trabajo, instalo el controlador, ejecuto la prueba del controlador KKT, y él me dice que el puerto está ocupado y eso es todo, llamó al soporte técnico del vendedor local, allí dijeron que no sabíamos qué hacer, luego sobrecargué la computadora diez veces, reinstalé el controlador, nada ayuda.
En general, después de activar y reiniciar el servidor, y antes de apagarlo y verificar la impresión de texto sin formato a través de la utilidad suministrada, o simplemente verificar la conexión, puede continuar.
Este servicio web no tiene ninguna protección de contraseña, por lo que debe configurar de inmediato el firewall de Windows u otro software para que solo las computadoras necesarias puedan acceder al puerto 16732, en mi caso, este es el servidor en el que se ejecuta CRM.
La comunicación con el servicio web es generalmente un tema separado, muy interesante ...- Genere un uuid único para el trabajo.
- Enviamos la tarea utilizando el método POST
- Estamos ansiando un servicio web, esperando el resultado de la tarea con nuestro UUID, puede ser que durante unos segundos nuestra tarea tenga un estado de espera, o puede ocurrir un error si algo está mal en la solicitud ...
Y luego daré una versión funcional, es adecuada para situaciones en las que el pago es solo un método, y no tanto en efectivo y en parte no en efectivo, también usa el sistema impositivo predeterminado, el IVA aún no se calcula, quería agregar el código, luego distribuirlo, pero Creo que todavía hay personas que necesitan esta información antes del 1 de julio que después. Debo decir de inmediato que la clase necesita refinamiento, mucho trabajo sin procesar, sin errores, todo se hizo en un par de horas sin tener en cuenta la lectura de la documentación, este código es más como un ejemplo y le aconsejo que estudie la
documentación con gran detalle y la adapte a sus procesos específicos.
código php para un ejemplo de trabajo con api (utilizado solo con fines educativos)<?php Class AtolWebDriver { protected $addr="127.0.0.1",$port="16732"; public $timeout = 30;
Hay algunos defectos aquí que solucionaré
- Redondeando fracciones al calcular las cantidades, debe redondear a centavos, de lo contrario puede obtener 1.000000001 o 0.999999999
- Con la ortografía correcta del resto de la lógica del programa, esto generalmente no ocurre, pero durante las pruebas me di cuenta del hecho de que la tarea devolvió un resultado de error, y estaba esperando que estuviera listo
Bueno, en el proceso de implementación, tengo miedo de detectar muchos más errores, por ejemplo, si una tarea se cuelga durante mucho tiempo en el estado de espera, entonces es mejor eliminarla de la cola; de lo contrario, las tareas subsiguientes se suspenderán durante varios minutos, detecté un problema técnico una vez, no esperaba que se imprimiera y aquí me siento, pero saltó e imprimió inmediatamente dos cheques seguidos enviados antes ...
En general, es posible recolectar adquisiciones del sitio en el futuro, si no tienen cheques en línea, hasta que haya decidido qué adquisición atornillar. Pero la solución es, probablemente como una idea para una solución, el tiempo dirá cómo se arraigará esta taquilla.
Advertencia , para aquellos que leen sin atención el artículo y no son muy competentes en el tema de seguridad:
este servicio web no tiene cifrado (https), no tiene autorización , incluso si se usa solo en la red local: configure la protección para el acceso al puerto.