안드로이드 인앱 결제
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();
}
라이센스 키는 구글 플레이 개발자 콘솔의 개발도구-서비스 및 API
에서의 키를 붙여넣기한다.
결제 버튼 구현
switchdark.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener()
{
@Override
public boolean onPreferenceClick(Preference preference)
{
if (!sharedPref.loadPuchasedTheme())
{
bp.purchase(getActivity(), "black_theme");
}
return false;
}
});
개발자 콘솔페이지에서 인앱상품-관리되는 상품
을 등록하고 등록시 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로 만들어 결제가 완료된 상태로 전환해준다.
댓글남기기