Web Payments, Payment Request API 와 Google Pay

조은, Eun Cho
Sep 5, 2018 · 8 min read

이 글은 Eiji Kitamura가 작성한 Web Payments, Payment Request API and Google Pay의 한국어 번역본입니다. 본인에게 허가를 받아 번역하였습니다.

Original Contents:

많은 사람들이 Web Payments, Payment Request API, Google Pay 사이에서 혼란을 겪습니다. 이 글에서 차이점에 대해 명확히 하고 상인이 구축해야하는 권장사항을 소개합니다.

TL;DR

  • Web Payments 는 브라우저에서 공개된 표준 결제수단의 집합을 표준화하기 위해 노력하고 있는 W3C 워킹 그룹 이름입니다. 또한 일반적으로 웹 결제를 개선하려는 전반적인 노력을 의미하기도 합니다.
  • Payment Request API는 Web Payments 워킹 그룹에서 작성하고 있는 스펙 문서 중 하나입니다. 이 API는 사용자 에이전트 (브라우저)가 구현체 (웹사이트)와 통신하여 결제 자격 증명 (payment credentials) 을 교환하는 방법을 관리합니다. Payment Request API는 Google Pay API를 위한 낮은 레이어의 API이며 Google Pay 같은 결제 앱을 실행시킬 수 있습니다.
  • 만약 당신이 상인이라면, Payment Request API를 사용하는 것보다 자바스크립트 라이브러리를 사용한 Google Pay API를 사용하는 것이 더 좋습니다.

더 자세하게 살펴봅시다.

Google Pay란 무엇일까요?

Google Pay는 최근 런칭한 Google의 소비자 지향적인 결제 앱입니다. Google Pay는 다양한 결제 서비스를 하나의 브랜드로 통합하고 간단하고 간소화된 경험을 제공합니다. 주요 기능은 고객이 실제 상점에서 쇼핑하던, 앱 또는 웹사이트에서 온라인으로 쇼핑하던 결제를 쉽게 하는 것입니다.

Google Pay를 사용하면 사용자는 Google Pay 앱을 사용하여 Android 기기에 저장된 카드를 포함하여 Google 계정에 저장된 신용카드 또는 직불카드 (debit card)로 결제할 수 있습니다.

비접촉식 로고가 있는 것 (하단)은 기기의 네트워크 토큰입니다. 다른 것 (상단)은 사용자의 Google 계정에 저장된 카드입니다.

네트워크 토큰은 가상 계정 번호를 사용하여 장치에 공급되고 저장됩니다. 토큰화된 카드는 실제 매장에서 탭하여 결제하기 (tap-to-pay)에 편리하지만 일회성 요소를 포함하므로 일반 카드보다 안전합니다. 어떤 이유로든 실제 카드의 세부 사항이 변경되는 경우 카드 발급자에 의해 자동으로 업데이트될 수 있습니다.

Google에 저장된 카드는 유저의 Google 계정에 저장된 신용 카드 번호입니다. 일반적으로 사용자가 Google Play, Youtube, Google Cloud 등에서 결제하면 저장됩니다. 사용자들은 https://pay.google.com/payments/ 에서 카드를 확인할 수 있습니다.

Google에 저장된 카드는 다양한 Google 서비스를 통해 결제하는 수억명의 사용자가 이용할 수 있습니다. 여기에는 Google Pay 앱을 설치하지 않았거나 실행하지 않은 유저들이 포함됩니다.

Payment Request API 와 Google Pay API

간단히 살펴보는 Payment Request API

이전 아티클을 읽은 많은 사람들이 이미 알고있는 것처럼 Payment Request API는 브라우저에 기본적인 UI를 제공하고 웹사이트와 유저 간의 결제를 중재하는 오픈 웹 표준입니다. 이는 새롭고, 유연하며, 정적 네이티브 UI를 가진 구조화된 폼입니다.

이 API는 이미 Chrome, Edge, Safari, Samsung Internet Browser에 이미 구현되어 있으며, Firefox는 거의 구현 완료 상태입니다.

Payment Request API 스펙은 어떤 결제 방법이던 브라우저에서 지원할 수 있도록 충분히 유연하게 설계되었습니다. 표준화된 방법과 URL 기반의 두가지 결제 수단이 있습니다. 이러한 결제 수단 타입에 대해 자세히 알아보려면 “Payment Request API에서 결제 수단은 어떻게 동작하는가?” 를 참조하세요.

Payment Request API를 통한 Google Pay

