Terminales QIWI. Cómo aprovechar al máximo las tecnologías simples

A principios de 2017, nosotros, el equipo de desarrollo de software para QIWI Terminals, reunimos los deseos de los departamentos de la compañía: aprendimos qué tareas globales les gustaría resolver a nuestros colegas con nuestra ayuda, para que la vida sea más fácil.

Estuve muy satisfecho con la solicitud del servicio al cliente que trabaja con llamadas y reclamos de los pagadores:

“Hay un problema: el cliente realiza un pago en la terminal, pero aún no llega al procesamiento, o la terminal podría congelarse o Internet que funciona a través del módem gsm se cayó. Y resulta que el cliente tiene un cheque, pero no hay pago en el sistema. Sería bueno en tales casos aprender cómo entregar pagos a QIWI.

También hay un grupo de clientes ansiosos que, inmediatamente después de hacer un pago, marcan el número de un centro de llamadas para asegurarse de que todo esté bien con él. Sería genial cortar los huesos para esas llamadas ".

Por lo tanto, teníamos una tarea compleja: aprender a crear un pago en caso de una falla de comunicación con el terminal y reducir la cantidad de llamadas entrantes de los clientes al inventar una herramienta de autoservicio para verificar el estado del pago. El caso es claro. Comenzaron a buscar una solución conveniente para el cliente y sin riesgos de seguridad.

El cliente, según la tradición, ofreció su opción: imprimir en el recibo una secuencia de caracteres que el pagador podría informar al operador y, a su vez, comprender si es nuestro pago o no, filtrar el fraude o realizar la operación manualmente.

El concepto de la idea era claro, pero irrealizable, por lo que fuimos un poco más allá: decidimos incrustar los datos de pago en el código QR, imprimirlo en el recibo y duplicar el Terminal QIWI en la pantalla para mayor precisión. Al escanear el código QR con la cámara de su dispositivo, el cliente puede averiguar el estado de la operación. Y en caso de falta de pago en QIWI, el sistema lo crea automáticamente. Por lo tanto, el cliente no solo descubre si el dinero ha llegado, sino que también lo realiza de forma independiente, independientemente del estado del terminal.

A primera vista, la solución era obvia: tomar una solicitud existente con el pago, envolverla en un código QR, escribir una página web con información de transacciones y un proxy de microservicio de solicitudes entre el terminal, el procesamiento y la web. Se asumió que el proyecto trabajará en los métodos existentes de autenticación de terminal y utilizará los métodos de pago existentes en el procesamiento.

La idea surgió de inmediato, revelando el potencial creativo del equipo. Comenzamos a mostrar opciones adicionales hasta colocar un logotipo, eslogan e incluso publicidad en un código QR además de los datos de pago:

imagen

Un proyecto para un par de sprints, no más. Ahí estaba.

Primera frustración


Tomamos un pago existente y formamos un código QR en él:

imagen

Como resultado, incluso el último iPhone7 en ese momento no pudo leerlo. En el cheque, el código QR, que consiste solo en datos de pago y firma, apenas cabe en la mitad de la hoja A4. La línea de solicitud de pago era demasiado larga. Esta fue la primera tristeza.

Era necesario resolver dos problemas principales:

  • reducir el número de caracteres en una solicitud de pago, es decir idear una solución en la que podamos alejarnos de la solicitud xml existente a una más compacta;
  • elija un algoritmo de cifrado y una longitud de clave que proporcione una alta seguridad criptográfica y confiabilidad con un tamaño de firma más pequeño.

El criterio para evaluar la cantidad óptima de caracteres para el código QR fue uno: debe leerse con las cámaras de la mayoría de los teléfonos móviles.

Sin embargo, en un par de reuniones de trabajo, se encontró una solución:

  • en lugar de la solicitud xml, decidimos usar una solicitud get con parámetros de pago y separadores entre ellos;
  • construyó una firma en curvas elípticas para acortar la longitud.

La ventaja de utilizar la solicitud de obtención fue que las cámaras de teléfonos móviles o programas especiales, al ver el enlace en el código QR, lo abrieron inmediatamente en el navegador, lo que permitió realizar un pago en una sola acción. Para reducir el tamaño de la solicitud de obtención, tuvimos que reemplazar el nombre del parámetro con delimitadores.

