public void onQueryInventoryFinished(IabResult result, Inventory inv)
{
Log.d(TAG, "onQueryInventoryFinished()");
if (mIabHelper == null) return;
if (result.isFailure())
{
return;
}
Log.d(TAG, "inv.hasPurchase(SKU_NO_ADS):" + (inv.hasPurchase(SKU_NO_ADS)));
if (inv.hasPurchase(SKU_NO_ADS))
{
if (mOnPurchasedListener != null)
mOnPurchasedListener.onPurchased();
BaseActivity.mIsNoAds = true;
}
else
{
//해당 아이템 구매 여부 체크
Purchase purchase;
purchase = inv.getPurchase(SKU_NO_ADS);
if (purchase != null && verifyDeveloperPayload(purchase))
{
//해당 아이템을 가지고 있는 경우.
//아이템에대한 처리를 한다.
if (mOnPurchasedListener != null)
mOnPurchasedListener.onPurchased();
BaseActivity.mIsNoAds = true;
}
else
BaseActivity.mIsNoAds = false;
}
}
대강 위와 같은 구조입니다.
중간에 log로 확인해보면 inv.hasPurchase(SKU_NO_ADS)를 true로 반환합니다. 개발자 콘솔의 주문관리 메뉴에 해당 주문건은 확실히 '환불됨'으로 처리되어 있구요. 처리된지 2틀 지났는데도 여전히 저 코드로 확인하면 결제되어있는걸로 나오는군요..
따로 결제 상태를 갱신하는 명령어 같은걸 또 추가해줘야 되는걸까요..? 그런건 아닐거 같은데.. 이유를 모르겠군요..