안드로이드 인앱 결제

Intro

인앱 결제 사용하기

인앱 결제 구현

Gradle 추가

implementation 'com.anjlab.android.iab.v3:library:1.0.44'

Manifast 권한 추가

<uses-permission android:name="com.android.vending.BILLING" />

BillingProcessor Implements

public class Frag3 extends PreferenceFragmentCompat implements BillingProcessor.IBillingHandler

필요 메소드 오버라이드

@Override
public void onProductPurchased(@NonNull String productId, @Nullable TransactionDetails details) 
{
    //구매 완료시 호출되며 productId는 상품이름이다
     if (productId.equals("black_theme"))
        {
            sharedPref.setPurchasedTheme(true);
        } 
}
 
@Override
public void onPurchaseHistoryRestored() 
{
    // 구매정보가 복원되었을 때 호출된다
}
 
@Override
public void onBillingError(int errorCode, @Nullable Throwable error) 
{
    // 결제 실패시 호출되며 Constants.BILLING_RESPONSE_RESULT_USER_CANCELED는 사용자가 취소한 것이므로 이외의 경우에 토스트를 띄운다.
    if (errorCode != Constants.BILLING_RESPONSE_RESULT_USER_CANCELED)
    {
        Toast.makeText(getActivity(), "결제 실패", Toast.LENGTH_SHORT).show();
    }

}
 
@Override
public void onBillingInitialized() 
{
     // 초기화시 호출
}

그외 메소드 추가

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (!bp.handleActivityResult(requestCode, resultCode, data))
    {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

@Override
public void onDestroy()
{
    if (bp != null)
    {
        bp.release();
    }
    super.onDestroy();
}

BillingProcessor 객체 생성

private BillingProcessor bp;

public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
{
    addPreferencesFromResource(R.xml.settings_preference);



    bp = new BillingProcessor(getActivity(), "라이센스 키", this);
    bp.initialize();
}

1

라이센스 키는 구글 플레이 개발자 콘솔의 개발도구-서비스 및 API에서의 키를 붙여넣기한다.

결제 버튼 구현

switchdark.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener()
    {
        @Override
        public boolean onPreferenceClick(Preference preference)
        {
            if (!sharedPref.loadPuchasedTheme())
            {
                bp.purchase(getActivity(), "black_theme");
            }
            return false;
        }
    });

2

개발자 콘솔페이지에서 인앱상품-관리되는 상품을 등록하고 등록시 ID(“black_theme”)를 사용한다.

결제 버튼 클릭시 ID를 통해 관련된 상품 결제페이지가 뜨게된다.

결제 성공

SharedPreference

public void setPurchasedTheme(boolean flag)
    {
        SharedPreferences.Editor editor = mySharedPref.edit();
        editor.putBoolean("Purchased",flag);
        editor.apply();
    }

    public Boolean loadPuchasedTheme()
    {
        return mySharedPref.getBoolean("Purchased",false);
    }

SharedPreference 에서 결제 성공 flag를 관리하도록 추가한다음

@Override
    public void onProductPurchased(String productId, TransactionDetails details)
    {
        if (productId.equals("black_theme"))
        {
            sharedPref.setPurchasedTheme(true);
        }
    }

onProductPurchased 에서 관련 키 값을 true로 만들어 결제가 완료된 상태로 전환해준다.

실행 결과

3

참고자료

https://github.com/anjlab/android-inapp-billing-v3

댓글남기기