Google 모바일 소모성 상품 구매
개요
- Google 구매 처리 프로세스는 크게 결제 Flow와 완료/소모 Flow, 재 처리 Flow로 나누어 볼 수 있습니다.
- 결제 Flow: 유저가 구매 가능한 상품 정보를 보여주고 Google과 결제 진행
- 완료 후 소모(Consume) Flow: Google에게 정상적인 구매로 확인되면 상품 지급 및 완료처리 및 영수증 소모처리
- 빌링 API를 통해서 결제 검증을 진행
- Google에 영수증 소모(Consume) 처리
- 라이브 환경은 3일 이내에 소모 처리하지 않으면 사용자에게 자동으로 환불되고 Google Play에서 구매가 취소됩니다.(링크)
- 재 처리 Flow: 게임 서버에서 상품 지급이 누락되었거나 Consume처리가 안된 경우의 재 처리
- 주의: 게임서버 -> 빌링 API 호출 누락에 대한 재 처리입니다. 클라이언트 사이드쪽 재 처리는 SDK가이드를 참고로 대응이 필요합니다.
- Google 결제 성공 후 서버까지 요청되었지만, 게임서버에서 호출 누락 등으로 상품 지급이 누락되거나 Consume 처리가 안될 수 있습니다.
- 게임 내 상점 → 구매 복구 버튼 클릭시 재 처리 Flow를 진행하는 것을 추천 드립니다.
- 빌링 API응답이 느리거나 에러여도 로그인이 실패하지 않도록 타임아웃 및 예외 처리를 잘 해주셔야합니다.
- 빌링 API는 다시 Google 서버를 호출하기 때문에 응답이 느리거나 실패할 수 있습니다.
경고
사전 준비 사항
- 호출하실 IP, pjid, svcId, api 인증 토큰을 기술PM 등을 통해서 전달 받습니다.
- 요청이 접수되면 빌링 시스템 및 Google Play 콘솔 등에 셋팅 작업이 진행됩니다.
- 구글 테스터로 등록하실 이메일 계정 최대 3개까지 전달
- 구글 플레이 콘솔에 3개까지 등록해드리고 있습니다.
- 회사 이메일 주소로된 계정이어야합니다.
- 테스터 등록된 계정으로 결제 테스트를 진행하게되면 실제 청구되지 않고 테스트가 가능합니다. 다만 플레이 콘솔 제한 등으로 제한하고 있습니다.
- 테스트 환경에서 결제 후 소모(컨슘)하지 않으면 몇 분내 환불 처리됩니다.(라이브는 구글에서 3일이 지나면 환불)
-4a6189d1043f80db51b46fd27ebcf7a0.png)
일반적인 구매 Flow의 시퀀스 다이어그램
-d48e968d5fafa475aabebe3184086bbc.png)
추가 설명
- Google 문서를 참고하여 Billing Client 라이브러리를 통합하여 구매 프로스세스의 시작 및 구입 가능한 상품정보(SKU)를 받아옵니다.
billingClient.queryProductDetailsAsync()- 필요하다면 게임 서버에서 추가 상품 정보를 가져와서 실제 유저에게 판매할 상품만 필터링하는 로직을 작성하시면 됩니다. 예) 레벨 및 횟수 제한 상품의 처리 등
- 참고
- Google에 상품 등록은 필수로 진행(with 검수) 됩니다.
- 게임DB 기반 BM이 존재할 가능성이 큽니다.
- 빌링 시스템에서 게임DB 기반 모든 BM 대응이 불가능합니다.
- 빌링 시스템에서 상품관리 기능을 제공하면 결제 스토어, 게임서버, 빌링시스템 3곳에서 상품을 관리해야하는 번거로움이 있습니다.
- 위와 같은 사유 때문에 각 결제 스토어에서 상품을 관리하는게 필수인 스토어는 현재 빌링시스템에서는 상품관리 기능을 제공하지 않습니다.
- 참고
- 빌링 서버에 구매 예약을 진행합니다.(시퀀스 6번)
- 예약 중간 과정에 게임 서버에서 필요한 로직을 진행하실 수 있습니다.
- 게임 클라이언트는 Google에 결제 요청을 진행합니다.(시퀀스 7번)
- 결제가 완료되면 유저는 상품을 지급 받기 위해서 구매 완료 프로세스를 진행합니다.(시퀀스 9번)
- Google로부터 전달받은 영수증 및 purchaseToken 등의 정보를 게임서버->빌링 구매 검증 API로 전달합니다.
- 빌링 API는 문제 없는 결제인지 Google 서버와 통신 등을 진행하며 검증합니다.(시퀀스 9-4번)
- 게임 서버는 결제 검증 결과 문제가 없다면 유저 계정에 상품을 지급합니다.
- 상품 지급이 성공하면, 다시 빌링 API로 최종 완료 및 Google Consume 처리를 요청합니다.
- 과거에는 보통 클라이언트에서 Google에 consume 처리를 요청했지만, Google consume 서버API가 제공되어 대신 처리해드립니다.
- 소비 처리를 하지 않으면 유저는 해당 상품을 재 구매할 수 없거나 결제 관련된 문제가 발생합니다.
- 또한 3일이 지나면 자동 환불 됩니다.(Google 테스트 환경은 몇 분내에 결제 취소)
재처리 Flow의 시퀀스 다이어그램
위험
해당 재처리는 게임서버 → 빌링서버 누락에 대한 내용입니다.
게임서버까지 요청되지 않은 클라이언트 사이드의 재처리는 SDK가이드를 참고하여 구현하시면 됩니다.(예. 결제 직후 앱 종료)
-159a3d075b0126d5ef796bc79d851597.png)
추가 설명
- Google API가 구매 상태 정보를 조회하는 API를 단건만 제공하고 횟수 제한이 있습니다.
- 재 처리 Flow를 로그인 후에 추가하였다면, 빌링 API가 에러를 응답하거나 응답시간이 느려지더라도 게임 로그인에는 문제가 없도록 처리하셔야합니다.(예. 타임아웃을 유저경험을 헤치지 않는 시간으로 사용 및 에러 무시 등)
- 상품의 중복 지급이 발생하지 않도록 꼭 체크하여야합니다.
- 상품은 지급되었지만 컨슘 처리되지 않는 경우도 없어야합니다.
- 게임 DB 기준으로 재화 지급 여부 확인하시어 중복지급을 방지하고, 빌링에 완료 및 소비처리 요청 API를 호출(2-9번 시퀀스)하시면 됩니다.
- 이때 소모처리가 타임아웃 등으로 반영되었는데 빌링에 완료처리가 안된 상태라면 빌링에 완료 처리만 됩니다.