はじめまして。 tanakaと申します。 現在、アプリ内課金(in-app billing)を利用するAndroidアプリを提供中です。 google決裁完了後、アプリが取得したシグネチャを自前サーバへ送信・検証を行い、 検証結果OKを判断してから、プロダクトに対応するサービスをサーバから提供する形態を取っております。 最近、このアプリを利用いただいているユーザ様から 「課金を行ったが、サービスが提供されない」旨の問い合わせが数件きております。 調査をするとほとんどの場合、アプリからのシグネチャが検証サーバへ送信されていない為とわかりました。
アプリに「送信に失敗した場合シグネチャをプールして再送するようなロジック」を入れる等
対応を試みましたが、それでもなかなか事象発生が収まらず解決いたしません。
google側での決済完了(アプリ内で白ダイアログが表示)後のシグネチャ送信のタイミングで
端末が圏外になったり、意図的にバックキー・ホームキー等操作が行われているなども考えましたが、
確証が持てておりません。
そこで、このような事象は一般的に起こるものなのか、またみなさまが開発されたアプリでも
発生したというご経験などはあるでしょうか?
また、もしこの事象に対する解決策があればご教示いただきたいと思います。
みなさま何卒アドバイスのほどよろしくお願いします。
まずやるべきことは、アプリ起動時に下記のフローを行うことです。
1. queryInventoryAsyncを呼び、GooglePlayから購入済みのアイテムを取得
2. アイテムが取得できたら、その時点でサーバーに送信