毎月自動更新されるアプリ内購入があるアプリケーションを作成しました。初めての支払い成功時に、ユーザーをプレミアムクラスにしたWebサービスを呼び出しました。
ユーザーがGoogleサーバーから手動で支払いをキャンセルした場合、ユーザーがサブスクリプションをキャンセルしたことをどのように知ることができますか。
いくつかのPHPコードクエリまたはAndroidからステータスを確認するためにバックグラウンドで何かを呼び出す必要がありますか?
よろしくお願いします
アプリ内で購入したサブスクリプションを確認するには、
編集:サブスクリプションの場合は「subs」を使用し、アプリ内購入の場合は「inapp」を使用します。例:
アプリ内購入:mService.getPurchases(3, getPackageName(), "inapp", null);
サブスクリプション:mService.getPurchases(3, getPackageName(), "subs", null);
http://developer.Android.com/google/play/billing/billing_integrate.html のQuerying for Purchased Items
も参照してください。
そのため、ユーザーがまだサブスクリプションを持っているかどうかを確認するタスクをアプリに実装できます。そうでない場合は、プレミアムステータスを削除できます。さらに、この情報はあなたに役立つかもしれません:
ユーザーがサブスクリプションをキャンセルした場合、GooglePlayは現在の請求期間の払い戻しを提供しません。代わりに、ユーザーは現在の請求サイクルが終了するまでキャンセルされたサブスクリプションにアクセスでき、その時点でサブスクリプションが終了します。たとえば、ユーザーが月額サブスクリプションを購入し、サイクルの15日目にキャンセルした場合、Google Playはサブスクリプションが30日(または月によっては他の日)の終わりまで有効であると見なします。
ソース: http://developer.Android.com/google/play/billing/billing_subscriptions.htmlsubscription cancelled
の下
これがあなたを助けることができることを願っています
Edit2:私の回答で言及されているAIDLライブラリは非推奨になり、将来的に非アクティブ化されるため、新しい に切り替えることをお勧めします。 Google Play請求ライブラリ 。
これはテストしていませんが、INAPP_PURCHASE_DATAのautoRenewing
フィールドを使用できますか?
Trueの場合、サブスクリプションはアクティブであり、次の請求日に自動的に更新されます。 falseの場合、ユーザーがサブスクリプションをキャンセルしたことを示します。
http://developer.Android.com/google/play/billing/billing_reference.html#getBuyIntent
どうやら、autoRenewing
フィールドが追加されたか、少なくとも文書化されています 2015年の初めに 。
GetPurchases()メソッドを確認してください ここ 。または、Android Studioを使用していて、ソースコードをダウンロードしている場合は、IInAppBillingService.getPurchases
メソッドでCtrl
+ Q
を押すだけです。