Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Las aplicaciones web y el hardware también pueden llevarse bien

Las aplicaciones web y el hardware también pueden llevarse bien

Un punto débil que tienen las aplicaciones web es la gestión de hardware especializado. Actualmente tenemos WebUSB y WebBluetooth que ofrecen un mecanismo multiplataforma para acceder a todo tipo de hardware. Pero esto no siempre ha sido así.

En esta presentación veremos la evolución de una aplicación de punto de venta que funciona en producción en miles de tiendas en todo el mundo. Veremos como gestionar una impresora de recibos, visor de cliente, terminal de pagos, balanza... Toda esta evolución de tecnologías vendrá acompañada de demostraciones y de código incluyendo WebUSB y WebBluetooth.

adrianromeroopenbravo

November 20, 2019
Tweet

Other Decks in Technology

Transcript

  1. Las aplicaciones web son todo ventajas • Mutiplataforma • Costes

    reducidos • Despliegue y mantenimiento • Información más segura • ¡¡¡Y además tenemos Javascript!!!
  2. Punto de venta • Impresoras de recibos • Cajones portamonedas

    • Visores de clientes • Dispositivos de pago • Lectores RFID • Impresoras fiscales
  3. Openbravo Hardware Manager HTTP WebSockets Impresoras de recibos Cajones portamonedas

    Visores de clientes Dispositivos de pago Lectores RFID Impresoras fiscales Puente HTTPS Puente CORS Puente Sockets Openbravo Hardware Manager
  4. API Web String origin = request.getHeader ("Origin" ); if (origin

    != null && !origin.equals("")) { response .setHeader ("Access-Control-Allow-Origin" , origin); response .setHeader ("Access-Control-Allow-Methods" , "POST, GET, OPTIONS" ); response .setHeader ("Access-Control-Allow-Headers" , "Content-Type, origin, accept, X-Requested-With" ); response .setHeader ("Access-Control-Max-Age" , "1000"); } HttpConfiguration https = new HttpConfiguration (); https.addCustomizer (new SecureRequestCustomizer ()); SslContextFactory sslContextFactory = new SslContextFactory (); sslContextFactory .addExcludeProtocols ("SSLv3"); sslContextFactory .setKeyStorePath (keystore .getPath()); sslContextFactory .setKeyStorePassword (config.getProperty ("server.keystorepassword" )); sslContextFactory .setKeyManagerPassword (config.getProperty ("server.keymanagerpassword" )); ServerConnector sslConnector = new ServerConnector (srv, new SslConnectionFactory (sslContextFactory, "http/1.1" ), new HttpConnectionFactory (https)); SSL/TSL CORS
  5. Abstracción de dispositivos public interface DevicePrinter { void beginReceipt ();

    void printImage (BufferedImage image); void printBarCode (String type, String position , String code); void beginLine (int iTextSize ); void printText (int iStyle, String sText); void endLine(); void endReceipt (); void openDrawer (); } <?xml version=" 1.0" encoding=" UTF-8"?> <output> <ticket> <line size="1"> <text>Lorem ipsum </text> </line> <line> <text>dolor sit amet, </text> </line> <line> <text>consectetur adipiscing elit, </text> </line> <line> <text>do eiusmod </text> <text bold="true">tempor incididunt </text> </line> <line> <text>ut </text> <text underline=" true">labore et dolore </text> <text> magna aliqua. </text> </line> </ticket> </output> INTERFAZ COMÚN DOCUMENTOS
  6. ZXing • Lector de códigos de barras const firstDeviceId =

    videoInputDevices[0].deviceId; codeReader .decodeFromInputVideoDevice(firstDeviceId, 'video') .then(result => console.log(result.text)) .catch(err => console.error(err));
  7. Intent Android • SumUp, pagos con tarjeta • Summi V2,

    dispositivo integrado <a href={`sumupmerchant://pay/1.0 ?affiliate-key=YOUR_AFFILIATE_KEY &app-id=com.example.myapp &total=1.23 &currency=EUR &title=Taxi Ride &receipt-mobilephone=+3531234567890 &[email protected] &callback=http://example.com/myapp/mycallback`} > Start SumUp Payment </a>
  8. WebBluetooth y WebUSB • Especificaciones en borrador • Soportado por

    Chrome y Opera • Sólo disponible para contextos seguros • Conexión debe ser lanzada por una interacción del usuario • API asíncrono basado en promesas