Google은 Chrome에서 타사 앱으로 결제할 수 있는 Payment Request API를 공식적으로 채택했습니다.

click fraud protection

Google I/O에서 발표될 예정으로 Google은 공식적으로 Chrome에 Payment Request API를 채택하여 타사 앱으로 결제할 수 있게 되었습니다.

발표 예정 다가오는 Google I/O 개발자 컨퍼런스에서 Payment Request API는 모바일 장치에서 온라인 결제를 수행하는 방식에 혁명을 일으킬 것입니다. Android의 Google Chrome 사용자는 더 이상 신용카드 정보를 입력하거나 PayPal에 로그인하는 등 긴 결제 과정을 거칠 필요가 없습니다. 대신 API를 사용하면 웹사이트 개발자가 결제를 위해 지원되는 타사 결제 애플리케이션에 인텐트를 보낼 수 있습니다. 많은 것과 달리 다른 놀라움 Google이 우리를 위해 준비한 것, 이 새로운 결제 방식이 정확히 어떻게 작동하는지에 대한 공개 정보는 이미 많습니다.. 이번 주 Google의 공식 발표 전에 몇 가지 정보를 제공하기 위해 이러한 모든 문서를 자세히 살펴보았습니다.


결제 요청 API로 더욱 쉽게 결제하세요

먼저 현재 웹 브라우저에서 결제가 처리되는 방식을 요약해 보겠습니다. 온라인 판매자의 결제 페이지로 이동하면 결제 정보를 입력하라는 메시지가 표시됩니다. 판매자가 지원하는 신용 ​​카드를 추가하거나 PayPal과 같은 통합 서비스를 사용하여 거래를 완료할 수 있습니다. 이제 신용카드 정보를 웹사이트에 이미 저장했거나(많은 사람들이 이를 꺼려함) 이미 로그인하지 않은 이상 PayPal에 로그인하려면 일어나서 지갑으로 가서 카드를 찾은 다음 카드 번호, 만료 날짜 및 보안을 입력하는 것이 번거로울 수 있습니다. 암호. 새로운 웹사이트에서 구매를 하려고 할 때마다 이 과정을 다양하게 거쳐야 합니다. 우리 같은 사람들을 위해 거래를 찾는 것을 좋아합니다, 이것은 꽤 빨리 짜증날 수 있습니다.

다양한 온라인 판매자 결제 페이지

많은 신용 카드 및 은행 기관이 Google Play 스토어에서 사용할 수 있는 애플리케이션을 보유하고 있습니다. 우리는 이미 금융 계좌를 모니터링하기 위해 이러한 애플리케이션을 사용하고 있는데 결제 인증에는 왜 사용할 수 없습니까? 이것이 바로 Google, Mozilla, Samsung, Alibaba, Microsoft 등과 같은 회원으로 구성된 웹 결제 실무 그룹의 사고 과정입니다. 이 그룹은 뒤에서 활동하고 있습니다.

Payment Request API라는 새로운 API를 도입합니다. 웹 브라우저 간의 통신을 용이하게 하기 위해 Payment Manifest 제안에 정의된 새로운 온라인 표준 온라인 판매자는 결제를 처리하기 위해 최종 사용자 장치의 기존 애플리케이션을 사용할 수 있습니다.

작동 원리

이 작업을 수행하기 위해 웹 브라우저는 결제 요청 API를 지원해야 합니다., 온라인 판매자는 API를 구현하여 API를 지원해야 합니다. 결제 수단 식별자및 Android 애플리케이션 새로운 서비스를 구현해야 합니다. 너무 자세히 설명하지 않고 결제 과정에서 어떤 일이 일어나는지 간략하게 설명하겠습니다.

귀하의 웹 브라우저가 Payment Request API(자세한 내용은 나중에 설명)를 지원한다고 가정하면 온라인 판매자의 결제 페이지로 이동하면 결제 옵션이 제공됩니다. 지원되는 결제 처리자(신용 카드/PayPal 등) 중 하나를 사용하여 구매하기 위해 버튼을 탭할 때(예: Google 직원이 다음을 위해 사용하는 아래 샘플 페이지에서) Payment Request API 테스트), Payment Request API는 해당 앱이 사용자를 인증할 수 있도록 지원되는 결제 애플리케이션에 Android 인텐트를 보냅니다. 지불.

 가상의 Android 기기에 설치된 가상의 신용 카드 애플리케이션을 Bob Pay라고 가정해 보겠습니다. Bob Pay는 AndroidManifest.xml 파일에 다음을 추가합니다.

