마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 인앱 결제를 구현하다가 막혔습니다. [closed]

0 추천
mConsumeResponseListener = new ConsumeResponseListener()
{
   @Override
   public void onConsumeResponse(BillingResult billingResult, String purchaseToken)
   {
      if(billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK)
      {
         // 결제한 상품을 주는 곳
      }
   }
};

위 코드는 여러 인앱 과정을 통해 최종적으로 결제 후
결제한 상품을 지급하는 코드입니다. 저 주석이 달려있는 곳에
상품을 주는 코드를 입력하기만 하면 됩니다.
(예 : 코인을 구입하면 Coin += 100;)

그런데 만약 상품이 둘 이상일 경우 처리를 어떻게 해야할까요?
저 String 변수는 이름 그대로 토큰을 가져오는 것이지, 상품 아이디값을
가져오는 것이 아니기 때문에 equals() 함수를 통한 비교도 소용없구요.

제가 생각하는 해결책은 그냥 int형 멤버변수 num을 하나 추가한 후

A 라는 상품을 결제하면 num 값을 1로,
B 라는 상품을 결제하면 num 값을 2로.
그 후 if문이나 switch문으로 각 num값에 맞는
상품을 지급하는 코드를 실행한다.

이렇게 해도 되는 건가요??
저런 식의 단순히 기능만 실행되면 장땡인 메꿔야지 하는 형식이 아닌
정석적인 방법이 있을 거 같은데 아무리 찾아봐도 도저히 나오질 않습니다 ...

애초에 저 방법이 될지 안될지 조차 모르는 상태구요...
인앱 결제는 정식이든 테스트든 일단 마켓에 출시를 해야만
테스트가 가능한 상황이기 때문에 시간도 오래걸리고,
그 시간동안 여기저기 질문을 올리면서 방법을 찾아보고 있습니다.

즉, 질문을 정리하자면
상품이 하나라면 그냥 onConsumeResponse() 이 함수에
Coin += 100; 이거 한줄만 넣어도 되지만, 상품이 둘 이상일 경우
어떤 상품인지를 분류를 해야되는데,
그 분류를 어떻게 할까라는 질문입니다.
질문을 종료한 이유: 자답입니다. 저 방법이 됩니다.
abchs8wyw (1,710 포인트) 님이 2019년 9월 4일 질문
abchs8wyw님이 2019년 9월 5일 closed
...