Google Pay는 Payment Request API를 통해 URL 기반 결제 수단으로 사용할 수 있습니다. Google에 저장된 카드와 네트워크 토큰 모두 Payment Request API를 통해 원활하게 사용할 수 있습니다. 그러나 둘 사이에는 무시할 수 없는 차이가 있습니다.

네트워크 토큰: 기기의 보안 영역에 접근해야하기 때문에 (Google Pay에서는 HCE를 사용하지만 이 경우 사용자가 무시할 수 있습니다) 네트워크 토큰은 사용자가 기기를 사용할 때만 사용할 수 있습니다. Google Pay에서 Android 용 Chrome 브라우저를 사용한다는 의미입니다. (2018년 8월 기준) 즉, 타사 결제 앱을 지원하지 않는 데스크탑이나 브라우저에서는 현재 네트워크 토큰을 사용할 수 없습니다.

Google에 저장된 카드: 한편 Google에 저장된 카드는 앱을 필수로 요구하지않습니다. 왜냐하면 Google에 저장된 카드는 Google 서버에 저장되기 때문에, Payment Handler API를 사용하여 데스크탑에서도 Payment Request API 상의 카드 정보를 활용할 수 있다는 이점이 있습니다. 카드의 세부사항은 일반적으로 지원하는 게이트웨이의 키 (게이트웨이 토큰화)를 이용하여 암호화되므로 상인과 직접 자격 증명을 공유하지 않아도 됩니다.

Payment Request API 가 없는 Google Pay

유저의 브라우저가 Payment Request API (혹은 Payment Handler API)를 지원하지 않을 수 있습니다. 따라서 Google Pay는 자바스크립트 라이브러리를 제공하여 격차를 해소합니다.

Google Pay에서 라이브러리를 사용하여 Payment Request API 및 Payment Handler API를 사용할 수 있고, 혹은 전통적인 팝업 창 방식을 사용할 수도 있습니다. 이렇게 하면 Google Pay를 어떤 최신 브라우저에서든 사용할 수 있습니다.

basic-card 와 Google Pay

Google에 저장된 카드는 Chrome의 Payment Request API에서 basic-card를 통해 사용할 수 있습니다. Chrome 70 까지만 사용 가능합니다.

Chrome의 chrome://settings/autofill (이후 버전에서는 chrome://settings/payments)으로 가면 form 자동 완성에서 사용 가능한 신용 카드 번호를 체크할 수 있습니다. 옆에 "Google Pay"가 있는 카드는 실제로 Google 서버에 전파되어있는 Google에 저장된 카드입니다. "Google Pay"가 없다면 카드 번호가 입력되고 로컬에 저장됩니다.

즉 Google에 저장된 동일한 카드를 Google Pay 뿐만 아니라 Chrome 자동 완성에서도 사용이 가능합니다. 그러나 제가 “Integrating the Payment Request API with a payment service provider” 에서 언급했던 것처럼 basic-card 는 중개 솔루션입니다. 사실 Chrome에서는 Chrome 70 버전부터 basic-card 를 이용한 Google에 저장된 카드의 사용 중단을 발표했습니다. basic-card 는 로컬에 저장되어있는 카드 번호를 사용하여 계속 사용할 수 있습니다.

Google Pay API 를 사용하기 위한 JS 라이브러리 사용하기

이전 포스트에서 언급했던 것처럼 basic-card의 위험성을 감안했을 때 토큰 기반 결제 수단을 우선할 것을 권장합니다. 따라서 자바스크립트 라이브러리는 Payment Request API를 통해 직접 구현하는 대신 Google Pay를 구현하는 데 사용해야합니다.

물론 Payment Request API는 Apply Pay, Samsung Pay 또는 Payment Handler API를 통해 사용할 수 있는 새로운 결제 수단 같은 basic-card 외의 결제 수단에 여전히 유용합니다. (하지만 Payment Handler API를 사용하면 누구나 자신의 결제 수단과 결제 앱을 만들 수 있습니다. 시험해보세요)

앞으로 여러 브라우저에서 다양한 결제 수단을 동일하게 사용할 수 있는 날이 오면 순수한 Payment Request API를 사용할 수 있습니다.

다음 포스트에서는 여러 결제 수단을 사용한 UX 권장사항에 대해서 다뤄볼 예정입니다. 지켜봐주세요.

조은, Eun Cho

Written by

Technical Program Manager at Apollo, NAVER. Google Developers Experts for Web Technologies. Flutter & Dart Lover

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade