<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Eiji Kitamura</title>
    <description>The latest articles on Forem by Eiji Kitamura (@agektmr).</description>
    <link>https://forem.com/agektmr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F41321%2F2901a939-e0e4-481c-b92a-b8b009ca3690.jpeg</url>
      <title>Forem: Eiji Kitamura</title>
      <link>https://forem.com/agektmr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/agektmr"/>
    <language>en</language>
    <item>
      <title>What’s new in Web Payments</title>
      <dc:creator>Eiji Kitamura</dc:creator>
      <pubDate>Fri, 07 Aug 2020 05:42:12 +0000</pubDate>
      <link>https://forem.com/chromiumdev/what-s-new-in-web-payments-35ii</link>
      <guid>https://forem.com/chromiumdev/what-s-new-in-web-payments-35ii</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jJeiFO8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A4LWtsGNZ1GeGL09462_1Xg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jJeiFO8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A4LWtsGNZ1GeGL09462_1Xg.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s been a while since my previous post, but Web Payments team at Google including myself have been commited to work on improving it. Some may wonder what’s giong on with it, so let me share my talk at an online event called “web.dev LIVE” which Google’s Web DevRel team organized early July 2020.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ZXmKKV7R72c"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;It’s a short video, but it contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recap of Web Payments&lt;/li&gt;
&lt;li&gt;How it works&lt;/li&gt;
&lt;li&gt;Status update&lt;/li&gt;
&lt;li&gt;Upcoming features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, we’ve published a set of documentation that explains how to build a native and a web-based payment app in detail.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://web.dev/payments/"&gt;web.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Integrate Web Payments into your payment app&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://web.dev/empowering-payment-apps-with-web-payments/"&gt;Empowering payment apps with Web Payments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.dev/life-of-a-payment-transaction/"&gt;Life of a payment transaction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.dev/setting-up-a-payment-method/"&gt;Setting up a payment method&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Build a native payment app&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://web.dev/android-payment-apps-developers-guide/"&gt;Android payment app developers guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.dev/android-payment-apps-delegation/"&gt;Providing shipping and contact information from an Android payment app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Build a web-based payment app&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://web.dev/web-based-payment-apps-overview/"&gt;Web-based payment apps overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.dev/registering-a-web-based-payment-app/"&gt;Registering a web-based payment app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…And more articles are coming!&lt;/p&gt;

&lt;p&gt;If you are interested in building a Web Payments compatible payment app, let me know.&lt;/p&gt;

</description>
      <category>webpayments</category>
      <category>webdevlive</category>
    </item>
    <item>
      <title>Web Payments, Payment Request API and Google Pay</title>
      <dc:creator>Eiji Kitamura</dc:creator>
      <pubDate>Tue, 14 Aug 2018 04:29:01 +0000</pubDate>
      <link>https://forem.com/agektmr/web-payments-payment-request-api-and-google-pay-1g3o</link>
      <guid>https://forem.com/agektmr/web-payments-payment-request-api-and-google-pay-1g3o</guid>
      <description>

&lt;p&gt;Many people are confused about the differences between Web Payments, Payment Request API, and Google Pay. In this article, I’ll clarify the differences and explain my recommendations for what merchants should implement.&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Web Payments is the name of the working group at W3C trying to standardize a set of open standards payments in the browser. It is also used generally to mean the overall effort to make payments better on the web.&lt;/li&gt;
&lt;li&gt;Payment Request API is one of specifications the Web Payments Working Group has written. The API governs how a user agent (browser) can communicate with an implementation (website) to exchange payment credentials. Payment Request API is a lower layer API for Google Pay API and can launch payment apps such as Google Pay.&lt;/li&gt;
&lt;li&gt;If you are a merchant, implement Google Pay API with its &lt;a href="https://developers.google.com/pay/api/web/guides/tutorial"&gt;JavaScript library&lt;/a&gt; rather than the Payment Request API.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read on to learn more.&lt;/p&gt;

&lt;h3&gt;&lt;strong&gt;What is Google Pay?&lt;/strong&gt;&lt;/h3&gt;

&lt;p&gt;Google Pay is a recently launched consumer-facing payment app from Google. It unifies various payment services into a single brand and provides a simple, streamlined experience. Its main feature is to make payments easier, whether your customers are shopping at a physical store or online in your apps or websites.&lt;/p&gt;