Como resultado del conjunto de acciones, la solicitud de pago se redujo de aproximadamente 1.100 a 200 caracteres. Además, tuve que aplicar el nivel más bajo de corrección de errores del código QR: L.

Para la implementación, se requería desarrollar componentes en el sistema:

  • crear una nueva API para realizar pagos a través de un código QR;
  • introducir un nuevo mecanismo para trabajar con claves criptográficas entre el terminal y el procesamiento;
  • implementar un microservicio en el que se suspenderá la funcionalidad de las solicitudes de representación, la comprobación de la integridad de los datos recibidos, así como la función de bloquear solicitudes sospechosas y recopilar estadísticas de operación;
  • desarrollar una página web para mostrar información de pago;
  • Desarrolle un sistema de límites y controles para un nuevo canal de pago.

Al esquema de trabajo existente:

imagen

Planeamos agregar una alternativa:

imagen

En el curso del proyecto, parecería, pequeño, pero que requiere resolver problemas, lo que de hecho tomó mucho tiempo, posponiendo la fecha de lanzamiento.

UX-research, o el trabajo vino de donde no esperaban


Quería hacer todo como las personas, por lo que trajeron especialistas en UX para implementar el proyecto para resolver problemas:

  • ¿En qué parte de la pantalla del Terminal QIWI colocar el código QR y cómo explicarle su utilidad al cliente?
  • ¿Dónde colocar el código QR en el cheque y cómo introducir explicaciones similares?
  • ¿Cómo hacer un diseño de una página web con el estado de pago, para que quede claro en las guías de la empresa?

Obviamente, para la parte avanzada de los clientes, no se requieren explicaciones adicionales sobre el código QR, solo necesitan indicar el resultado. Pero queríamos cubrir esa parte de los clientes para quienes el código QR es una abreviatura mágica o simplemente un "cuadrado negro". Son ellos quienes, de hecho, rompen la línea del centro de llamadas.

Para hacerlo bello y comprensible, se realizó una entrevista dentro del grupo focal que nos interesa con resultados inesperados ...

La brevedad es similar al ahorro


Resultó aterrador: la audiencia que necesitábamos no siempre entendía el significado de la palabra "Escanear" y sus derivados. Por lo tanto, la redacción original "Escanear y averiguar el estado" tuvo que ser abandonada. La solución fue la capacidad técnica de enviar una foto del código QR por correo electrónico. Y también era necesario decir esto breve y claramente, porque la cinta de verificación es el material prescindible de los propietarios de terminales y nuestra preocupación por el negocio de estas personas es su economía. Como resultado, el cheque ahora se ve así:

imagen

En cuanto a la visualización del código QR en la pantalla del terminal, se colocó en la página final del pago, lo último en el escenario de pago. Se muestra en el momento en que se imprime el cheque y es esencialmente un duplicado electrónico del código QR impreso.

El correo electrónico es ubicuo


En relación con la aparición de un nuevo canal para procesar códigos QR en forma de correo electrónico, se hizo necesario desarrollar mecanismos con la función de reconocer los códigos QR incrustados en las letras y generar una respuesta con el estado del pago.

La función de reconocer los códigos QR se eliminó en el microservicio. En la implementación inicial, la tasa de reconocimiento fue de alrededor del 65% en la muestra presentada de fotografías. Intentamos jugar con decoloración y mayor contraste, esto dio aproximadamente + 20% de reconocimiento exitoso.

La guinda del pastel en la tarea de reconocer fotos del código QR fue la introducción de "inteligencia natural" para casos difíciles y poco reconocidos: la creación de aplicaciones y su procesamiento comenzaron a llevarse a cabo en modo manual:

imagen

Técnico no es trivial


Los principales desarrollos en este proyecto, por supuesto, se referían al microservicio en sí y al software del terminal.

QIWI se está moviendo activamente a una arquitectura de microservicio para no tocar el motor masivo. Microservice le permite realizar cambios rápidamente en proyectos, realizar pruebas y lanzar lanzamientos. Por lo tanto, en un par de meses escribimos el nuestro. Nos ocupamos de todos los nuevos desarrollos importantes que solo se podían hacer:

  • proxying solicitudes analizando y analizando solicitudes get entrantes, convirtiéndolas a xml para su procesamiento,
  • funcionalidad para limitar las solicitudes entrantes de terminales,
  • Funcionalidad de reconocimiento de código QR,
  • recopilación de estadísticas para su posterior análisis.

