- From: Jorge Zaccaro <jorgezaccaro@gmail.com>
- Date: Thu, 17 Apr 2014 03:00:46 -0500
- To: Dave Raggett <dsr@w3.org>, melvincarvalho@gmail.com, "public-webpayments@w3.org" <public-webpayments@w3.org>
- Message-ID: <CAPnSDnMejBJLJkbEe3ctLSW_957Q2b85MN+J0rL_nhPuA3dnkg@mail.gmail.com>
Thank you very much for your feedback Dave, I find it really valuable, specially because I hadn't thought about the decoupling problem yet. Loosely coupling web apps and wallets would be a matter of *interoperability* I guess, i.e. making sure that wallet providers allow their users to request and send payments to wallets hosted in other clouds (something like friending people across different social networks). This would prevent web apps from being tied to a specific wallet provider by embedding a vendor-specific payment button or form, and instead could enable them to accept general wallet payments by embedding *vendor-agnostic forms* such as those used for credit cards. However, that loosely coupling would inexorably be constrained by the underlying banking infrastructure (e.g. merchant accounts, payment processing networks) required to perform the actual funds transfers between buyers and sellers (that might involve different jurisdictions), so perfect decoupling would probably be really hard to achieve. As far as the user interface is concerned, I think it's very important to take into account the various types of agents a wallet provider might be interacting with, because in order to allow multiple means of payment they would have to be able to carry out funding transactions in a uniform way not only with credit cards and bank accounts, but also with mobile carriers (via SMS), prepaid recharge networks (via PINs) and POS terminals taking cash at general purpose stores, for example. Although it might be difficult to get different agents to work with a Web API if they're not used to that, I think this approach is very uniform and flexible, and would allow different application servers to implement *customized user interfaces from a well defined set of API calls* when they are ready to do so. The browser handling would also be flexible and up to the web apps since making calls to a Web API using HTML plugins and a JavaScript SDK imposes no restrictions on using windows, tabs or iframes. Regarding the abnormal conditions scenarios, I defined the WebWallet transactions to be bilateral and based on tokens with an expiration date, meaning that if one party initiates a transaction by obtaining a transaction token, the transaction can only be completed by the other party using the transaction token that was created by and received from the initiator party. Besides enabling the creation of a secure system where wallet IDs are public (e.g. URIs, mobile numbers), this *token-based bilateral transaction approach* could handle deviations from the normal transaction flow like pressing the back button or closing/crashing the browser tab/window. As long as the transaction token was created and has not expired by the time the user goes back to the web app after turning on the device again, opening the browser tab/window and/or restoring the internet connection, the web app should be able to complete the transaction using the same transaction token or check its state by making an API call to the transaction URI. I totally agree that the goal is to encourage innovation and competition amongst wallet providers rather than tying web apps to a specific wallet with fixed functionality, and the way to do that is to create something open and interoperable. I will incorporate these suggestions about decoupling and user interfaces to wallets into the design of the WebWallet API <https://github.com/playbanq/webwalletapi>, and off course I will be open for exchanging more feedback as I continue to participate in the group. By the way, one question: What do you mean by *"**The browser itself would need to provide a means for users to review which wallets are currently registered and to unregister any of them that the user chooses**"*? You mean the wallets would be stored and handled by the browser via (offline) web apps (e.g. chrome apps, firefox add-ons)? Or generally speaking about (cloud-based) web apps? On Wed, Apr 16, 2014 at 6:20 AM, Melvin Carvalho <melvincarvalho@gmail.com>wrote: > > > > On 16 April 2014 13:16, Dave Raggett <dsr@w3.org> wrote: > >> >> On 15/04/14 16:40, Jorge Zaccaro wrote: >> >>> Dave, >>> >>> I agree that there's a 'need for an open standard that decouples web >>> pages from wallets and payment solutions', and that's why I started working >>> on a WebWallet API specification (https://github.com/playbanq/ >>> webwalletapi) and joined the WebPayments group last week to learn where >>> things are being headed to. I'd love to learn more about the group's >>> opinions and vision on wallets for the Web. >>> >>> >> Hi Jorge, >> >> Thanks to the pointer to your proposal. It defines a RESTful interface to >> a cloud based wallet, but it doesn't define how to decouple web >> applications from wallets, nor does it define the user interface for the >> wallet (e.g. for checking the balance or adding funds). >> >> Decoupling web applications from wallets would involve a means for apps >> to request payments, a means for users to register and unregister wallets, >> and a means for users to select which wallet to use for a payment request >> if multiple wallets are registered. >> >> For registration, a wallet could be identified by a URI. That leaves open >> the nature of the interface between the browser and the wallet. One idea, >> as you suggest, is to define a RESTful interface for payment requests. >> However, there is also the need for a user interface to the wallet, and >> the least constraining way to support that is as a web application. The >> user experience and functionality of the wallet would then be up to the >> implementers, who would be free to innovate and distinguish themselves from >> other wallet implementations. >> >> Following the precedent set by web intents, if a user visits a wallet >> application, the application register itself, subject to confirmation by >> the user. The browser itself would need to provide a means for users to >> review which wallets are currently registered and to unregister any of them >> that the user chooses. >> >> Physical wallets typically contain multiple means of payment, and we >> should allow the same for virtual wallets. This implies a need for the >> wallet to present a user interface to allow the user to choose how to pay >> for a given payment request. This too could be realized as a web >> application. >> >> A further question is how this application is handled by the browser, for >> instance, does it take over the browser window/tab (or screen on mobile >> devices) or does it execute within an IFRAME element? The latter could be >> appropriate on desktop page layouts, and suggests the need for the web >> application to optionally pass an IFRAME element as part of the payment >> request API. >> >> The lesson from web intents is the need to define what happens under >> various abnormal conditions, e.g. when the user closes the wallet's browser >> tab/window or presses "back" on the browser navigation chrome, or the >> wallet somehow crashes, e.g. if the network connection fails, or the device >> itself is turned off. What if the web application requesting payment >> itself dies or is terminated before the user has completed the payment >> transaction through the wallet? What if the payment transaction succeeded, >> but the proof of purchase couldn't be delivered to the application that >> requested the payment? >> >> The assumption above is that we want to encourage innovation and >> competition amongst wallet providers rather to limit wallets to a fixed >> functionality. This seems essential if we are to convince companies of the >> business case for open standards for wallets and the need for minimally >> constraining standards as a basis for decoupling web applications from >> wallets and payment solutions. > > > +1 > > >> >> >> -- >> Dave Raggett <dsr@w3.org> http://www.w3.org/People/Raggett >> >> >> >
Received on Thursday, 17 April 2014 08:01:14 UTC