&lt;p&gt;Google Pay enables users to pay with any credit or debit card saved to their Google account, including cards provisioned on Android devices using the Google Pay app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9i3DscoL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Ah4T_rtGEBF3krMSBMS7-4A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9i3DscoL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Ah4T_rtGEBF3krMSBMS7-4A.png" alt=""&gt;&lt;/a&gt;&lt;em&gt;The one with the contactless logo (bottom) is a network token on the device; the other (top) is a card saved on the user’s Google account.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network tokens&lt;/strong&gt; are provisioned and stored to a device using a virtual account number. Tokenized cards are convenient for tap-to-pay at physical stores, but they also include a one time use element that makes them more secure than regular cards. They can also be updated automatically by the card issuer if the physical card details change for any reason.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hWxdxi3v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/429/1%2AEJif2DEt3EYFdxIWH00Kaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hWxdxi3v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/429/1%2AEJif2DEt3EYFdxIWH00Kaw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cards saved to Google&lt;/strong&gt; are credit card numbers stored in a user’s Google account. They are typically stored when a user pays for Google Play, YouTube, Google Cloud, etc. Users can check their cards at &lt;a href="https://pay.google.com/payments/"&gt;https://pay.google.com/payments/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cards saved to Google are available for hundreds of millions of users that have made payments through various Google services — and so this can include users who haven’t installed or launched the Google Pay app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5I7ZtByM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/454/1%2AAutdFbgDvJdc7XGwk6B3mA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5I7ZtByM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/454/1%2AAutdFbgDvJdc7XGwk6B3mA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Payment Request API and Google Pay API&lt;/h3&gt;

&lt;h4&gt;Payment Request API in a nutshell&lt;/h4&gt;

&lt;p&gt;As many of you who have read &lt;a href="https://medium.com/@agektmr"&gt;my previous articles&lt;/a&gt; already know, Payment Request API is an open web standard that brings native UI to browsers and &lt;strong&gt;mediates&lt;/strong&gt; a payment between a website and a user. It is a new, flexible, and structured form with a static native browser UI.&lt;/p&gt;

&lt;p&gt;The API is &lt;a href="https://caniuse.com/#feat=payment-request"&gt;already implemented&lt;/a&gt; in Chrome, Edge, Safari, Samsung Internet Browser, and Firefox is very close to finishing their implementation.&lt;/p&gt;

&lt;p&gt;The Payment Request API specification is designed in a way that is flexible enough for a browser to support any payment method. There are two types of payment methods, &lt;em&gt;standardized&lt;/em&gt; and &lt;em&gt;URL-based&lt;/em&gt;. See &lt;a href="https://dev.to/agektmr/how-payment-methods-work-in-the-payment-request-api-5ie"&gt;“How payment methods work in the Payment Request API”&lt;/a&gt; to learn more about these payment method types.&lt;/p&gt;

&lt;h4&gt;Google Pay through Payment Request API&lt;/h4&gt;

&lt;p&gt;Google Pay is available through the Payment Request API as a URL-based payment method. Both network token and cards saved on Google are available through Payment Request API seamlessly. But there’s a non-negligible difference between the two.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network token:&lt;/strong&gt; Because it needs access to a secure area of the device (in fact Google Pay uses &lt;a href="https://developer.android.com/guide/topics/connectivity/nfc/hce"&gt;HCE&lt;/a&gt; but let me ignore in this case), network tokens are only available when the user is using a capable device. For Google Pay, this means using the Chrome browser on Android (as of August 2018). In other words, network tokens are not currently available on desktop or in browsers that do not support third-party payment apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cards saved to Google:&lt;/strong&gt; Meanwhile, cards saved to Google do not necessarily require the app. Because they are stored on the Google server, you can use &lt;a href="https://developers.google.com/web/updates/2018/06/payment-handler-api"&gt;Payment Handler API&lt;/a&gt; to take advantage of card information on the Payment Request API even on desktop. Card details are typically encrypted using keys from supported gateways (gateway tokenization), which avoids sharing credentials directly with the merchant.&lt;/p&gt;

&lt;h4&gt;Google Pay without Payment Request API&lt;/h4&gt;

&lt;p&gt;A user’s browser may not support Payment Request API (or Payment Handler API). This prompted Google Pay to provide &lt;a href="https://developers.google.com/pay/api/web/guides/setup"&gt;a JavaScript library&lt;/a&gt; to bridge the gap.&lt;/p&gt;

&lt;p&gt;By using the library, Google Pay may use Payment Request API and Payment Handler API if they are available, or it can use a traditional pop-up window approach. By doing this, Google Pay becomes available throughout any modern browsers.&lt;/p&gt;

&lt;h3&gt;basic-card and Google Pay&lt;/h3&gt;