Además de la implementación de un nuevo mecanismo para trabajar con claves criptográficas, las mejoras en los terminales tocaron la aplicación de una nueva tecnología para imprimir recibos.

La funcionalidad para su formación se extrajo del núcleo principal del programa en el complemento. Ahora podríamos implementar cambios en la verificación rápidamente, sin tocar la operabilidad del terminal en su conjunto. La tarea de imprimir un código QR, que, a primera vista, parece bastante simple y se reduce a imprimir una imagen en un cheque, no es realmente así.

Esto se debe a que la red de nuestros propietarios de terminales tiene unos 20 modelos de una amplia variedad de impresoras, e imprimimos unos 40 tipos de recibos. Cuando comenzaron la implementación, surgieron muchos matices: las líneas y la ubicación de los objetos en la plantilla de verificación comenzaron a flotar cuando se agregó la imagen, luego algunos comandos resultaron sensibles a la ubicación, y luego el salto de línea se convirtió en una pestaña.

Comenzamos a probar, nos dimos cuenta de la necesidad de un compromiso: algunos modelos de impresoras tuvieron que ser excluidos, porque al probar todas las configuraciones, surgió una inmensa cantidad de casos.

Para las pruebas, decidimos elegir 6 modelos principales, que cubrían el 91% de la red de agentes. Y, por supuesto, al momento de realizar pruebas aleatorias en un entorno de combate, resultó que fue en impresoras antiguas que cubrían aproximadamente el 5% de la red de agentes que se descubrieron problemas con la impresión de recibos. Los modelos eran tan antiguos que incluso en el mercado ya no podían comprarse. Tuve que buscar con socios. Ahora el proyecto cubre el 96% de la red. Ya un poco más cerca del ideal :)

Ni un solo cheque


Paralelamente a la colocación de información sobre el código QR en el cheque y la página final del pago, surgió otra tarea: llevar esta página a un aspecto universal para todos los proyectos de terminal:

“En términos de páginas de finalización de pago en QIWI Terminals, todo fue bastante arcaico: publicidad, pancartas y envío de recibos electrónicos. A partir de cinco páginas, los chicos hicieron una, universal para todos los pagos ". - Programador líder del equipo.

Ahora esta página universal se usa en diferentes interpretaciones, sin romper la regla de construir un guión, cerrando la deuda kármica del equipo de desarrollo.

Así, se resolvió el problema de hace diez años, al que las manos no llegaban siempre. Había varias tareas de larga duración.

"¿Dónde está el dinero, Zin?" o lo que hay en la línea de fondo


El proyecto, diseñado para un par de sprints, tardó seis meses, afectando los recursos de 10 empleados y el límite de la agencia de outsourcing.

Como resultado, habiendo implementado el proyecto en el 85% de la red de terminales, nos sorprendimos a nosotros mismos y al servicio al cliente. El tercer día del código QR, los colegas pensaron que se les había introducido un error del sistema: estadísticas sobre la cantidad de llamadas al centro de llamadas con la pregunta "¿Dónde está mi pago?" Ya cayó en un 20%. Los clientes comenzaron a escanear el código QR y a enviar recibos de fotos por correo electrónico, descubriendo el estado y haciendo un pago por su cuenta. Y así, por segundo mes. Debo decir que los clientes comenzaron a entender qué es el "cuadrado negro" y cómo es útil.

El proyecto con un código QR fue del agrado de todos los que se les informó al respecto; fue una sinergia de intereses: por un lado, simplificaron la vida del cliente y, por otro, resolvieron un problema técnico no estándar. Verificar el estado de un pago y llevarlo a cabo en un procesamiento de papel simplemente escaneando un código QR para QIWI es algo nuevo. Fue genial tomar tecnologías conocidas y simples para hacer un proyecto útil. En general, el proyecto no solo impulsó las habilidades, sino que también mejoró la comunicación dentro del propio equipo. Y esta es casi la principal ventaja del karma.

Source: https://habr.com/ru/post/es422631/


All Articles