안드로이드 개발 질문/답변
(글 수 45,052)
결제 성공여부에 따라 앱내 광고를 보이고 안보이게 하려는데요...
1) 구매유형을 managed로 하는게 맞나요?
managed로 결제하게 되면 되면 user account당 한번밖에 결제 안된다고 하는데요. 만약 구매 -> 환불한 경우에도 재구매 안되나요??
2) 결제성공이후 값을 preference나 server에 저장하나요?
만약 서버 저장이 아니라면, 결제성공 이후 환불된 경우 어떻게 처리하여야 하나요? 결제한 이력을 받아오는 함수인 onPurchaseStateChange은 BillingService.requestPurchase를 호출했을때 비동기 콜백함수이고, RESTORE_TRANSACTIONS로 managed purchases에 대한 상태값을 알수 있다고 하는데. 이는 앱이 삭제후 재설치 될때나 호출하라고 해서요.
그냥 결제를 재시도해서 확인하는 방법뿐인가요?
onPurchaseStateChange 은 결제했을때도 호출되지만 RESTORE_TRANSACTIONS을 요청했을 때도 호출됩니다.
그리고 이미 결제를 했을 경우 (managed) BillingService.requestPurchase를 요청하면 마켓에서 '결제한 상품입니다'라는 문구가 뜰거에요
상태를 서버에서 관리하는게 좋은데 그게 아니라면 RESTORE_TRANSACTIONS를 요청해야 결제상태를 알수 있습니다. 근데 여기서 살짝 문제가 있어요 api 문서에도 RESTORE_TRANSACTIONS는 앱 재설치때나 하라고 되어있는데 실제로 어플을 실행하고 RESTORE_TRANSACTIONS를 연속적으로 호출할 경우 어느시점에서 더이상 RESTORE_TRANSACTIONS를 호출할수 없는 현상이 생겨요 ;; 이게 풀리는 시점이 언제가 될지 몰른다는게 큰 문제죠 ...음 서버를 이용하는게 아니라면 하루에 한번 어플에 접속했을대 RESTORE_TRANSACTIONS를 호출한다던지 뭐 그런 로직이 필요할 것 같습니다.