&lt;p&gt;Cards saved to Google have been available through basic-card in Payment Request API in Chrome. That is indeed true, but only up to Chrome 70.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--O1rq6pvN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/730/1%2AA0gsYP2r7Vc6q4UeUZfcQQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--O1rq6pvN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/730/1%2AA0gsYP2r7Vc6q4UeUZfcQQ.png" alt=""&gt;&lt;/a&gt;&lt;em&gt;chrome://settings/autofill&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;By going to chrome://settings/autofill (In later Chrome, chrome://settings/payments) you can check credit card numbers available for form Autofill. The ones with “Google Pay” beside them are actually cards saved to Google, propagated from a Google server. The ones without it are card numbers entered and stored locally.&lt;/p&gt;

&lt;p&gt;This means the same cards saved on Google have been available both on Chrome Autofill as well as in Google Pay. But as I mentioned in “&lt;a href="https://dev.to/agektmr/integrating-the-payment-request-api-with-a-payment-service-provider-62f"&gt;Integrating the Payment Request API with a payment service provider&lt;/a&gt;”, basic-card is intermediary solution. In fact, &lt;a href="https://blog.chromium.org/2018/07/bringing-google-pay-to-paymentrequest.html"&gt;Chrome has announced its deprecation of cards saved on Google for&lt;/a&gt;&lt;a href="https://blog.chromium.org/2018/07/bringing-google-pay-to-paymentrequest.html"&gt;b&lt;/a&gt;asic-card&lt;a href="https://blog.chromium.org/2018/07/bringing-google-pay-to-paymentrequest.html"&gt;in Chrome 70&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note that basic-card will continue to be available using locally stored card numbers.&lt;/p&gt;

&lt;h3&gt;Use JS library for using Google Pay API&lt;/h3&gt;

&lt;p&gt;Prioritizing token-based payment method is recommended, given the risk of basic-card as I mentioned in my earlier post and therefore the &lt;a href="https://developers.google.com/pay/api/web/guides/tutorial"&gt;JavaScript library&lt;/a&gt; should be used to implement Google Pay rather than directly implementing it through the Payment Request API.&lt;/p&gt;

&lt;p&gt;Of course, Payment Request API is still useful for payment methods other than basic-card such as Apple Pay, Samsung Pay, or emerging new payment methods available through &lt;a href="https://developers.google.com/web/updates/2018/06/payment-handler-api"&gt;Payment Handler API&lt;/a&gt;. (By the way, by using the Payment Handler API, anyone can build their own payment method and payment app. Try your own.)&lt;/p&gt;

&lt;p&gt;In the future, when many payment methods are equally available across different browsers, we’ll be able to rely on the pure Payment Request API.&lt;/p&gt;

&lt;p&gt;In the next post I plan to cover a UX recommendation using multiple payment methods. Stay tuned.&lt;/p&gt;





</description>
      <category>paymentrequestapi</category>
      <category>googlepay</category>
      <category>webpayments</category>
      <category>payments</category>
    </item>
    <item>
      <title>Integrating the Payment Request API with a payment service provider</title>
      <dc:creator>Eiji Kitamura</dc:creator>
      <pubDate>Wed, 22 Nov 2017 08:38:17 +0000</pubDate>
      <link>https://forem.com/agektmr/integrating-the-payment-request-api-with-a-payment-service-provider-62f</link>
      <guid>https://forem.com/agektmr/integrating-the-payment-request-api-with-a-payment-service-provider-62f</guid>
      <description>

&lt;p&gt;With the Payment Request API, payments on the web are drastically simplified. The UX can be consistent across websites, making it easier for users to enter and reuse their personal information such as shipping address or payment details. It also enables &lt;a href="https://dev.to/agektmr/how-payment-methods-work-in-the-payment-request-api-5ie"&gt;various payment methods&lt;/a&gt; on the web.&lt;/p&gt;

&lt;p&gt;Let me quickly recap important payment concepts:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;basic card&lt;/strong&gt;  — A payment method natively implemented to all Payment Request API capable browsers (Chrome, Samsung Internet, Edge). Card information is usually shared with form autofill data and returned as plain text from the Payment Request API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;payment app&lt;/strong&gt;  — A web app or a native app that provide payment methods represented as URL strings. &lt;a href="https://developers.google.com/payments/"&gt;Pay with Google&lt;/a&gt;, &lt;a href="https://www.apple.com/apple-pay/"&gt;Apple Pay&lt;/a&gt;, &lt;a href="https://www.samsung.com/us/samsung-pay/"&gt;Samsung Pay&lt;/a&gt;, &lt;a href="https://intl.alipay.com/"&gt;Alipay&lt;/a&gt; are good examples. Card information is securely stored and typically returned as a tokenized text from the Payment Request API.&lt;/p&gt;

