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; 이거 한줄만 넣어도 되지만, 상품이 둘 이상일 경우
어떤 상품인지를 분류를 해야되는데,
그 분류를 어떻게 할까라는 질문입니다.