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