&lt;p&gt;The Payment Request API changes whole ecosystem, but it’s not a silver bullet that takes care of payments end to end including processing. It’s &lt;a href="https://medium.com/dev-channel/addressing-common-misconceptions-about-the-payment-request-api-4d0db51dae75"&gt;a very common misconception&lt;/a&gt;, but you still need to deal with payment service providers (PSP).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/web/fundamentals/payments/deep-dive-into-payment-request"&gt;Google’s Payment Request API documentation&lt;/a&gt; describes the API in detail, but leaves integration with a PSP part untouched. In this article, I’d like to give you ideas of how to integrate with a PSP.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For simplicity’s sake, I’ll focus on the credit card payment (basic-card) case in this article. This article may not apply to other payment methods, such as Pay with Google, Apple Pay, Samsung Pay, and Alipay.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What’s the current payment experience and integration like?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When you try to pay online using a credit card, you usually see a web form like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nse8jrFb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/910/1%2AXRsUdSjXcmAirfaho38PNA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nse8jrFb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/910/1%2AXRsUdSjXcmAirfaho38PNA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This form includes fields for cardholder name, card number, expiration year/date, and CVC code. By submitting this form, the merchant will receive these pieces of information to process the payment on behalf of the user.&lt;/p&gt;

&lt;p&gt;Behind the scenes, most of the merchants send these information to a payment gateway or a payment processor (PSP, Payment Service Providers in this article) in order to process a payment and make an actual money transfer start.&lt;/p&gt;

&lt;p&gt;There are roughly three types of integration patterns you can choose to connect with a PSP in general. Let’s see how each of them look like.&lt;/p&gt;

&lt;h4&gt;
  
  
  API Type Integration
&lt;/h4&gt;

&lt;p&gt;The first integration pattern is called API Type. It’s straightforward, but requires relatively high technical skill to implement.&lt;/p&gt;

&lt;p&gt;A merchant submits credit card information to their own server through a form. The server then forwards the information to a PSP through their API. PSPs usually provide a server side SDK to help implement these integrations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ODsONJz0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A7yfPpNHgFGEQc-ny1jvFVw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ODsONJz0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2A7yfPpNHgFGEQc-ny1jvFVw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Link Type Integration
&lt;/h4&gt;

&lt;p&gt;Link Type is the easiest way to integrate with a PSP among three. Though flexibility of design and its user experience are not sophisticated, even a non-technical webmaster can integrate with a PSP using this type.&lt;/p&gt;

&lt;p&gt;When a user is about to make a payment, the merchant forwards the user to a PSP-hosted page with a form to accept credit card information. The payment info the user submits through the form will be directly passed to and processed by the PSP. The user will then be brought back to the merchant webpage to (hopefully) find the payment is complete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dVmPiBrp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AG8E3EvtJh4OVhMWkYLTr8w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dVmPiBrp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AG8E3EvtJh4OVhMWkYLTr8w.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Tokenization Type Integration
&lt;/h4&gt;

&lt;p&gt;The most modern approach among these three is Tokenization Type. This integration allows a merchant to gain security, convenience, and design flexibility at the same time.&lt;/p&gt;

&lt;p&gt;Unlike Link Type, a form is shown in a merchant hosted page, but it’s actually served from a PSP’s domain through an iframe. User’s submission of card info will be directly passed to the PSP’s server, and the merchant will receive a token as a result. The merchant can then verify it through their server and ask the PSP to process the payment.&lt;/p&gt;

&lt;p&gt;The point here is that most of these operations are handled by PSP’s client side SDK, which allows the merchant to process payments without touching a single digit of a user’s credit card number.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PSEAfWyC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Ap2atYiiS0sfIKEc2K-VbTg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PSEAfWyC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2Ap2atYiiS0sfIKEc2K-VbTg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How can this be applied to the Payment Request API?
&lt;/h3&gt;

&lt;p&gt;OK, now let’s think about how these patterns can be applied with the Payment Request API. Here’s a snippet of code you would use to invoke the API:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let request = new PaymentRequest(methods, details, options);
request.show().then(paymentResponse =&amp;gt; {
  // process payment
});
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wva_ncB_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/720/1%2A6MJpjVQ-wc3nRo0cFBq2-A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wva_ncB_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/720/1%2A6MJpjVQ-wc3nRo0cFBq2-A.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Upon the user pressing “PAY”, the payment request will be resolved and you will receive a paymentResponseas the payment information. If the user chooses to use &lt;a href="https://dev.to/agektmr/how-payment-methods-work-in-the-payment-request-api-5ie"&gt;a&lt;/a&gt;&lt;a href="https://dev.to/agektmr/how-payment-methods-work-in-the-payment-request-api-5ie"&gt;basic-card as a payment method&lt;/a&gt;, it would look like this:&lt;/p&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "methodName": "basic-card",
  "details": {
    "cardholderName": "Jane Doe",
    "cardNumber": "4242424242424242",
    "expiryMonth": "12",
    "expiryYear": "2020",
    "cardSecurityCode": "111",
    "billingAddress": { ... }
  },
  "shippingAddress": null,
  "shippingOption": null,
  "payerName": null,
  "payerPhone": null,
  "payerEmail": null
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You can then use the payment information part of it (details) to process the payment.&lt;/p&gt;