"font-weight: 400;"><manifestspan><spanstyle="font-weight: 400;">package=span><spanstyle="font-weight: 400;">"com.bobpay.app"span><spanstyle="font-weight: 400;">>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">".IsReadyToPayService"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: enabled=span><spanstyle="font-weight: 400;">"true"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: exported=span><spanstyle="font-weight: 400;">"true"span><spanstyle="font-weight: 400;">>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;"><intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.intent.action.IS_READY_TO_PAY"span><spanstyle="font-weight: 400;">/></span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">intent-filter>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">service>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">".PaymentActivity"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: exported=span><spanstyle="font-weight: 400;">"true"span><spanstyle="font-weight: 400;">>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;"><intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.intent.action.PAY"span><spanstyle="font-weight: 400;">/></span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">intent-filter>span>
"font-weight: 400;"> </span>span> <spanstyle="font-weight: 400;">android: name=span><spanstyle="font-weight: 400;">"org.chromium.default_payment_method_name"span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">android: value=span><spanstyle="font-weight: 400;">"https://bobpay.com/put/optional/path/here"span><spanstyle="font-weight: 400;">/>span>
<spanstyle="font-weight: 400;">span><spanstyle="font-weight: 400;">activity>span>
<spanstyle="font-weight: 400;">manifest>span>

이 가상의 신용 카드 애플리케이션을 대상으로 인텐트가 전송되면 이 애플리케이션의 서비스가 시작됩니다. 가상의 Bob Pay 앱이 무엇을 구매하는지, 어느 공급업체에서 구매하는지, 인텐트의 추가 항목에 포함된 금액이 얼마나 되는지 이해하는 데 필요한 모든 정보는 다음과 같습니다.

Bundle extras = new Bundle();
extras.putString("key", "value");
intent.putExtras(extras);

Bob Pay가 결제를 검증하면 Payment Request API는 Bob Pay가 보낸 또 다른 인텐트에서 이 정보를 수신합니다.

Intent result = new Intent();
Bundle extras = new Bundle();
extras.putString("key", "value");
result.putExtras(extras);
setResult(RESULT_OK, result); // Changeto RESULT_CANCELED on failure.
finish(); // Close the payment activity.

하지만 Bob Pay를 지원하는 온라인 판매자는 귀하의 휴대폰에 설치된 Bob Pay가 사기를 저지르기 위한 악성 코드가 아닌 실제 Bob Pay라는 것을 어떻게 알 수 있습니까? 브라우저에서 기계가 읽을 수 있는 결제 방법 목록 식별자 JSON 파일을 생성하여 이를 수행합니다.

{
<span ><span >"span>name<span >"span>span><span >:span><span ><span >"span>BobPay - World's Greatest Payment Method<span >"span>span>,
<span ><span >"span>description<span >"span>span><span >:span><span ><span >"span>This payment method changes lives<span >"span>span>,
<span ><span >"span>short_name<span >"span>span><span >:span><span ><span >"span>BobPay<span >"span>span>,
<span ><span >"span>icons<span >"span>span><span >:span> [{
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/lowres.webp<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>64x64<span >"span>span>,
<span ><span >"span>type<span >"span>span><span >:span><span ><span >"span>image/webp<span >"span>span>
},{
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/lowres.png<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>64x64<span >"span>span>
}, {
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>icon/hd_hi<span >"span>span>,
<span ><span >"span>sizes<span >"span>span><span >:span><span ><span >"span>128x128<span >"span>span>
}],
<span ><span >"span>serviceworker<span >"span>span><span >:span> {
<span ><span >"span>src<span >"span>span><span >:span><span ><span >"span>payment-sw.js<span >"span>span>,
<span ><span >"span>scope<span >"span>span><span >:span><span ><span >"span>/pay<span >"span>span>,
<span ><span >"span>use_cache<span >"span>span><span >:span><span >falsespan>
}
<span ><span >"span>related_applications<span >"span>span><span >:span> [
{
<span ><span >"span>platform<span >"span>span><span >:span><span ><span >"span>play<span >"span>span>,
<span ><span >"span>url<span >"span>span><span >:span><span ><span >"span>https://play.google.com/store/apps/details? id=com.bobpay<span >"span>span>,
<span ><span >"span>fingerprints<span >"span>span><span >:span> [{
<span ><span >"span>type<span >"span>span><span >:span><span ><span >"span>sha256_cert<span >"span>span>,
<span ><span >"span>value<span >"span>span><span >:span><span ><span >"span>59:5C: 88:65:FF: C4:E8:20:CF: F7:3E: C8...<span >"span>span>
}], <span >//newspan>
<span ><span >"span>min_version<span >"span>span><span >:span><span ><span >"span>1<span >"span>span>, <span >// newspan>
<span ><span >"span>id<span >"span>span><span >:span><span ><span >"span>com.example.app1<span >"span>span>
}, {
<span ><span >"span>platform<span >"span>span><span >:span><span ><span >"span>itunes<span >"span>span>,
<span ><span >"span>url<span >"span>span><span >:span><span ><span >"span>https://itunes.apple.com/app/example-app1/id123456789<span >"span>span>,
}
]
}

