in app billing v3 でサンドボックステストするときの話

とりあえずサンプルアプリのコードをちょちょっといじって、おなじみの"android.test.purchased"を買おうとすると、購入後のセキュリティのチェックでエラーが出てめんどうなことに。

E/IABUtil/Security(5973): Purchase verification failed: missing data.
E/IabHelper(5973): In-app billing error: Purchase signature verification FAILED for sku android.test.purchased

どうもSecurity.javaに問題があるようで、"android.test.purchased"を購入しようとするとSecurity#verifyPurchaseでsignatureがnullとなりエラーシーケンスに移行するご様子。
そしてここでエラーが起きると、その後のconsumePurchaseを呼び出す処理に到達しないため、結果としてアイテムが二度と買えない羽目に・・・。

この状態になるとアプリをアンインストールしても元の状態に戻せません(GooglePlayの方で購入情報をキャッシュしているので)。
アプリ設定からGooglePlayのデータを消去してやることで一応復旧はするみたいです(一部アカウント情報なんかが消えた気がしますが・・・)。

で、下記の参考サイトをもとにsignatureがnullの場合もtrueを返すように修正して動作するように修正しまんた。

if (TextUtils.isEmpty(signedData) || TextUtils.isEmpty(base64PublicKey) || TextUtils.isEmpty(signature)) {
        Log.e(TAG, "Purchase verification failed: missing data.");
        if (BuildConfig.DEBUG) {
                return true;
        }
        return false;
}

SOF の皆さん、いつもお世話になってます
http://stackoverflow.com/questions/19732025/android-in-app-billing-purchase-verification-failed

コメント

このブログの人気の投稿

Activity以外からstartActivityする

@@@ ABORTING: INVALID HEAP ADDRESS IN dlfree