&lt;p&gt;Let’s apply this information to the integration patterns I have described earlier.&lt;/p&gt;

&lt;h4&gt;
  
  
  API Type
&lt;/h4&gt;

&lt;p&gt;This pattern is rather straightforward. Just send the payment info to the server, parse it, and then send it to a PSP’s API.&lt;/p&gt;

&lt;p&gt;The important caveat here is that you need &lt;a href="https://www.pcisecuritystandards.org/"&gt;PCI compliance&lt;/a&gt; to integrate using this type, because you are obviously treating raw credit card information. &lt;a href="https://www.pcisecuritystandards.org/documents/PCI-DSS-v3_2-SAQ-A.pdf"&gt;PCI SAQ A&lt;/a&gt; won’t qualify, you should have &lt;a href="https://www.pcisecuritystandards.org/documents/PCI-DSS-v3_2-SAQ-A_EP.pdf"&gt;PCI SAQ A-EP&lt;/a&gt; or &lt;a href="https://www.pcisecuritystandards.org/"&gt;PCI DSS&lt;/a&gt;. If you don’t know what I’m talking about, consult with your PSP. Unless your company is large enough, spends money and makes an effort to comply with PCI, you are not eligible to choose this option (except some countries that don’t prioritize &lt;a href="https://www.pcisecuritystandards.org/"&gt;PCI DSS&lt;/a&gt;).&lt;/p&gt;

&lt;h4&gt;
  
  
  Link Type
&lt;/h4&gt;

&lt;p&gt;As you can easily imagine, the point of Link Type is to decouple the payment system from a merchant website. This means using the Payment Request API with the Link Type integration is theoretically not possible. You have to defer the Payment Request API calls to your PSP.&lt;/p&gt;

&lt;h4&gt;
  
  
  Tokenization Type
&lt;/h4&gt;

&lt;p&gt;The Tokenization Type pattern is an interesting one. With this integration, you would send payment information to a PSP server to obtain a token in return. This allows your server to not deal with raw credit card information completely, keeping you away from requiring PCI compliance — unfortunately, this is wrong.&lt;/p&gt;

&lt;p&gt;The fact that handling credit card information on the client side doesn’t require PCI compliance was a thing before PCI 3.1. &lt;a href="https://blog.spreedly.com/2017/02/08/pci-compliance-best-practices-making-e-commerce-more-secure/"&gt;&lt;strong&gt;PCI DSS 3.2 clarified it&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;requires PCI SAQ A-EP or PCI DSS if you handle raw credit card info on the client side.&lt;/strong&gt; In fact, the reason the Tokenization Type is so complex is to align with the easiest option for PCI (SAQ A) and never make a merchant touch such sensitive information, but yet enable them to integrate with their system.&lt;/p&gt;

&lt;p&gt;OK, then, what does this mean to you? This means, in order to implement the Payment Request API with basic card, a merchant ought to be PCI compliant, otherwise defer it to a PSP.&lt;/p&gt;

&lt;p&gt;In fact, some PSPs already started supporting the Payment Request API as part of their &lt;a href="https://developers.google.com/payments/"&gt;Pay with Google&lt;/a&gt; support (ex: &lt;a href="https://stripe.com/docs/stripe-js/elements/payment-request-button"&gt;Stripe&lt;/a&gt;, &lt;a href="https://developers.braintreepayments.com/guides/pay-with-google/client-side/javascript/v3"&gt;Braintree&lt;/a&gt;).&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;In order to bring the Payment Request API and let users see the Payment Request sheet on your website, you have two options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you have PCI compliance (PCI SAQ A-EP or PCI DSS), implement the Payment Request API yourself using the API Type integration.&lt;/li&gt;
&lt;li&gt;If you don’t have PCI compliance (or PCI SAQ A), wait for your PSP to support the Payment Request API and use it through the Link Type integration or via their SDK as the Tokenization Type integration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some people may be disappointed to find that PCI compliance is still a requirement to implement the Payment Request API. But consider this is a path to the brighter future.&lt;/p&gt;

