dodaiiAndroidSDKとは
dodaiiAndroidSDKはアプリ内課金、dodaii APIとの連携、それに付随するクラスを実装したSDKです。
dodaiiAndroidSDKはログイン後にダウンロードできるサンプルアプリケーション内に入っております。
このSDKはIn-App Billingのバージョン3で実装しています。
Android 2.3.3 以上で動作を確認しています。
※クラスの詳しい仕様につきましては、dodaiiAndroidSDKの「doc」以下にドキュメントが入っていますので、そちらを参照してください。
dodaiiAndroidSDKを利用する場合、アプリケーションのプロジェクトとdodaiiSDKのプロジェクトをリンクする必要があります。
リンクの方法はSDKを利用するアプリケーションのプロジェクトのプロパティから、「Android」→「ライブラリー」の「追加」ボタンからSDKのプロジェクトをリンクしてください。
サンプルアプリケーションでは既にリンクがされているので、参考にしてください。
開発者が変更する必要のあるパラメータは以下の値となっております。
パラメータは以下の名前でstrings.xmlなどに記載してください。
名前 |
内容 |
値 |
ApplicationID |
dodaii panelのアプリケーションに記載されているトークンです。 |
decdc5444c24142895238ec9a0ce3778 |
DodaiiSandboxMode |
開発時は「1」に設定、GooglePlayにアップロードするアプリケーションを作成する場合には「0」に設定します。 |
1
|
・AndroidManifest.xml
マニフェストファイルには以下の設定を追記します。
[パーミッション設定]
<uses-permission android:name="com.android.vending.BILLING"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
[サービスの設定]
applicationタグの間に追記してください。
<service android:name="com.dodaii.android.billing.DodaiiBillingService" />
<receiver android:name="com.dodaii.android.billing.DodaiiBillingReceiver">
<intent-filter>
<action android:name="com.android.vending.billing.IN_APP_NOTIFY" />
<action android:name="com.android.vending.billing.RESPONSE_CODE" />
<action android:name="com.android.vending.billing.PURCHASE_STATE_CHANGED" />
</intent-filter>
</receiver>
</service>
com.dodaii.android.billing.DodaiiManagerを使用してプロダクトグループ、プロダクトの情報取得などを行います。
- プロダクトグループ
void requestProductGroup()
void requestProductGroup(int groupId)
完了時のイベントリスナー登録:setOnGetProductCompleteListener(OnGetProductCompleteListener listener)
- プロダクト
void requestProducts()
void requestProducts(int groupId)
void requestProducts(int groupId, int productId)
void requestProducts(int groupId, int productId, String locale)
完了時のイベントリスナー設定:setOnGetProductCompleteListener(OnGetProductCompleteListener listener)
- レシートチェック
void provideContent(String productId, String receipt, String signature)
完了時のイベントリスナー設定:setOnReceiptCheckCompleteListener(OnReceiptCheckCompleteListener listener)
- ダウンロード情報
void productGetUrl(String orderId)
完了時のイベントリスナー設定:setOnGetDownloadURLCompleteListener(OnGetDownloadURLCompleteListener listener)
com.dodaii.android.billing.DodaiiBillingServiceを使用して購入、リストア処理を行います。
・購入時の流れ
mDodaiiBillingService:DodaiiBillingService
mDodaiiManager:DodaiiManager
サービス・マネージャーを作成し、Activity・リスナーを設定します。
mDodaiiManager = new DodaiiManager(this);
mDodaiiManager.setOnGetNonceCompleteListener(mOnGetNonceCompleteListener);
mDodaiiManager.setOnReceiptCheckCompleteListener(mOnReceiptCheckCompleteListener);
mDodaiiManager.setOnGetDownloadURLCompleteListener(mOnGetDownloadURLCompleteListener);
mDodaiiBillingManager = new DodaiiBillingManager(this, getPackageName(), new DodaiiBillingEventHandler());
DodaiiBillingManagerのstartPurchase呼び出します。
mDodaiiBillingManager.startPurchase([onActivityResultのrequestCode], [プロダクトID], null,
new DodaiiBillingManager.PurchaseHandler() {
@Override
public void onStart() { }
@Override
public void onReturn() { }
@Override
public void onFinish(DodaiiReceiptObject receipt, DodaiiBillingException e) { }
})
;
購入処理を行うと、onActivityResultが呼ばれるので、この中でnotifyActivityResultを呼ぶ。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mDodaiiBillingManager.notifyActivityResult(requestCode, resultCode, data);
}
購入情報の取得が完了すると、DodaiiBillingManager.startPurchaseのPurchaseHandler.onFinishが呼ばれるので、取得した情報をdodaiiに渡し、レシートを検証します。
mDodaiiManager.provideContent([プロダクトID], signedData, signature);
検証が終わるとDodaiiManagerからonReceiptCheckCompleteが呼ばれるので、ダウンロード情報を取得します。
mDodaiiManager.productGetUrl(receipt.orderId);
ダウンロード情報の取得が完了すると、DodaiiManagerからonGetDownloadURLCompleteが呼ばれるので、ダウンロードを開始します。
ダウンロードはDodaiiDownloadManagerのstartDownloadを利用します。
パラメータはダウンロード情報からdownloadKey、fileId、downloadURLを取得できるので、 その情報を渡してダウンロードします。
完了のイベントはDodaiiDownloadManagerにイベントリスナーを設定して検知します。
void setOnDownloadProductFileCompleteListener(OnDownloadProductFileCompleteListener listener)
以上の方法で、購入〜ダウンロードまでの処理を実装します。
dodaiiのサンプルアプリでは以下のような手順で、 リストア処理を行なっています。
※サンプルアプリではsqliteデータベースへ購入時に、購入したプロダクトのID、レシート、シグネチャなどを保存しています。
1. DodaiiBillingManagerのgetReceiptsを実行します。
2. リストアが完了すると、今までに購入した情報が複数のレシート・シグネチャとして発行されますので、ReceiptHandlerのonFinishからDodaiiManagerのrestoreContentを実行します。
※購入時にdodaiiへレシートが保存されなかった場合のためにレシートを再登録しています。
3. dodaii側の処理が正常に完了したら、リストアしたプロダクトをデータベースに保存します。
ひとつのレシートに複数の購入情報が入っているので、リストアしてデータベースに保存した購入情報は、 別のプロダクトでも同じレシート、シグネチャ情報になります。
プロダクトA, レシートA, シグネチャA
プロダクトB, レシートA, シグネチャA
プロダクトC, レシートA, シグネチャA