{"id":120,"date":"2019-05-14T08:09:10","date_gmt":"2019-05-14T06:09:10","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/nexi-dev-training-program-nexi-smartpos\/"},"modified":"2019-11-28T17:31:50","modified_gmt":"2019-11-28T16:31:50","slug":"nexi-dev-training-program-nexi-smartpos","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/","title":{"rendered":"Nexi Dev Training Program: Nexi SmartPOS"},"content":{"rendered":"<p><a style=\"width: 300px; height: 110px;\" href=\"https:\/\/www.codemotion.com\/learning\/tp\/nexi-dev-training-program-20\"><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/1.NEXI-creativita\u0300-header.png\" alt=\"\"><\/a><br \/>\n<em>Scopri di pi\u00f9 sul programma e <a href=\"https:\/\/www.codemotion.com\/learning\/tp\/nexi-dev-training-program-20\" target=\"_blank\" rel=\"noopener noreferrer\">iscriviti gratuitamente<\/a>!<\/em><\/p>\n<p>Il commercio oggi non avviene solo online o offline, ma attraverso tutti i mezzi possibili.<\/p>\n<p>Mobile Commerce, Voice Commerce e Conversational Commerce, tra gli altri, sono solo alcuni esempi di quello che viene generalmente chiamato Omni-Channel Commerce. E con le recenti innovazioni come l&#8217;internet degli oggetti, il modo in cui i vari sistemi fisici e processi interagiscono tra loro \u00e8 totalmente diverso dai modi tradizionali di collegare le cose. Questa evoluzione della tecnologia e delle interazioni tra sistemi fisici e virtuali, i comportamenti di acquisto dei clienti e la capacit\u00e0 di costruire esperienze omni-canale richiede un approccio diverso dalla semplice costruzione di API. I sistemi e i componenti della piattaforma Commerce devono essere progettati e costruiti per l&#8217;interconnettivit\u00e0, l&#8217;interoperabilit\u00e0 e l&#8217;estensibilit\u00e0, consentendo cos\u00ec agli sviluppatori di costruire nuove esperienze di acquisto.<\/p>\n<p>Il Nexi SmartPOS\u00ae, prodotto dalla societ\u00e0 americana POYNT \u00e8 tra i device pi\u00f9 avanzati nel settore con la possibilit\u00e0 per gli sviluppatori di creare applicazioni dedicate mantenendo sempre un elevato livello di sicurezza. Prima di entrare nei dettagli del Nexi SmartPOS\u00ae, esaminiamo i componenti essenziali di un terminale di pagamento e che tipo di ruolo svolgono.<\/p>\n<p>Tradizionalmente i terminali di pagamento sono utilizzati principalmente per l&#8217;elaborazione di una transazione di pagamento basata su carta (credito\/debito). Essi sono tipicamente costituiti da:<\/p>\n<ul>\n<li><strong>Card Reader<\/strong> &#8211; il componente centrale di un terminale che fornisce tutte le interfacce fisiche e logiche per la lettura delle carte di pagamento (Magnetic Swipe, Chip e NFC).<\/li>\n<li><strong>Display<\/strong> &#8211; per visualizzare le richieste di inserimento dati da parte del cliente\/commerciante (come l&#8217;importo da addebitare o la richiesta al cliente di inserire il pin o il tipo di pagamento).<\/li>\n<li><strong>Interfacce hardware esterne<\/strong> &#8211; forniscono connettivit\u00e0 in\/out attraverso varie interfacce fisiche (RJ11\/seriale\/USB) e di rete (Ethernet\/Wifi\/Cellulare). Queste interfacce esterne sono l&#8217;unico modo per le applicazioni di pagamento di autorizzare i pagamenti e interagire con accessori esterni, come ad esempio una stampante fiscale esterna.<\/li>\n<li><strong>Stampante<\/strong> &#8211; \u00c8 molto comune nella maggior parte dei terminali di pagamento fornire una stampante integrata per la stampa delle ricevute di transazione.<\/li>\n<li><strong>Tastiera<\/strong> &#8211; una tastiera numerica per l&#8217;immissione sicura di PIN, importo e altri dettagli necessari per elaborare una transazione di pagamento.<\/li>\n<li><strong>Applicazione di pagamento<\/strong> &#8211; software che riunisce tutto per consentire a un commerciante di elaborare un pagamento. Organizza il lettore di carte, il display e altre interfacce in base alle esigenze del merchant o dell\u2019acquirente.<\/li>\n<\/ul>\n<p>Oltre a queste sul terminale stesso, la maggior parte dei fornitori di terminali fornisce alcuni altri servizi\/caratteristiche come:<\/p>\n<ul>\n<li><strong>Gestione Terminale\/Stato<\/strong> &#8211; questo fornisce un modo per gestire a distanza ogni terminale per la manutenzione, gli aggiornamenti software, l&#8217;assistenza tecnica, ecc.<\/li>\n<li><strong>Gestione della sicurezza<\/strong> &#8211; fornisce un modo per gestire le configurazioni dei lettori di carte, le chiavi di crittografia, ecc.<\/li>\n<\/ul>\n<p>Sfortunatamente, la maggior parte dei terminali li tratta come componenti indipendenti e fornisce un accesso di basso livello ai componenti fisici e logici (quasi a livello di driver del dispositivo nella maggior parte dei casi). Anche se questo sembra molto flessibile per gli sviluppatori, essendo in grado di utilizzare questi componenti in qualsiasi modo essi vogliano, porta le sfide <strong>con integrazioni, sicurezza e certificazioni<\/strong>.<\/p>\n<h2>Sfide con l&#8217;integrazione<\/h2>\n<p>Tutti i terminali sono dotati di un sistema operativo (chiamato anche &#8220;application controller&#8221;) con diversi livelli di programmabilit\u00e0 e accesso alle caratteristiche principali dell&#8217;hardware del terminale. In genere tutti forniscono un SDK per gli sviluppatori di applicazioni per costruire le loro applicazioni, che al termine vengono presentate per le certificazioni e le approvazioni prima di poter essere installate su terminali di pagamento reali presso i punti vendita.<\/p>\n<p>Ogni applicazione fornisce un insieme distinto di caratteristiche e sono esposte al commerciante attraverso l&#8217;interfaccia del controller dell&#8217;applicazione sul terminale. Sfortunatamente non c&#8217;\u00e8 quasi nessuna struttura o interfacce fornite per aiutare queste applicazioni a collaborare tra loro, con il risultato di un lungo elenco di applicazioni completamente autonome. Un esempio di questo \u00e8 quello che vediamo quando acquistando in un negozio, il commerciante che cerca di selezionare diverse combinazioni di pulsanti per richiamare diverse applicazioni per diverse esigenze (ad esempio, carta regalo vs carta di credito, credito vs debito, ecc.<\/p>\n<h2>Sfide per la sicurezza<\/h2>\n<p>Le applicazioni che sono costruite per queste piattaforme tipicamente girano all&#8217;interno di ambienti sicuri necessari per soddisfare tutti i requisiti di sicurezza del PCI Council, Card Networks e Acquiring Bank.<\/p>\n<p>Purtroppo, sebbene questi requisiti di sicurezza siano essenziali per proteggere le informazioni sensibili sulle carte di pagamento dei consumatori, hanno un costo:<\/p>\n<ul>\n<li>Requisiti aggiuntivi che aumentano i costi di sviluppo delle applicazioni di pagamento<\/li>\n<li>Lunghi cicli di collaudo e certificazione<\/li>\n<\/ul>\n<p>Il tempo prolungato di implementazione rallenta significativamente l&#8217;efficacia del rilascio di nuove funzionalit\u00e0 e la mancanza di flessibilit\u00e0 nella gestione del software ha un forte impatto sul ciclo di sviluppo del software.<\/p>\n<h2>Sfide con le certificazioni<\/h2>\n<p>Come accennato in precedenza, ogni terminale di pagamento deve passare attraverso una lunga lista di certificazioni necessarie alle varie organizzazioni normative e finanziarie prima di poter operare in un punto vendita per elaborare le transazioni.<\/p>\n<p>Queste includono certificazioni che sono tipicamente chiamate certificazioni <strong>L1<\/strong> (hardware e livello di comunicazione per Contact e Contactless), <strong>L2<\/strong> (EMVCo per Contact e per ogni rete di pagamento per Contactless), e, non ultimo, un altro lungo ciclo di certificazione con ogni acquirer con cui l&#8217;applicazione di pagamento in esecuzione sul terminale si integra.<\/p>\n<p>Questi processi di certificazione richiedono l&#8217;accesso a strumenti di test aggiuntivi (solitamente piuttosto costosi) per eseguire e valutare tutti i casi di test definiti dalle reti di pagamento prima di presentare le necessarie approvazioni.<\/p>\n<h2>Costruire la piattaforma<\/h2>\n<p>Con le sfide a portata di mano e l&#8217;obiettivo di consentire integrazioni pi\u00f9 semplici ed esperienze integrate, l\u2019approccio del Nexi SmartPOS\u00ae \u00e8 iniziato con la scomposizione dei componenti hardware e software in diversi livelli di astrazione, esponendo le funzionalit\u00e0 come API in base alle esigenze di integrazione eseguendo alcuni principi fondamentali:<\/p>\n<ul>\n<li><strong>API per ogni componente del terminale (API First)<\/strong> &#8211; questo va dal rendering di un messaggio personalizzato dell&#8217;interfaccia utente sul display, all&#8217;elaborazione di una transazione attraverso il processore.<\/li>\n<li><strong>I dati e le API si estendono oltre il terminale<\/strong> &#8211; disponibili come semplici interfacce esterne RESTful per qualsiasi altro sistema o applicazione che ne abbia bisogno.<\/li>\n<li><strong>L&#8217;interoperabilit\u00e0<\/strong> sia all&#8217;interno delle applicazioni che con i componenti esterni \u00e8 un must.<\/li>\n<li><strong>Nessuna integrazione personalizzata 1:1<\/strong> tra le applicazioni.<\/li>\n<li><strong>Sicurezza integrata<\/strong>.<\/li>\n<li><strong>Facilit\u00e0 di integrazione<\/strong> &#8211; non sono necessari strumenti personalizzati; gli sviluppatori dovrebbero essere in grado di utilizzare i moderni strumenti di sviluppo e risoluzione dei problemi pi\u00f9 comunemente utilizzati.<\/li>\n<\/ul>\n<p><a style=\"width: 300px; height: 110px;\" href=\"https:\/\/www.codemotion.com\/learning\/tp\/nexi-dev-training-program-20\"><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/fig1-large-1510570566487.jpg\" alt=\"\"><\/a><\/p>\n<p>Utilizzando questi principi, sono stati definiti i seguenti servizi di base per astrarre le funzionalit\u00e0 come appropriato:<\/p>\n<p><strong>Card Reader Service<\/strong> &#8211; invece di fornire l&#8217;accesso a interfacce di basso livello per il lettore di carte che darebbero accesso ai dati sensibili della carta a tutti, sono state create API funzionali per elaborare i dati della carta in base alle esigenze dell&#8217;applicazione. Ci\u00f2 include l&#8217;esecuzione di una transazione con carta per elaborare un pagamento, la lettura di una carta di non pagamento per fedelt\u00e0 e altri casi d&#8217;uso. Tutti i dati sono criptati all&#8217;interno dei servizi di lettura della carta, evitando completamente l&#8217;esposizione di qualsiasi dato sensibile alle applicazioni e quindi la necessit\u00e0 di una conformit\u00e0 PCI.<\/p>\n<p><strong>Commerce Services<\/strong> &#8211; forniscono il supporto per le varie funzionalit\u00e0 relative al commercio come la gestione degli ordini, la gestione delle transazioni, la gestione dei clienti, cataloghi\/prodotti, ecc. e anche una rappresentazione coerente delle varie risorse dati relative al commercio. Questi servizi per il commercio diventano anche il punto di integrazione centrale per tutte le applicazioni in esecuzione sul terminale per interagire tra loro al servizio di vari aspetti di un&#8217;attivit\u00e0 commerciale.<\/p>\n<p><strong>Payment Experiences<\/strong> &#8211; forniscono un&#8217;esperienza standardizzata per tutti i metodi di pagamento ed eliminano l&#8217;inutile onere di certificazioni di pagamento ripetute per ogni integrazione.<\/p>\n<p><strong>Accessory Management Service<\/strong> &#8211; fornisce un elenco di vari servizi che gestiscono la connettivit\u00e0 agli accessori esterni (stampanti, bilance, cassetti di cassa, registratori di cassa, ecc) collegati al terminale e un modo pi\u00f9 semplice per interagire con loro. Diversi API Contracts sono definiti per diverse tipologie di accessori. Ad esempio, un&#8217;interfaccia accessori per cassetto cassa ha semplici metodi &#8220;open()&#8221; e &#8220;isOpen()&#8221; piuttosto che un comando USB di basso livello per inviare uno specifico valore di byte grezzo per aprire un cassetto allegato.<\/p>\n<p><strong>Accessory Management Service<\/strong> &#8211; fornisce un elenco delle varie capability installate sulle piattaforme e la possibilit\u00e0 di collegarle e utilizzarle. Le funzionalit\u00e0 includono l&#8217;elaborazione delle transazioni, la stampa delle ricevute, le carte fedelt\u00e0, i buoni sconto, la gestione dei clienti, ecc. La gestione delle capability gioca il ruolo pi\u00f9 importante nell&#8217;interoperabilit\u00e0 tra le varie applicazioni in esecuzione sul terminale.<\/p>\n<p><strong>External Connector Service<\/strong> &#8211; fornisce un&#8217;interfaccia per esporre la maggior parte delle interfacce disponibili sul terminale ad applicazioni esterne collegate tramite USB, BT o rete.<\/p>\n<p><strong>Cloud Services<\/strong> &#8211; fornisce le interfacce necessarie per estendere i servizi sul terminale oltre il terminale stesso. Questi servizi forniscono l&#8217;accesso alle stesse funzionalit\u00e0 e, cosa ancora pi\u00f9 importante, l&#8217;accesso agli stessi dati commerciali tramite cloud, fornendo un accesso pi\u00f9 facile alle applicazioni in esecuzione nel cloud. Il servizio Cloud fornisce anche la necessaria gestione della configurazione per vari componenti come il lettore di schede, la gestione delle chiavi di sicurezza, ecc.<\/p>\n<p>Per illustrare come questi componenti si uniscono dal punto di vista dell&#8217;implementazione e dell&#8217;integrazione, esamineremo un flusso di transazioni di pagamento end-to-end sul Poynt Smart Terminal e successivamente la creazione di una applicazione per la gestione degli ordini.<\/p>\n<p><a style=\"width: 300px; height: 110px;\" href=\"https:\/\/www.codemotion.com\/learning\/tp\/nexi-dev-training-program-20\"><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/fig2-large-1510570566192.jpg\" alt=\"\"><\/a><\/p>\n<p>Sul Terminale, ogni transazione inizia da un&#8217;applicazione che l&#8217;esercente sta utilizzando per gestire la propria attivit\u00e0. Il seguente diagramma di flusso vi guida attraverso i vari passaggi e fasi di una transazione di pagamento sul Poynt Smart Terminal. Le chiamate evidenziate in rosso indicano le API funzionali fornite dai servizi corrispondenti.<\/p>\n<p>Mentre questo sembra un processo lungo, alcuni importanti insegnamenti che vorrei richiamare sono:<\/p>\n<ul>\n<li><strong>API funzionali<\/strong> &#8211; riducono enormemente lo sforzo di integrazione attraverso l&#8217;astrazione ad alto livello.<\/li>\n<li><strong>Service Discovery<\/strong> &#8211; essere in grado di scoprire i servizi disponibili sul terminale aggiunge la flessibilit\u00e0 di trovare un servizio appropriato che meglio si adatta alle esigenze dell&#8217;applicazione. Che si tratti di un servizio per inviare e-mail, o di un servizio per elaborare una transazione, o di un servizio per rendere una schermata specifica per raccogliere dati dal consumatore &#8211; la possibilit\u00e0 di scoprire e connettersi programmaticamente non solo aggiunge un valore significativo per gli sviluppatori di applicazioni e fornisce anche una buona piattaforma per l&#8217;estensibilit\u00e0.<\/li>\n<li><strong>Modelli di risorse<\/strong> &#8211; mentre le API per ogni componente possono differire in termini di formati di protocollo in base al tipo di componente\/servizio, fornire e mantenere modelli di dati coerenti tra loro gioca un ruolo molto importante per l&#8217;interoperabilit\u00e0. Questo non solo aiuta a far passare i dati attraverso diverse API senza richiedere molte trasformazioni, ma aiuta anche ad estendere i modelli di dati come API RESTful per le applicazioni in esecuzione nel cloud.<\/li>\n<li><strong>API standardizzate per l&#8217;interoperabilit\u00e0<\/strong> &#8211; mentre il Service Discovery fornisce un modo piacevole per trovare i servizi disponibili quando \u00e8 necessario, essi aggiungono poco valore quando si tratta di integrazione se le loro interfacce di servizio non sono standardizzate e predefinite dalla piattaforma. Definire e fornire il framework per le interfacce standard per tutte le possibili capability e servizi accessori della piattaforma \u00e8 un passo necessario per l&#8217;estensibilit\u00e0 della piattaforma. Non c&#8217;\u00e8 modo di prevedere le esigenze e le caratteristiche di ogni possibile capacit\u00e0 e accessorio &#8211; quindi \u00e8 molto importante mantenere un processo aperto per questo per consentire agli sviluppatori un ecosistema che li aiuti a definirli.<\/li>\n<\/ul>\n<p>Mentre l&#8217;approccio API-First \u00e8 un passo necessario in qualsiasi azienda o prodotto, concentrarsi su come sistemi e applicazioni (sia interne che esterne) si integrano e interagiscono tra loro \u00e8 essenziale per il successo di qualsiasi piattaforma.<\/p>\n<p>Vediamo come questi concetti si applicano allo sviluppo di una applicazione per la gestione degli ordini tramite una applicazione di gestione nativa.<\/p>\n<p>Un&#8217;applicazione nativa di gestione dell\u2019ordine pu\u00f2 essere costruita per lavorare con Poynt. Ecco i passi da seguire:<\/p>\n<p><strong>1.<\/strong> Implicit Authorization, tramite l\u2019inserimento dei seguenti permessi nel manifest della nostra App Android<\/p>\n<p>a. <strong>Order Service<\/strong>: <code>poynt.permission.ORDER_SERVICE<\/code><br \/>\nb. <strong>Customer Service<\/strong>: <code>poynt.permission.CUSTOMER_SERVICE<\/code><\/p>\n<p>Quando un merchant abilita l\u2019 App, questi permessi sono implicitamente abilitati<\/p>\n<p><strong>2.<\/strong> Creazione di un client (esempio di chiamata e risposta)<\/p>\n<p><em>Esempio Chiamata<\/em><\/p>\n<p><script src=\"https:\/\/pastebin.com\/embed_js\/2j4d0BC7\"><\/script><\/p>\n<p><em>Esempio Risposta<\/em><\/p>\n<p><script src=\"https:\/\/pastebin.com\/embed_js\/LJFtEH08\"><\/script><\/p>\n<p>Il valore \u201cid\u201d (in questo caso 45494460) corrisponde all&#8217;ID cliente. Questo valore pu\u00f2 essere passato all&#8217;ordine per visualizzare i dettagli del cliente.<\/p>\n<p><strong>3.<\/strong> Creazione di un ordine (esempio di chiamata e risposta)<\/p>\n<p><em>Esempio Chiamata<\/em><\/p>\n<p><script src=\"https:\/\/pastebin.com\/embed_js\/LJFtEH08\"><\/script><\/p>\n<p><em>Esempio Risposta<\/em><\/p>\n<p><script src=\"https:\/\/pastebin.com\/embed_js\/NLqzfgTa\"><\/script><\/p>\n<p>A questo punto l&#8217;Ordine \u00e8 stato creato con successo. Un messaggio Poynt Cloud viene inviato al terminale per l&#8217;ordine appena creato.<\/p>\n<p><strong>4.<\/strong> Sottoscrizione all\u2019interno del Activity della applicazione agli Intent di tipo \u201cORDER DETAILS INTENT\u201d<\/p>\n<p><strong>5.<\/strong> Quando un utente tappa sulla notifica di ordine sul terminale, un <code>Intents.ACTION_GO_TO_ORDER_DETAILS<\/code> pu\u00f2 essere intercettato per creare una view di dettaglio custom all\u2019interno dell\u2019applicazione.<\/p>\n<p><a style=\"width: 300px; height: 110px;\" href=\"https:\/\/www.codemotion.com\/learning\/tp\/nexi-dev-training-program-20\"><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/OrderAhead3.jpg\" alt=\"\"><\/a><\/p>\n<p>Questo esempio mostra come si pu\u00f2 gestire in modo semplice la notifica di un nuovo ordine, garantendo allo stesso tempo sicurezza e integrit\u00e0 delle informazioni.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Scopri di pi\u00f9 sul programma e iscriviti gratuitamente! Il commercio oggi non avviene solo online o offline, ma attraverso tutti i mezzi possibili. Mobile Commerce, Voice Commerce e Conversational Commerce, tra gli altri, sono solo alcuni esempi di quello che viene generalmente chiamato Omni-Channel Commerce. E con le recenti innovazioni come l&#8217;internet degli oggetti, il&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/\">Read more<\/a><\/p>\n","protected":false},"author":64,"featured_media":121,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[33],"tags":[],"collections":[],"class_list":{"0":"post-120","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-mobile-dev","8":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Nexi Dev Training Program: Nexi SmartPOS - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nexi Dev Training Program: Nexi SmartPOS\" \/>\n<meta property=\"og:description\" content=\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-14T06:09:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-11-28T16:31:50+00:00\" \/>\n<meta name=\"author\" content=\"Codemotion\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Codemotion\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/\"},\"author\":{\"name\":\"Codemotion\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/201bb98b02412383686cced7521b861c\"},\"headline\":\"Nexi Dev Training Program: Nexi SmartPOS\",\"datePublished\":\"2019-05-14T06:09:10+00:00\",\"dateModified\":\"2019-11-28T16:31:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/\"},\"wordCount\":2157,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/nexi-smartpos.jpg\",\"articleSection\":[\"Mobile Developer\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/\",\"name\":\"Nexi Dev Training Program: Nexi SmartPOS - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/nexi-smartpos.jpg\",\"datePublished\":\"2019-05-14T06:09:10+00:00\",\"dateModified\":\"2019-11-28T16:31:50+00:00\",\"description\":\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/nexi-smartpos.jpg\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/nexi-smartpos.jpg\",\"width\":830,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/nexi-dev-training-program-nexi-smartpos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Mobile Developer\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/mobile-dev\\\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Nexi Dev Training Program: Nexi SmartPOS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/201bb98b02412383686cced7521b861c\",\"name\":\"Codemotion\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/cropped-codemotionlogo-150x150.png\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/cropped-codemotionlogo-150x150.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/cropped-codemotionlogo-150x150.png\",\"caption\":\"Codemotion\"},\"description\":\"Articles wirtten by the Codemotion staff. Tech news, inspiration, latest treends in software development and more.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/CodemotionIT\"],\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/codemotion-2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nexi Dev Training Program: Nexi SmartPOS - Codemotion Magazine","description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/","og_locale":"en_US","og_type":"article","og_title":"Nexi Dev Training Program: Nexi SmartPOS","og_description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","og_url":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2019-05-14T06:09:10+00:00","article_modified_time":"2019-11-28T16:31:50+00:00","author":"Codemotion","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Codemotion","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/"},"author":{"name":"Codemotion","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c"},"headline":"Nexi Dev Training Program: Nexi SmartPOS","datePublished":"2019-05-14T06:09:10+00:00","dateModified":"2019-11-28T16:31:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/"},"wordCount":2157,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg","articleSection":["Mobile Developer"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/","url":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/","name":"Nexi Dev Training Program: Nexi SmartPOS - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg","datePublished":"2019-05-14T06:09:10+00:00","dateModified":"2019-11-28T16:31:50+00:00","description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg","width":830,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/nexi-dev-training-program-nexi-smartpos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Frontend","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/"},{"@type":"ListItem","position":3,"name":"Mobile Developer","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/"},{"@type":"ListItem","position":4,"name":"Nexi Dev Training Program: Nexi SmartPOS"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c","name":"Codemotion","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","caption":"Codemotion"},"description":"Articles wirtten by the Codemotion staff. Tech news, inspiration, latest treends in software development and more.","sameAs":["https:\/\/x.com\/CodemotionIT"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-600x600.jpg","author_info":{"display_name":"Codemotion","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg",830,675,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-300x244.jpg",300,244,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-768x625.jpg",768,625,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg",830,675,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg",830,675,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg",830,675,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos.jpg",100,81,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-830x504.jpg",830,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/05\/nexi-smartpos-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Codemotion","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"},"uagb_comment_info":0,"uagb_excerpt":"Scopri di pi\u00f9 sul programma e iscriviti gratuitamente! Il commercio oggi non avviene solo online o offline, ma attraverso tutti i mezzi possibili. Mobile Commerce, Voice Commerce e Conversational Commerce, tra gli altri, sono solo alcuni esempi di quello che viene generalmente chiamato Omni-Channel Commerce. E con le recenti innovazioni come l&#8217;internet degli oggetti, il&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=120"}],"version-history":[{"count":2,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/120\/revisions"}],"predecessor-version":[{"id":755,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/120\/revisions\/755"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/121"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=120"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}