&lt;p&gt;In the next post, I will describe how basic card is positioned, why it’s needed, what are payment apps and what the future would look like.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Special thanks to my colleagues and&lt;/em&gt; &lt;a href="https://twitter.com/danielshi"&gt;&lt;em&gt;Daniel Heffernan&lt;/em&gt;&lt;/a&gt; &lt;em&gt;from Stripe for reviewing this post.&lt;/em&gt;&lt;/p&gt;





</description>
      <category>webpayments</category>
      <category>payments</category>
      <category>pcidss</category>
      <category>paymentrequestapi</category>
    </item>
    <item>
      <title>Addressing common misconceptions about the Payment Request API</title>
      <dc:creator>Eiji Kitamura</dc:creator>
      <pubDate>Wed, 15 Nov 2017 06:32:20 +0000</pubDate>
      <link>https://forem.com/agektmr/addressing-common-misconceptions-about-the-payment-request-api-b89</link>
      <guid>https://forem.com/agektmr/addressing-common-misconceptions-about-the-payment-request-api-b89</guid>
      <description>&lt;p&gt;This is &lt;a href="https://medium.com/dev-channel/addressing-common-misconceptions-about-the-payment-request-api-4d0db51dae75" rel="noopener noreferrer"&gt;a cross post&lt;/a&gt; from Medium.&lt;/p&gt;




&lt;p&gt;The Payment Request API was first made available in a production browser on Chrome for Android in July 2016. It’s the very first open web feature solely focused on “payment” and is expected to evolve the entire web platform and its ecosystem in the coming years.&lt;/p&gt;

&lt;p&gt;In this article I'll call out some common misconceptions about the API and try to address them as comprehensively as possible. If you have zero knowledge about the Payment Request API, you should probably read &lt;a href="http://g.co/PaymentRequestAPI" rel="noopener noreferrer"&gt;this &lt;/a&gt;&lt;a href="http://g.co/PaymentRequestAPI" rel="noopener noreferrer"&gt;page&lt;/a&gt; first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Payment API? Chrome Payment API? Google Payment API?
&lt;/h2&gt;

&lt;p&gt;These are all incorrect; it's called "Payment Request API" (PR API). And it's not just a Google or Chrome thing, it's &lt;strong&gt;an open standard specification&lt;/strong&gt; and is/will be available in different browsers. The API is currently supported in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome for Android&lt;/li&gt;
&lt;li&gt;Chrome on desktop (Mac, Windows, Linux)&lt;/li&gt;
&lt;li&gt;Microsoft Edge&lt;/li&gt;
&lt;li&gt;Samsung Internet Browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it's coming to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chrome for iOS&lt;/li&gt;
&lt;li&gt;Apple Safari&lt;/li&gt;
&lt;li&gt;Mozilla Firefox&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  With Payment Request API, browsers will take care of processing payments, so developers won't have to do anything
&lt;/h2&gt;

&lt;p&gt;This is wrong. Even with the PR API, developers still have to send the payment information provided by users to a payment gateway or a payment processor in order to be processed and for the money transfer to happen.&lt;/p&gt;

&lt;p&gt;Consider the PR API as a replacement of a form implemented using JavaScript. Upon user tapping a "PAY" button, instead of a form being POSTed to a server, the website's JavaScript will receive the user's payment information so you can handle it however you want. Typically, you would forward that directly to a payment gateway to obtain a token and then process the payment from your server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Payment Request API on Chrome will use payment info associated with my Google account, right?
&lt;/h2&gt;

&lt;p&gt;That can be true, but not always. There are two types of payment methods defined so far, "basic card" and "payment apps".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fb8jnfpd413vuz9cb6byb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fb8jnfpd413vuz9cb6byb.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With "basic card", Chrome’s Payment Request sheet will show you a combined list of payment information from&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;locally stored payment information&lt;/li&gt;
&lt;li&gt;payment information stored to the Google account associated with the user's Chrome profile&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fdh9hekizv574klh4mqs8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fdh9hekizv574klh4mqs8.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can check what’s available to the PR API (and forms as well) in Chrome's autofill settings page.&lt;/p&gt;

&lt;p&gt;The ones marked "Google Payments" are derived from &lt;a href="https://payments.google.com/" rel="noopener noreferrer"&gt;your Google account&lt;/a&gt;. (Note that locally added information won’t be upstreamed and stored in Chrome.)&lt;/p&gt;

&lt;p&gt;The other type of payment method is "payment apps" and they don't necessarily represent credit cards. They can be e-money, cryptocurrency, or bank accounts (Don't get too excited here, these type of payment methods are not generally available yet). It's up to the payment app's implementation and it is in an isolated world, which means payment apps can be served separately from Chrome or Google.&lt;/p&gt;

