Android In App Billing - Version3 적용하기~!
안드로이드 공식 홈페이지에서 참고하여 테스트를 진행해보았다.
1. 라이브러리 설치되었는지 확인한다.
Android SDK Manager 에서 Extras Selection 이동~!
Google Play Billing Library 가 설치되어있지 않으면 설치~!!
2. 설치가 완료되었다면 프로젝트에 적용하자~! 먼저 com.android.vending.billing
패키지를 생성한다.
그리고
<sdk>/extras/google/play_billing/이 경로로 가면 IInAppBillingService.aidl 를 발견수 있다.~!
해당 파일을 복사하여 아까전 생성한 패키지에 넣는다.~!
3. AndroidManifest.xml 에 billing Permission을 주자~!
<uses-permission android:name="com.android.vending.BILLING" />
4. In App을 사용할 Activity에 아래의 코드를 맴버 변수로 추가한다.
IInAppBillingService mService;
ServiceConnection mServiceConn = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
mService = null;
}
@Override
public void onServiceConnected(ComponentName name,
IBinder service) {
mService = IInAppBillingService.Stub.asInterface(service);
}
};
5. OnCreate함수에 아래의 Service를 bind 한다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindService(new
Intent("com.android.vending.billing.InAppBillingService.BIND"),
mServiceConn, Context.BIND_AUTO_CREATE);
6. Destroy에서는 Service를 unbind 한다.
@Override
public void onDestroy() {
super.onDestroy();
if (mServiceConn != null) {
unbindService(mServiceConn);
}
}
7. 결제가 완료되고 나서 완료후 onActivityResult 에서 정보를 받는다 간단히 로그만 뛰우는 정도로 구현~!
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1001) {
int responseCode = data.getIntExtra("RESPONSE_CODE", 0);
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
if (resultCode == RESULT_OK) {
try {
JSONObject jo = new JSONObject(purchaseData);
String sku = jo.getString("productId");
alert("You have bought the " + sku + ". Excellent choice,
adventurer!");
}
catch (JSONException e) {
alert("Failed to parse purchase data.");
e.printStackTrace();
}
}
}
}
8. 결제하기~!
sku가 Item id 이며 마지막 developerPayload 는 마음대로...하면 되는듯?~ 하다.
Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), sku, "inapp", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
startIntentSenderForResult(pendingIntent.getIntentSender(),
1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0),
Integer.valueOf(0));
9. 오류시...
이 버전의 애플리케이션에서는 google play를 통한 결제를 사용할 수 없습니다. 자세한 내용은 도움말 센터를 참조하세요
라는 문구와 함꼐 진행이 되지 않는다면 이클립스에서 Run을 한 앱의 경우 위와 같은 오류가 발생합니다. 그래서 테스트 단말기에 마켓에 올리 APK파일을 직접올려서 실행해야 합니다.
'Development > Android' 카테고리의 다른 글
[Spring Framework] RestTemplate 사용시 Caused by: java.io.EOFException 에러... (0) | 2013.12.14 |
---|---|
[Android] Maven 연동 & SpringFramework 설치하기~! (0) | 2013.12.04 |
[Android] Nexus 7 2세대 개발자 모드로 전환!! (0) | 2013.12.03 |
[cocos2d-x] CCDirector로 end() 함수 호출 문제... (0) | 2013.11.22 |
[Android] Notification Bar View Custom 하기~! (0) | 2013.09.27 |