web-dev-qa-db-ja.com

Android)でアプリ内サブスクリプションのステータスを確認してください

毎月自動更新されるアプリ内購入があるアプリケーションを作成しました。初めての支払い成功時に、ユーザーをプレミアムクラスにしたWebサービスを呼び出しました。

ユーザーがGoogleサーバーから手動で支払いをキャンセルした場合、ユーザーがサブスクリプションをキャンセルしたことをどのように知ることができますか。

いくつかのPHPコードクエリまたはAndroidからステータスを確認するためにバックグラウンドで何かを呼び出す必要がありますか?

よろしくお願いします

10
Gaurang

アプリ内で購入したサブスクリプションを確認するには、

編集:サブスクリプションの場合は「subs」を使用し、アプリ内購入の場合は「inapp」を使用します。例:

アプリ内購入:mService.getPurchases(3, getPackageName(), "inapp", null);

サブスクリプション:mService.getPurchases(3, getPackageName(), "subs", null);

http://developer.Android.com/google/play/billing/billing_integrate.htmlQuerying for Purchased Itemsも参照してください。

そのため、ユーザーがまだサブスクリプションを持っているかどうかを確認するタスクをアプリに実装できます。そうでない場合は、プレミアムステータスを削除できます。さらに、この情報はあなたに役立つかもしれません:

ユーザーがサブスクリプションをキャンセルした場合、GooglePlayは現在の請求期間の払い戻しを提供しません。代わりに、ユーザーは現在の請求サイクルが終了するまでキャンセルされたサブスクリプションにアクセスでき、その時点でサブスクリプションが終了します。たとえば、ユーザーが月額サブスクリプションを購入し、サイクルの15日目にキャンセルした場合、Google Playはサブスクリプションが30日(または月によっては他の日)の終わりまで有効であると見なします。

ソース: http://developer.Android.com/google/play/billing/billing_subscriptions.htmlsubscription cancelledの下

これがあなたを助けることができることを願っています

Edit2:私の回答で言及されているAIDLライブラリは非推奨になり、将来的に非アクティブ化されるため、新しい に切り替えることをお勧めします。 Google Play請求ライブラリ

8
spcial

これはテストしていませんが、INAPP_PURCHASE_DATAのautoRenewingフィールドを使用できますか?

Trueの場合、サブスクリプションはアクティブであり、次の請求日に自動的に更新されます。 falseの場合、ユーザーがサブスクリプションをキャンセルしたことを示します

http://developer.Android.com/google/play/billing/billing_reference.html#getBuyIntent

どうやら、autoRenewingフィールドが追加されたか、少なくとも文書化されています 2015年の初めに

8
Juuso Ohtonen

GetPurchases()メソッドを確認してください ここ 。または、Android Studioを使用していて、ソースコードをダウンロードしている場合は、IInAppBillingService.getPurchasesメソッドでCtrl + Qを押すだけです。

0
YTerle