앱 내 결제(코인 구매) 구현하기: Billing Library V5
테스트용 환경 준비
구글 플레이 콘솔 계정과 실제 기기 혹은 에뮬레이터가 필요합니다. 콘솔의 라이선스 테스트 메뉴에서 테스트에 사용할 Gmail 계정을 등록하고, 앱을 플레이스토어에 등록 후 '내부 테스트'를 설정하여 같은 계정을 테스트 그룹에 추가하세요. 이렇게 하면 내부 테스트 버전을 설치해 결제 기능을 미리 시험해볼 수 있습니다.
상품(코인) 등록 절차
플레이 콘솔에서 앱을 선택한 뒤, '수익화 > 인앱 상품'으로 이동합니다. 여기서 새로운 상품(예: 10코인, 20코인, 50코인)을 추가하고, 각각의 상품 ID와 가격(예: 700원 등)을 설정합니다. 이름, 설명은 실제 앱에서 표시될 내용이니 명확하게 작성하세요.
프로젝트에 Billing 기능 적용
아래 라이브러리와 권한을 추가합니다:
// build.gradle 예시
implementation 'com.android.billingclient:billing:5.0.0'또한 AndroidManifest.xml에 필요한 권한과 설정을 추가해야 합니다.
UI 및 코드 구조 설계
결제 화면에는 이미지, 코인가 표시되는 텍스트, 상품 선택을 위한 리사이클러뷰, 사용할 코인 수 표시 텍스트, '코인 사용' 버튼 등이 포함됩니다. 리사이클러뷰의 어댑터는 상품 목록을 동적으로 표시하며 클릭시 결제 흐름이 시작됩니다.
결제 흐름 및 기능 구현
결제 로직은 다음과 같이 진행됩니다:
사용자가 상품을 클릭: 리사이클러뷰에서 상품 선택 이벤트 발생.
BillingClient를 통해 결제 창이 뜸.
결제 완료: 구글에서 purchase 객체를 반환.
purchase 정보(상품 ID, 수량 등)로 해당 코인을 구매자에게 지급.
코드 예시: 상품 목록 관리
// 각 상품을 관리하는 배열
String[] productIds = {"10_coins_id", "20_coins_id", "50_coins_id"};
int[] coinAmounts = {10, 20, 50};구매가 발생하면 해당 purchase의 상품 ID를 비교해 어떤 코인을 지급할지 결정합니다.
코인 지급 로직 설명
구매 내역이 반환되면 for문을 돌며 purchase의 상품 ID와 등록된 productIds를 비교합니다. 일치하는 상품이 있으면, SharedPreferences에 저장된 기존 코인 수에 구매한 코인을 더하여 갱신합니다. 즉, 여러 상품을 모두 처리할 수 있도록 설계되어 있습니다.
구매 완료 후 처리 및 예외 상황
만약 결제 과정 중 앱이 종료되는 등 비정상 상황이 발생하면, 복귀 시 'pending' 결제를 다시 처리하는 기능이 필요합니다. 이때 구매 검증과 소비(consumption)를 재진행하여 중복 지급이나 환불 문제가 없도록 합니다.
코드 리소스 및 어댑터, 인터페이스 활용
리사이클러뷰 어댑터와 클릭 인터페이스, 레이아웃 등 필요한 추가 파일들은 별도 저장소나 다운로드 링크를 통해 받을 수 있습니다. 프로젝트에 붙여넣고 import하면 에러 없이 사용할 수 있습니다.
앱 내 결제 기능 테스트
내부 테스트 버전으로 앱을 설치하면, 설정한 코인 상품들이 목록에 뜨고 클릭하여 구매, 코인 잔액 업데이트를 바로 확인할 수 있습니다. 구매 성공 시 코인 보유량이 즉시 갱신되므로 실시간 테스트가 가능합니다.
마무리 및 팁
구성 요소가 많지만, 순서대로 따라가면 앱에 코인 결제 시스템을 비교적 쉽게 추가할 수 있습니다. 단, 구글 정책 및 환불 처리를 꼭 주의해야 하며, 상품 ID·가격 등은 꼼꼼하게 관리하세요. 개발에 필요한 추가 파일들은 영상 하단이나 저장소에서 받을 수 있으니 활용하면 편리합니다.
출처 및 참고 :
