시련이 찾아왔다. 한국은 구글페이를 지원하지 않는데 구글페이 구현 작업을 해야된다니. 한국에서 외국 서비스를 개발하다 겪게되는 시나리오 중 하나가 아닐까 싶다.

나와 비슷한 처지의 누군가가 있다면 조금이라도 참고가 될 수 있길.

외국 결제 중개 서비스 Stripe 를 사용하고 있다. 이곳 Android SDK 에 구글페이를 호출하는 구현이 다 wrapping 되어있기 때문에 나는 그냥 구글월렛 콘솔에서 사업체 등록과 구글페이 관련 몇가지 연동 작업 + 구글 측의 간단한 심사 과정만 통과하면 테스트 레벨부터 프로덕 레벨까지 구글페이를 실행할 수 있게 된다.

이후 앱에서 잘 호출되는 구글페이를 기획 요구사항에 맞게 피처 연계만 뚝딱 하면 된다. 앱에서 구글페이를 잘 호출 되기까지 설정하는 과정이 회사원으로서는 조금 힘들었지만 소소한 시련이었던 것 같고, 평범한 한국인 개인으로선 불가능에 가까울만큼 큰 장벽일듯 하다. 나는 전자의 케이스다. 치열했던 과거 2분기로 되돌아가서 어떤 과정들이 있었나 떠올려보자.

관련 문서들을 살펴봤다. 먼저 살펴본 Stripe 측 가이드 문서 (Learn how to accept payments using Google Pay) 를 읽다보면 나를 냅다 구글페이 관련 공식 설명문서 (Set up Google Pay API) 로 리다이렉팅 시킨다. 여기서 우리 프로젝트에 해줘야 할 첫 번 째 기초적인 설정들에 대해 알 수 있게 된다. 문서 가이드대로 프로젝트쪽 설정을 해주자.

그리고 구글 월렛 콜솔 (Wallet console) 이라는 관리 콘솔의 존재를 인지하게 된다. 월렛 콘솔에 처음 접속하면 사업체 등록을 해야되는데 이건 내가 해야될 영역이 아니기 때문에 다른 부서 관계자에게 등록을 부탁드렸다. 이후 관리 멤버로 초대 받아야 콘솔에 접속할 수 있게 되고 여기부터는 내가 Google Pay API 관련 설정들을 딸깍 딸깍 조작해주면 된다.

월렛 콘솔에서 우리가 출시한 앱 목록들이 표시되는데 프로덕 레벨에서 구글페이를 사용하려면 앱마다 간단한 심사 과정을 거쳐줘야 한다. 일단 이 시점엔 구글페이가 앱과 피처 연동 작업이 다 되어 있어야 심사를 진행할 수 있다. 구글페이가 우리 서비스에서 어떤 유즈케이스로 작동하는지 캡쳐 이미지를 제출 해야되기 때문이다.

1️⃣ 사용자가 항목이나 서비스를 탐색할 때, 2️⃣ 사용자가 최종적으로 구매할 준비가 되었을 때, 3️⃣ 사용자가 결제 방법으로 Google Pay를 선택하는 경우, 4️⃣ 이후 실제로 구글페이가 실행되는 장면, 5️⃣ 결제 결과 장면… 심사 화면에 다섯 가지 사진을 첨부해야 하는데 4번은 온갖 방법의 스크린 캡처를 다 막아놨기 때문에 다른 카메라로 직접 찍어줘야 한다. 심사를 제출하기 위한 몇 가지 프로세스를 다 통과하면 몇 시간 ~ 하루만에 구글페이 사용 승인이 완료된다.

참고로 프로덕 레벨에서의 구글페이는 release용 signing key 로 빌드된 앱에서만 실행 된다는 사실. 현금 결제 테스트를 앞둔 코리안은 “왜 구글페이가 실행이 안되지?” 의 삽질과 고민의 타임을 한 뎁스 줄이길 바란다.

여기까지가 구글페이를 사용하기 위한 전체적인 큰 흐름에 대한 이야기다. Stripe 같은 결제 중개 회사 이용 여부 상관없이 본인이 안드로이드 팀이라면 필수로 해줘야 하는 설정들이다. 이제 테스트 레벨에서 해야될 일들을 얘기 하자면 일단 준비물은 1️⃣ 구글페이를 지원하는 국가의 계정, 2️⃣ 구글페이를 지원하는 국가의 신용카드 🚨, 3️⃣ 휴대폰 실기기에 구글 월렛 앱 설치하기 4️⃣ VPN 앱. 작업자가 각자 처한 환경에 따라 큰 시련일수도 있는 그런 준비물들이다.

일단 계정 만드는것 부터가 문제다. 해당 국가의 휴대폰으로 본인인증을 요구하기 때문에 테스트용 더미 계정을 쉽게 생성할 수 있는 구조가 아니다. 인증을 통과하고 계정을 만들면 휴대폰에 구글 월렛 앱을 설치 (PlayStore)할 수 있게 된다. 한국 계정으로는 다운로드가 아예 막혀있다. PlayStore 링크를 알아도 할 수 있는게 없음. 외국 계정으로 플레이스토어에 접근해도 일단은 다운로드 버튼이 활성화 되지 않는다. 이 때 VPN 앱으로 휴대폰의 네트워크를 구글페이가 지원되는 국가로 변경해줘야 한다. 몇 번 시도하다 보면 구글 월렛 앱 다운로드 버튼이 활성화 된다. 다운로드 해주자. 구글월렛 앱을 실행했으면 신용카드를 등록해주자. 가장 큰 시련 파트일수 있는데 일단 한국 신용카드는 아무리 시도해도 등록이 안된다. 구글페이 지원국가 현지의 신용카드를 구해야 하는데 지인 찬스가 아니라면 한국인 개인으로서는 사실상 통과 불가능한 과정일듯. 아무리 그래도 테스트 레벨의 작업자에게 신용카드가 왜 필요한가? 구글페이는 휴대폰에 설치된 구글월렛을 통해 실행되고, 이 때 등록된 신용카드가 없으면 테스트 환경인데도 테스트용 신용카드가 제공되지 않는다. 아니 그 전에 우리 앱에서 구글페이를 호출하면 exception 이 발생한다. 해당 exception을 캐치해서 “구글 월렛 앱에 결제 수단을 등록해주세요” 라는 UX 예외 처리를 해주자.

앞의 과정들을 모두 마쳐야 비로소 가능한 것이 이 구글페이 테스트 되시겠다. 공개적으로 이야기할 수 있는 과정들은 다 풀어낸 거 같다. 지금 시점에 와서야 일련의 과정들을 술술 얘기할 수 있는거지. 당시엔 정보들이 여기저기 워낙 파편화 되었다고 느껴져서 이렇게 정보들을 하나로 통합하기까지 쉽지 않았다. 한국에서 이런 종류의 일을 하는 사람도 있다는 사실. 비슷한 처지의 누군가가 있다면 이 경험담을 통해 한결 더 쉬운 작업이 되길 바란다.

마지막으로 소스코드 레벨의 이야기를 좀 해보자면, 로직상으론 com.google.android.gms.wallet 쪽 코드로 구글페이 사용한 가능한 디바이스인지 체크해볼 수 있다. 이후 스트라이프 SDK 로 구현된 구글페이 호출 코드를 사용하면 되는데 내가 사용한 컴포즈 코드는 Stripe 설명 문서엔 잘 안 나와있는 것 같다. 나는 rememberGooglePayLauncher() 를 사용했고 presentForPaymentIntent() 로 구글월렛을 호출해서 구글페이가 실행되게 만들었다.

이 글의 맥락에선 잡지식일 수 있는데 payment intent 는 “고객의 한 번의 구매 세션에 대한 결제” 이라는 의미의 1회성 결제고, setup intent 는 나중에 결제하기 위해 결제수단만 미리 등록해두는 것. 예를 들어 구독 서비스에서 카드 정보만 먼저 받아두고 매달 자동결제 하는 경우가 setup intent 결제 방식이다. Stripe 에서 분류한 결제 방식이며, 다른 결제 시스템에서도 비슷한 개념을 사용한다. 용어까지 다 일치하는진 모르겠지만. 이 정보를 미리 알면 백엔드 사이드의 담당자들이나 관계자들과 소통의 갭을 조금 더 줄일수 있다.

cover