Introduzione a Google Checkout

2,039 views
2,010 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,039
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduzione a Google Checkout

  1. 1. Google e i pagamenti elettronici Firenze GTUG, 15.04.2011 Luca Masini
  2. 2. Agenda Introduzione a Google Checkout Intro alle API ed esempi di utilizzo Carrello personalizzato In-App billing Android Payment Extensions
  3. 3. Il mercato dei merchant server Indice di gradimento dei venditori I voti sono da 1 a 10 Checkout ottiene un voto > 7 in 5 indicatori su 6 Lunico che ottiene un voto > 7 nellindice di gradimento dei compratori e PayPal
  4. 4. Google Checkout: cosa ha di nuovo ?? Merchant server: 1° in Italia CRF (1998) Pagamenti senza fornire tutte le volte i propri dati sensibili (conto corrente o carta di credito): PayPal Bottone x pagamento immediato e carrello di prodotti eterogenei: molti altri prima di lui
  5. 5. Ma allora perché Google Checkout ?? Integrazione con OAuth --> sensazione di sicurezza dellecosistema Google. Facile da implementare, grazie alle API ed ai Gadget. É il sistema di pagamento dellAndroid Market
  6. 6. Prima di cominciare: Sandbox Grande disponibilitá di strumenti per sviluppatori Sandbox - due componenti: Un gestore di account utenti Merchant non dispositivi Componenti che danno la possibilitá di testare Checkout senza alcun vincolo sulle transazioni effettuate NOTE: purtroppo per usarlo dobbiamo invocare URL diverse dalla produzione !!!
  7. 7. Prima di cominciare: Sandboxmerchant key (mkey) - merchant id--> Hello World di Checkout:curl -k -u {mid}:{mkey} -d "<hello xmlns=http://checkout.google.com/schema/2/>" "https://sandbox.google.com/checkout/api/checkout/v2/request/Merchant/{mid}"se laccount e attivo deve rispondere un "bye"<?xml version="1.0" encoding="UTF-8"?><bye xmlns="http://checkout.google.com/schema/2" serial-number="a587860e-265b-4cbd-9a34-5fd1cac8aa11" />
  8. 8. Esempio API: Checkout con carrello Implementazione di un carrello in pochi minuti Dobbiamo aggiungere il JavaScript del carrello<script id="googlecart-script" type="text/javascript" src="http://checkout.google.com/seller/gsc/v2/cart.js?mid={mid}" currency="USD" post-cart-to-sandbox="true"> </script> Lo aggiungiamo alla pagina: <div id="googlecart-widget" class="align-cart"></div>
  9. 9. Esempio API: Checkout con carrello Qui descriviamo il prodotto aggiungendo al nostrocustom HTML delle classi CSS che verranno usatecome selettori dal cart per definirne le proprietá:<table> <tr class="product"> <td><img class="product-image" src="customLogo.gif"/> </td> <td class="data-cell"> <div class="product-title">GTUG Firenze Logo</div> <div class="product-price">Price: $0.99</div> <div class="product-shipping">Shipping: $0.00</div><br/> <div role="button" alt="Add to cart" tabindex="0" class="googlecart-add-button"> </div> </td> </tr></table>
  10. 10. Esempio API: Checkout con carrello Demo su Eclipse: Risultato su GAE: http://4.lu28882.appspot.com/
  11. 11. Carrello personalizzato Se dobbiamo integrarci in un sito di e-commerce giá esistente (e non tra quelli giá supportati) o se per qualche motivo non vogliamo/possiamo usare il carrello di Checkout, allora dobbiamo far uso delle API per creare gli ordini da mandare a Checkout Ora scriveremo una Servlet che simula un sistema di e- commerce che allultimo step chiama Checkout con il carrello giá riempito Ovviamente per questo esempio abbiamo bisogno delle Checkout Java API reperibili a questo indirizzo: http://code.google.com/p/google-checkout-java-sdk
  12. 12. Carrello personalizzatopublic class CreateCartServlet extends HttpServlet { private static final long serialVersionUID = 1L; public static ApiContext API_CONTEXT = new ApiContext( Environment.SANDBOX, "{mid}", "{mkey}", "USD"); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { CheckoutRedirect checkoutRedirect = API_CONTEXT.cartPoster().makeCart() .addItem("GTUG Firenze Logo", "Il nostro bellissimo logo", 0.99, 2) .addItem("GWT Intro Logo", "Primo evento su GWT", 0.50, 1) .buildAndPost(); resp.sendRedirect(checkoutRedirect.getRedirectUrl()); }}AppEngine: http://4.lu28882.appspot.com/createcart
  13. 13. Carrello personalizzato
  14. 14. Carrello personalizzato: gestione ordini Abbiamo creato un ordine su Checkout Ora dobbiamo gestirlo !!!! Per questo dobbiamo: configurare sul merchant la nostra callback URL, chiamata ad ogni evento (https://sandbox.google. com/checkout/sell/) implementare sul nostro server la FSM che gestisce gli eventi lato negozio Se usiamo le API di Google limplementazione della FSM é semplificato da una helper-class che si occupa di fare il parsing della URL e di chiamare i callback methods appropriati
  15. 15. Carrello personalizzato:configurazione callback URL sul merchant
  16. 16. Carrello personalizzato:implementazione della FSM @Override public void doPost(HttpServletRequest request, HttpServletResponse response) { API_CONTEXT.handleNotification(new BaseNotificationDispatcher(request, response) { @Override protected void rememberSerialNumber(String serialNumber, OrderSummary orderSummary, Notification notification) { service.persist(serialNumber); } @Override public boolean hasAlreadyHandled(String serialNumber, OrderSummary orderSummary, Notification notification) { return service.isPersistent(serialNumber); } }
  17. 17. Carrello personalizzato:implementazione della FSM Tutti i particolari della FSM sono a carico delle API di Google Checkout, unica cosa a carico dello sviluppatore é mantenere traccia del numero di serie delle chiamate, implementando i metodi rememberSerialNumber e hasAlreadyHandled (chiamate duplicate). Il metodo onAllNotifications é chiamato invece ad ogni invocazione della URL di callback e ci permette di effettuare azioni trasversali ad ogni stato, banalmente logging. Infine il metodo piú importante é onAuthorizationAmountNotification che ci avverte che lautorizzazione al pagamento é stata ottenuta e quindi possiamo "spedire" la nostra merce.
  18. 18. Carrello personalizzato: ricevimento callbackQui riceviamo levento new-order-notification e visto che ilnostro codice non specifica una callback il logger visualizzasolo la registrazione del serialNumber e la chiamataallonAllNotifications 2011-04-03 02:48:01.773 /createcart 200 6523ms 240cpu_ms 0kb Google Checkout Notification Agent 1.0,gzip(gfe) 74.125.126.82 - - [03/Apr/2011:02:48:01 -0700] "POST /createcart HTTP/1.1" 200 171 - "Google Checkout Notification Agent 1.0,gzip(gfe)" "4.lu28882.appspot.com" ms=6524 cpu_ms=7770 api_cpu_ms=0 cpm_usd=0.216077 loading_request=1 E2011-04-03 02:48:01.726net.lucamasini.checkout.servlet.CreateCartServlet$1 isPersistent: isPersistent: 443704066646623-00001-7 E2011-04-03 02:48:01.728net.lucamasini.checkout.servlet.CreateCartServlet$2 onAllNotifications: onAllNotifications: Order 443704066646623 authorized and ready to ship to:Luca Masini E2011-04-03 02:48:01.728net.lucamasini.checkout.servlet.CreateCartServlet$1 persist: persist:443704066646623-00001- 7
  19. 19. Carrello personalizzato: ricevimento callbackEcco il secondo ed ultimo evento authorization-amount-notification nel quale ci segnala che il sistema haautorizzato il pagamento, qui levento é correttamenteintercettato dalla callbackonAuthorizationAmountNotification 2011-04-03 02:49:04.357 /createcart 200 347ms 280cpu_ms 0kb Google Checkout Notification Agent 1.0,gzip(gfe) 72.14.212.82 - - [03/Apr/2011:02:49:04 -0700] "POST /createcart HTTP/1.1" 200 171 - "Google Checkout Notification Agent 1.0,gzip(gfe)" "4.lu28882.appspot.com" ms=348 cpu_ms=280 api_cpu_ms=0 cpm_usd=0.008029 E2011-04-03 02:49:04.334net.lucamasini.checkout.servlet.CreateCartServlet$1 isPersistent: isPersistent: 443704066646623-00005-6 E2011-04-03 02:49:04.334net.lucamasini.checkout.servlet.CreateCartServlet$2 onAllNotifications: onAllNotifications: Order 443704066646623 authorized and ready to ship to:Luca Masini E2011-04-03 02:49:04.334net.lucamasini.checkout.servlet.CreateCartServlet$2 onAuthorizationAmountNotification: onAuthorizationAmountNotification: Order 443704066646623 authorized and ready to ship to:Luca Masini E2011-04-03 02:49:04.335net.lucamasini.checkout.servlet.CreateCartServlet$1 persist: persist:443704066646623-00005- 6
  20. 20. In-App Billing... an Android Market service that provides checkoutprocessing for in-app purchase. ovverosi possono accettare pagamenti direttamente allinterno delle appicazioni. The standard 30% transaction fee applies to in-app transactions on Android Market. "Today, were pleased to announce the launch of Android Market In-app Billing to developers and users. As an Android developer, you will now be able to publish apps that use In-app Billing and your users can make purchases from within your apps." --- 29 March 2011
  21. 21. In-App Billing: a patto che Only in applications that you publish through Android Market. You must have a Google Checkout Merchant account. You cannot implement in-app billing on a device that never connects to the networkYou can use in-app billing to sell only digital content. You cannotuse in-app billing to sell physical goods, personal services, oranything that requires physical delivery.Android Market does not provide any form of content delivery. Youare responsible for delivering the digital content that you sell in yourapplications.+ qualche complicazione circa le versioni di android/Marketapp ecc...
  22. 22. In-App Billing: schemaYour application sends andreceives billing messagesthrough theAndroid Market application(via a single IPC methodsendBillingRequest), whichhandles all communicationwith the Android Marketserver.
  23. 23. In-App Billing: schema 1. Applications initiate in- app billing requests through their own UI. 2. Android Market responds to the request by providing the checkout user interface. 3. When checkout is complete, the application resumes.
  24. 24. In-App Billing:BILLING_REQUEST ="REQUEST_PURCHASE" http://developer.android.com/guide/market/billing/index.html http://www.anddev.org/advanced-tutorials-f21/simple-inapp-payment-t52060.htmlYou cannot use the Android emulator to test in-app billing.
  25. 25. Google CheckoutAndroid Payment ExtensionEstensione di Chome che permette di completare un acquistotramite SmartPhone:Usando Chrome da un PC per visualizzare il carrello, vienemesso a disposizione un bottone verde col simbolo diAndroid che permette di fare lordine su un PC o laptop(magari ad una fiera) e di completarlo sul proprio cellularecosi da non dover immettere le proprie credenziali Google suun computer "pubblico".
  26. 26. Google CheckoutAndroid Payment ExtensionCreazione di uno store usando il Google Gadget Wizard: https://storegadgetwizard.appspot.com/storegadgetwizard/
  27. 27. Riferimentihttp://code.google.com/intl/it-IT/apis/checkout/developer/Google_Checkout_Shopping_Cart_Annotating_Pages.htmlhttp://googlecheckout.blogspot.com/2010/06/pay-on-go-with-android-payment.htmlhttps://chrome.google.com/extensions/detail/omomllobcfbllglbhpmafongpckhdcdnhttp://developer.android.com/guide/market/billing/index.htmlhttp://www.anddev.org/advanced-tutorials-f21/simple-inapp-payment-t52060.html

×