&lt;p&gt;The same thing goes for other browsers, depending on their implementation. In Microsoft Edge, for example, the Payment Request API connects to Microsoft Wallet and has access to payment information associated with the user’s Microsoft account. In Samsung Internet Browser, the Payment Request API stores credit card information only when you are using a Samsung device.&lt;/p&gt;

&lt;h2&gt;
  
  
  Payment Request API handles credit cards well but not other form of payments
&lt;/h2&gt;

&lt;p&gt;That's also incorrect. The Payment Request API is designed to handle virtually any kind of payment methods including bank transfers, cryptocurrencies, e-money, points, etc.&lt;/p&gt;

&lt;p&gt;Payment Request API is fundamentally a mediator between a browser and a payment method. It's designed to be flexible enough to allow any native app or web app to become a payment method, so technically anyone can develop their own payment app to serve a unique payment method.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ffevudvp1dakhkno4yq15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Ffevudvp1dakhkno4yq15.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  With Payment Request API, my site won’t need PCI compliance
&lt;/h2&gt;

&lt;p&gt;This is also wrong; PCI compliance is required. Here’s what you should check.&lt;/p&gt;

&lt;p&gt;If your site is compliant with PCI DSS or &lt;a href="https://www.pcisecuritystandards.org/documents/PCI-DSS-v3_2-SAQ-A_EP.pdf" rel="noopener noreferrer"&gt;PCI SAQ A-EP&lt;/a&gt;, you are probably working at a relatively large company and there’s not much to worry about to implement the PR API as long as you implement it securely.&lt;/p&gt;

&lt;p&gt;If your site is compliant with &lt;a href="https://www.pcisecuritystandards.org/documents/PCI-DSS-v3_2-SAQ-A.pdf" rel="noopener noreferrer"&gt;PCI SAQ A&lt;/a&gt;, be careful. With PCI SAQ A, you are not supposed to handle raw credit card information directly. This means using the Payment Request API with “basic-card” as a payment method is outside of PCI SAQ A v3.2 compliance.&lt;/p&gt;

&lt;p&gt;I will write more about this topic in a separate article, but consult with your payment gateway to learn how you can leverage the Payment Request API with their current setup. Or you may even ask them to support the Payment Request API!&lt;/p&gt;




&lt;p&gt;Leave comments if you have any questions. For large topics I’ll cover the answers in subsequent articles.&lt;/p&gt;

</description>
      <category>payments</category>
      <category>webpayments</category>
    </item>
    <item>
      <title>How payment methods work in the Payment Request API</title>
      <dc:creator>Eiji Kitamura</dc:creator>
      <pubDate>Wed, 18 Oct 2017 06:52:33 +0000</pubDate>
      <link>https://forem.com/chromiumdev/how-payment-methods-work-in-the-payment-request-api-5ie</link>
      <guid>https://forem.com/chromiumdev/how-payment-methods-work-in-the-payment-request-api-5ie</guid>
      <description>&lt;p&gt;The Payment Request API makes it easy for a browser to pass known credit card details to a merchant. The API can also accept payments through apps which process payments anyway they wish, e-money, bank transfers, bitcoins, etc.&lt;/p&gt;

&lt;p&gt;This article explains how payment method concept in the Payment Request API works so you can get a better view of the future of the Web Payments and possibly develop your own payment method.&lt;/p&gt;

&lt;p&gt;Let’s dive in.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Payment methods are like plugins for Payment Request API&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The first argument you give to the &lt;a href="https://w3c.github.io/payment-request/"&gt;Payment Request API&lt;/a&gt; is a sequence of payment methods.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.google.com/web/fundamentals/payments/deep-dive-into-payment-request#defining_supported_payment_methods"&gt;Each payment method&lt;/a&gt; consists of a required &lt;a href="https://w3c.github.io/payment-method-id/"&gt;payment method identifier&lt;/a&gt; (supportedMethods) and an optional detail of the payment method (data).&lt;/p&gt;

&lt;p&gt;In following example code snippet we declare 2 payment methods:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The basic cards; Visa, Master, JCB: basic-card&lt;/li&gt;
&lt;li&gt;Android app that is built to integrate with the Payment Request API: &lt;a href="https://bobpay.xyz"&gt;https://bobpay.xyz&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var methodData = [{
 supportedMethods: ‘basic-card’,
 data: {
   supportedNetworks: [‘visa’, ‘master’, ‘jcb’]
 }
}, {
 supportedMethods: ‘https://bobpay.xyz'
}];
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;A merchant can provide these as acceptable payment methods, so when a customer is visiting the site they will see the cards and apps filtered by the ones that are available to the user and select one to make a payment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oZFA39kg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/473/1%2A8U7xtaTaUKtTL_5p7ux9TA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oZFA39kg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/473/1%2A8U7xtaTaUKtTL_5p7ux9TA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Payment Method Identifiers
&lt;/h3&gt;