이 JSON 파일에는 장치에 설치된 애플리케이션의 무결성을 확인하는 데 사용되는 서명이 있습니다. 진짜 밥 페이. 이 서명 확인에 실패하면 Bob Pay가 결제 처리자로 승인되지 않습니다.

물론, 나는 여기에 관련된 일반적인 과정을 엄청나게, 엄청나게, 엄청나게 단순화하고 있습니다. 결제는 유효한 결제만 이루어지도록 하기 위해 여러 단계의 보안 확인이 필요한 매우 복잡한 시스템입니다. 이전에 링크한 세 가지 문서에는 브라우저가 지불 요청 API를 완벽하게 구현하는 방법, 웹사이트는 JSON 매니페스트 파일을 구현하고 Android 앱이 결제 요청에서 보낸 인텐트를 처리하는 방법을 보여줍니다. API. 위에서 요약한 일반적인 프로세스를 개략적으로 설명하는 순서도는 다음과 같습니다.

결제 흐름도. 원천: 루슬란 솔로마킨

보시다시피 여기에는 많은 단계가 포함됩니다. 이러한 모든 변경 사항은 온라인 판매자 웹사이트, Android 뱅킹/신용 개발자가 처리합니다. 카드 앱, 웹 브라우저 개발자 등 최종 사용자는 실제로 무슨 일이 일어나고 있는지 전혀 알 수 없습니다. 여기. 그러나 최종 결과는 모든 당사자가 참여하면 온라인 결제가 훨씬 더 간단해진다는 점을 알아 두십시오. 웹 결제 실무 그룹의 표준화 노력 덕분에 이러한 변경 사항이 구현되기를 바랍니다. 현실.


결제 요청 API의 역사

월드와이드웹 컨소시엄(약칭 W3C)은 플랫폼 개발을 위해 1994년 설립됐다. 모든 웹사이트와 그 사용자가 상호 호환성의 혜택을 누릴 수 있도록 하는 표준 일관성. 점점 더 세분화되는 웹 결제 문제를 해결하기 위해 W3C는 2015년 웹 결제 실무 그룹 온라인 결제 흐름의 일부 측면을 표준화하기 위해. 그 후, 기존 온라인 결제 시스템 작동 방식을 개선할 수 있는 방법을 찾기 위해 웹 결제 실무 그룹의 모든 구성원 간에 작업이 시작되었습니다.

그룹은 다음을 생각해 냈습니다. 결제 요청 API는 웹사이트에서 결제 방법을 사이트에 통합하지 않고도 결제 방법을 사용할 수 있도록 하는 방법 모음입니다. API를 지원하려면 웹 브라우저를 업데이트해야 합니다.하지만 더 어려운 부분은 온라인 상인을 탑승시키다. 이를 위해 실무그룹 구성원들은 제안이 떠올랐다 웹사이트가 식별자를 생성하여 지원하는 결제 방법을 정의하는 방법에 대해 알아보세요. 여기에는 기계가 읽을 수 있는 결제 목록 JSON 파일(결제 방법 식별자)을 생성하는 작업이 포함됩니다. 이를 위해서는 브라우저에서 읽어야 합니다. Payment Request API는 JSON에서 식별된 지원되는 결제 방법에 해당하는 애플리케이션이 사용자에게 하나 이상 있는지 식별할 수 있습니다. 파일. 이 구현은 Google의 디지털 자산 링크 프로토콜 이는 웹사이트가 이미 앱을 설치한 경우 모바일 사이트에서 해당 애플리케이션으로 사용자를 리디렉션하는 방법입니다.

