2017-01-14 19 views
0

iOSアプリのアプリ購入戦略を作成する際に混乱が生じています。以下の背景情報。iOS In Railsバックエンド付きアプリ購入

iOSアプリとウェブアプリがあり、どちらもサブスクリプションモデルで動作します。バックエンドはRuby on Railsで開発されました。

現在、私はアプリの購入でiOS自動更新を開発しようとしています。アプリ購入レシートで確認するのに役立つ2つの宝石を見つけました(たとえばVenice)。私は、バックエンドからの領収書を検証すること全体のポイントを得るのではなく、クライアントはそれを安全にし、自分のサーバーに領収書のコピーを保持できるようにすることです。

私は、以下に説明するような大きな問題を予見できます。

ユーザーは、iOSアプリを使用してアカウントを作成し、[email protected] apple idを使用して毎月Xドルを支払うことでサービスに登録できます。これを行うことで、彼のサブスクリプションを更新したかどうかを追跡することができるサブスクリプションの有効期限を含め、バックエンドにこのユーザーの記録があります。このユーザーがアプリからログアウトして別のユーザーを作成すると問題が発生します。リンゴのIDはまだ[email protected]なので、リンゴの購入時にアカウントの電子メールアドレスやIDはまったく問題にはならないので、期限切れの日付は、前のアカウントで新しいユーザーは既に支払済みの顧客として識別されます。ブーム!今すぐ彼の友人は、Webアプリケーションを使用してこのアカウントでログインし、一銭を支払うことなくそれを楽しむことができます。

これが意味をなさない場合は、このハッキングの解決策が必要です。私はNetflixがAppleのIAPを使用していることを知っています.Spotifyは非常に長い間使用されていました。

また、ヴェネツィアのような宝石のような宝石のような宝石ではないので、この問題が解決されているかどうかは分かりません。ちょうどあなたと確認したいと思っていました。私はあなたの多くがこれについて考えていたと確信しています。

答えて

0

自動更新の購入をデータベースのユーザーに帰属させる場合は、領収書に記載されているoriginal_transaction_idの属性を設定することもできます。このIDをexpires_dateと一緒に保存し、既にデータベース内の別のユーザーに帰属しているAPI受信者と同じoriginal_transaction_idを含む領収書を無視またはエラーにします。

original_transaction_idは、たとえ後で登録を解除して再購読しても変わらず、iTunesユーザーにとって決して変更されません。製品IDが同じサブスクリプションファミリの場合、サブスクリプションの期間をアップグレード/ダウングレードする場合も同じです。

ヴェネツィアの代替品をお探しなら、itunes_receipt_validator宝石(完全開示:私は著者です)をご覧ください。 廃止予定のトランザクションの領収書と新しいグランド統一領収書のシグネチャとデコードをAppleのAPIに接続せずにローカルで検証し、更新された領収書と領収書情報をApple APIから取得する機能も提供します。

+0

こんにちはマークはあなたの答えに感謝します。私は同じ戦略を使用して終了し、かなりうまく動作します。これが私の問題の解決策であるので、私はそれを答えとして受け入れます。また、毎日のcronジョブを実行してデータベースの各領収書が期限切れであるかどうかを確認することは非常に便利です。これを行うことで、私は実際に私のデータベースで最新の領収書を取得するために、ユーザーがアプリを開くのを待つことはありません。 –

関連する問題