&lt;p&gt;There are two types of payment method identifiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standardized payment methods, e.g., “basic-card”&lt;/li&gt;
&lt;li&gt;URL-based payment methods, e.g., “&lt;a href="https://bobpay.xyz%E2%80%9D"&gt;https://bobpay.xyz”&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Standardized payment methods
&lt;/h4&gt;

&lt;p&gt;The Payment Request API example code illustrates that “basic-card” must be the most commonly used string for a payment method identifier. This is categorized as a standardized payment method and it’s actually supported by all browsers by default that implement the Payment Request API.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://w3c.github.io/payment-method-basic-card/"&gt;Payment Method: Basic Card&lt;/a&gt; (basic-card): A payment method that provides credit, debit and prepaid card payment information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can provide detailed definition by adding data property to the payment method data. supportedNetworks indicates which &lt;a href="https://www.w3.org/Payments/card-network-ids"&gt;credit card brand&lt;/a&gt; you support and supportedTypes indicates which &lt;a href="https://w3c.github.io/payment-method-basic-card/#basiccardtype-enum"&gt;type of cards&lt;/a&gt; ( credit, debit and prepaid) are supported.&lt;/p&gt;

&lt;p&gt;As you can imagine, there’s &lt;a href="https://w3c.github.io/payment-method-id/#registry"&gt;a registry of payment methods in the spec&lt;/a&gt; for standardized payment methods. basic-card is one example, but as of October 2017, no others exist yet in the registry. A few candidates are under active discussions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://w3c.github.io/webpayments-methods-credit-transfer-direct-debit/"&gt;Basic Credit Transfer Payment&lt;/a&gt; (basic-credit-transfer): A payment method to transfer money between bank accounts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://w3c.github.io/webpayments/proposals/interledger-payment-method.html"&gt;Tokenized Card Payment&lt;/a&gt; (tokenized-card): A payment method that provides tokenized card information.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://w3c.github.io/webpayments/proposals/interledger-payment-method.html"&gt;Interledger Payment Method&lt;/a&gt; (interledger): A payment method that transfers money using &lt;a href="https://interledger.org/"&gt;the interledger protocol&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://w3c.github.io/webpayments/proposals/sepamail"&gt;Basic SEPAmail Payment&lt;/a&gt; (sepamail): A payment method that supports payment by SEPAmail Applications such as RUBIS, GEMME or JADE.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  URL-based payment methods
&lt;/h4&gt;

&lt;p&gt;URL-based payment methods are usually represented using a URL string such as “&lt;a href="https://google.com/pay"&gt;https://google.com/pay&lt;/a&gt;" or “&lt;a href="https://www.alipay.com/webpay"&gt;https://www.alipay.com/webpay&lt;/a&gt;". They represent a payment method and are usually tied with a particular payment app; but they don’t necessarily represent a one-to-one relationship. It’s totally possible one payment method is supported by multiple payment apps, or one payment app supports multiple payment methods.&lt;/p&gt;

&lt;p&gt;For example, a third party payment app can support the basic-card as well as its specific &lt;a href="https://bobpay.xyz"&gt;https://bobpay.xyz&lt;/a&gt; payment method.&lt;/p&gt;

&lt;p&gt;Unlike standardized payment methods, URL-based payment methods have no registry of payment methods. Anyone can develop and provide their own payment apps that support the payment method. This allows the Web Payments concept to develop a huge payment ecosystem on the web.&lt;/p&gt;

&lt;p&gt;If you are interested in developing your own payment app, checkout &lt;a href="https://w3c.github.io/payment-method-manifest/"&gt;Payment Method Manifest&lt;/a&gt; and see how a URL-based payment method identifier is converted to a concrete payment method. As of October 2017 only Android native payment apps are officially supported on Chrome, but web based payment apps support is coming too.&lt;/p&gt;

&lt;p&gt;Android native payment apps specification is not standardized since it’s operating system specific, but &lt;a href="https://docs.google.com/document/d/1izV4uC-tiRJG3JLooqY3YRLU22tYOsLTNq0P_InPJeE/edit#"&gt;an integration guide can be found here&lt;/a&gt;. Check it out if you are interested in developing your own payment apps for Web Payments ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Summary&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The concept of payment methods in Payment Request API is quite simple, but it is extremely important to understand the larger architecture. Hopefully many payment apps will emerge to make the Web Payments ecosystem more flexible and usable.&lt;/p&gt;




</description>
      <category>webpayments</category>
      <category>paymentrequestapi</category>
      <category>payments</category>
    </item>
  </channel>
</rss>
