dodaiiAndroidSDK

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>

APIとの通信

com.dodaii.android.billing.DodaiiManagerを使用してプロダクトグループ、プロダクトの情報取得などを行います。

  1. プロダクトグループ
    void requestProductGroup() 
    void requestProductGroup(int groupId) 

    完了時のイベントリスナー登録:setOnGetProductCompleteListener(OnGetProductCompleteListener listener) 

  2. プロダクト
    void requestProducts() 
    void requestProducts(int groupId) 
    void requestProducts(int groupId, int productId) 
    void requestProducts(int groupId, int productId, String locale) 

    完了時のイベントリスナー設定:setOnGetProductCompleteListener(OnGetProductCompleteListener listener) 

  3. レシートチェック
    void provideContent(String productId, String receipt, String signature) 

    完了時のイベントリスナー設定:setOnReceiptCheckCompleteListener(OnReceiptCheckCompleteListener listener) 

  4. ダウンロード情報
    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