그룹 내에서 많은 내부 논의 끝에 결국 2016년 11월 25일 Google의 Zach Koch와 Alibaba의 Dapeng Liu가 보고서를 제출했습니다. 결제 방법 목록의 초기 초안 모든 회원이 동의할 수 있는 결제 방법 식별자에 대한 표준화 프로세스를 시작하기 위해. 결국 워킹그룹 구성원들은 3월 23일부터 24일까지 시카고에서 직접 만났습니다. 지불 요청 API, 지불 매니페스트 제안 등을 해시하기 위해. 실무 그룹 공식적으로 채택하기로 투표했습니다. 지불 목록 제안의 새 버전(버전 2), 오늘 우리가 서있는 곳입니다.


결제 요청 API 지원

5월 10일부터 타사 Android 결제 앱에 대한 지원이 시작됩니다. 기본적으로 활성화됨 웹 결제 매니페스트 전제 조건이 Blink-dev 브랜치에서 승인되었기 때문에 Chromium에서 사용됩니다(Blink는 Chrome에서 사용하는 렌더링 엔진의 이름입니다). 이 기능은 몇 달 동안 Chrome에서 테스트되어 왔지만 최근에야 그룹에서 이 기능을 사용할 준비가 된 것 같습니다. 이 기능은 에 제공됩니다 Android Webview를 제외한 Chromium의 모든 플랫폼/버전 (UI가 없으므로 Payment Request API를 구현할 수 없습니다.)

몇 달 간의 비하인드 스토리 작업을 마친 후에야 이제 웹 결제 실무 그룹이 작업해 온 작업의 이점을 확인할 수 있습니다. Google I/O에서 회사는 Google Chrome이 Payment Request API를 활성화한 상태로 출시될 것이라고 발표할 예정이며 Zach Koch는 다음과 같이 언급했습니다. 목요일에 제3자 결제 제공업체가 Payment Manifest JSON을 구축하여 API를 지원할 수 있는 방법에 대해 강연할 예정입니다. 파일.

다른 브라우저에서도 결제 요청 API에 대한 지원을 추가하기 위해 노력하고 있습니다. 모질라 하지만 삼성은 API 추가에 대한 대중의 지지를 표명했습니다. Google 직원에 따르면 루슬란 솔로마킨 Microsoft의 Edge 브라우저나 Apple의 Safari가 지원을 추가할지 여부는 아직 알려지지 않았습니다. 우리는 마이크로소프트가 이미 UWP(유니버설 Windows 플랫폼) 앱용 Payment Request API를 테스트하고 있습니다. 그리고 에 적어도 하나의 은행이 이미 지원을 구현했습니다. (Monzo) 앱에서.

Google 직원 Zach Koch에 따르면 이 새로운 결제 사양을 지원할 다른 온라인 판매자 및 Android 애플리케이션에 대해서는 다음과 같습니다.

이 사양을 구현해야 하는 "결제 방법 제공업체"의 수는 매우 적습니다. (수백 개), 현재 우리는 테스트할 대상 중 매우 작은 하위 집합(5개 미만)에 대해서만 직접 작업하고 있습니다. 물. 필드 중 하나를 변경해야 하는 상황이 발생하더라도 큰 상호 운용성 위험 없이 쉽게 변경할 수 있다고 생각합니다. 우리의 모든 초기 파트너는 이 사양이 변경될 수 있다는 것을 알고 있으며 이에 동의합니다.

적어도 Android에서는 다른 플레이어가 PR 생태계에 참여할 수 있도록 하려면 이 기능을 출시하는 것이 중요합니다. 나는 안드로이드 네이티브 앱을 활성화하기 위해 완전한 독점 경로를 따르지 않는 것을 정말로 선호합니다. 우리는 성장과 고급 사용 사례를 위한 여지를 남기기 위해 의도적으로 이 공간을 작게 유지했습니다.

따라서 Google이 Payment Request API에 대한 지원을 선도하고 있음을 알 수 있습니다. 이 새로운 결제 방식이 모든 브라우저에 적용되는 모습을 실제로 보려면 시간이 좀 걸릴 것입니다., 모든 온라인 판매자 및 모든 애플리케이션. 저는 개인적으로 Google에서 Payment Request API를 지원하게 되어 매우 기쁩니다. 전자상거래 생태계는 수년간 결제 수단으로 인해 불필요하게 분열되어 왔으며, 이 새로운 API가 다시는 웹사이트에 내 신용 카드 정보를 수동으로 입력할 필요가 없다는 의미입니다. 그것.


다가오는 표준에 대해 어떻게 생각하시나요? 의견을 듣고 여러분의 의견을 알려주세요!