2017-08-22 1 views
2

Google Playでアプリの請求で自動更新のサブスクリプションを実装する方法を研究しています。私はhttps://developer.android.com/google/play/billing/billing_subscriptions.htmlを読んで、アプリの請求でGoogle Playの自動更新サブスクリプションを実装する方法

を参照してください

請求は、定期購読に指定された間隔と価格で無期限に続きます。定期購入が更新されるたびに、Google Playが自動的にユーザーアカウントに料金を請求し、その後、料金をメールでユーザーに通知します。毎月および毎年の定期購読では、請求日は購入日に基づいて購読期間と常に一致します。 (季節限定の定期購入は季節初日に毎年請求されます)

サブスクリプションの支払いが承認されると、Google Playはアプリ内課金APIを通じて購入アプリに購入トークンを返します。アプリはトークンをローカルに保存したり、バックエンドサーバーに渡したりすることができます。トークンを使用すると、Google PlayデベロッパーAPIを使用してトークンをリモートで確認またはキャンセルできます。

私のサーバーには、ユーザーのサブスクリプションが更新されたときの方法はありますか? Google Playの代わりにアンドロイドアプリに新しい請求書を送ってください。アンドロイドアプリは、この新しい請求書を私のサーバに送信して、確認するだけです。

電子メールでユーザーに通知するなど、ユーザーの定期購読が更新されたときにgoogle Playからサーバーに通知を送信できますか?私はgoogle playに私のバックエンドが更新されるようにユーザーの購読が自動的に更新されたという通知を私に送って、アプリの増加で購読を失効させたい。アンドロイドアプリは、チェックアウトするユーザーオープンストアがgooleプレイの充電の自動化から新しい請求書があるたびに請求書をチェックする必要はありません。実装していますか?

マイworkfollow

  1. Googleが)...新しいサイクルのサブスクリプションを充電し、私のサーバーなどbundId、手形、PRODUCT_IDまたはサブスクリプションパッケージ名として{ボディに通知し、有効期限を、また約ユーザーにメールを送っサブスクリプションの自動化
  2. 私のサーバーは、ユーザーの変更サブスクリプションを決定し、有効な場合にgoogle play apiとアプリの購入時有効期限を変更します。私のデシベル

  • ストア最新の法案があることは可能ですか?

    [更新]はgoolgeプレーAPIドキュメントから

    勧告おすすめ:サブスクリプションの購入、トークン、および発生する可能性のある課金 エラーのご バックエンドサーバに通知するようにあなたのアプリケーションのビジネスロジックを含みます。バックエンドサーバーは、サーバー側の APIを使用してレコードを照会および更新し、必要に応じて顧客 に直接フォローアップすることができます。

    どのようにGoogleのapi、任意のドキュメントやチュートリアルからお勧めを実装するには?

  • 答えて

    0

    私は現在、全く同じ問題を抱えています。 Googleのコンセプトはよく考えられていません。バックエンドサーバに金融取引について通知する可能性がありますが(here参照)、これはお勧めしません。あなたは、多くのGoogleサービスとサーバーの稼働時間でビジネストランザクションに頼っています。何かがうまくいかない、または何かがダウンしている場合、あなたは知らされず、バックエンドのビジネスロジックはもはや機能しません。

    あなたが言及したグーグルのこの勧告は、同様に吸います。自動renawal(あなたのアプリに新しいpurchaseTokenを提供する)があり、ユーザーがあなたのアプリを開かない場合はどうなりますか?その後、新しいサブスクリプションデータは決してサーバーに転送されません。そして、あなたは新しいトークンをやったことがなかった場合、ユーザは、まだ加入者である場合は、この制限されたGoogleは開発者向けのAPIを再生するので、どのようにして、確認することができます愚かなパラメータとしてpurchaseTokenを必要とする(hereを参照してください)あなたがいる限り、ユーザーにはないとして取得することはありませんことを自動的に更新された後に少なくとも1回はあなたのアプリを開きます(サーバーに送信する)。

    私はこのように実装すると思います:
    1.)私はcronジョブで購入記録を継続的にチェックします。購入記録は、最初のサブスクリプション(orderId、purchaseTokenなど、security validation process on the serverに必要なすべてのデータ)のすべてのデータを含むデータベースエントリです。すべての購入記録はバックエンドシステムのユーザーのアカウント(一部のユーザーID)に接続されています。 purchaseRecordのautoRenewing属性がfalseでない限り、サブスクリプションは有効です。契約は、Googleが自動更新されますが、ユーザーがアプリを開くことはありませんので、何の転送トークンがありません:expiryTimeMillisがを超えた場合でも、この一人のユーザーがまだあるため、ユースケースの、有効なサブスクリプションを持っている可能性があり、私は上記のあなたのサーバーに送信され、サブスクリプション更新についてまだ通知されていません。

    2.)使用が自分のサブスクリプションをいつでもキャンセルする場合は、autoRenewingはいつでもfalseになります。つまり、サブスクリプションは実際にexpiryTimeMillisで終了します。ユーザーがアプリを開き、あなたのバックエンドへの新しいpurchaseTokenを転送

    3)は、あなたは再び彼のユーザーIDを持つユーザーアカウントに接続され、新たな購入記録を取得します。ユーザーはおそらく2つの購入記録を持っているでしょう。古いものと新しいもの。その場合は、古いものを削除することができ、そして同じプロセスは、ステップ1

    で、新たな購入記録を繰り返し、私はこれまでの概念を導入していなかったので、これは本当にのように動作するかどうか私にはわかりませんこの。おそらくこれは別のやり方で動作するかもしれませんが、正しい方向への一歩かもしれません。

    +0

    yep !.これはまさに私がやっていることです。私はユーザーサブのために更新するcronjobタスクを作成しました。 Google Playのサービスサポートチームと連絡を取り、サブスクリプションの更新時に通知するフックをサポートしていないと回答しました。 – Loint

    +0

    私の理解では、自動更新は新しいpurchaseTokenを提供しません。 Obivously新しいを取得し、少なくとも一つのケースがあるhttps://developers.google.com/android-publisher/api-ref/purchases/subscriptions – svn

    +0

    @svn:orginalトークンを使用してサブスクリプションをクエリすると、常に現在の状態を与える必要がありますトークンには依存しません。https://developer.android.com/google/play/billing/billing_subscriptions.html 'しかし、ユーザーはサブスクリプションを購入したときにサブスクリプションしたコンテンツにアクセスできる可能性がありますホールド期間。その場合、新しいpurchaseToken値が返され、サブスクリプションの新しいインスタンスを表します。 (これらのGoogleの矛盾をすべてカバーするバックエンドロジックを実装しました。すぐにテストします) – Bevor

    関連する問題