2013-04-18 29 views
24

previous question of mineへの回答により、アプリ内課金とサーバー側の確認がどのように機能するのか理解していたと思いましたが、私はまだこれは私が持っているものであるGoogle Playアプリ内課金バージョン3の購入(パート2)のサーバー側の確認

...失われたと私は何をしたいんだ:

私は、ユーザーが複数の「アイテム」を購入することができるアプリを持っています。各アイテムはサーバーに保存され、アイテムは購入時にアプリ内でダウンロードできるようにする必要があります。アイテムは、一度しか購入できない管理対象アイテム(つまり、非消耗品)です。 Google Playデベロッパーコンソールでアイテムを定義する際に問題はなく、購入を成功させることができます。

私が理解していないことは、自分のサーバーがpurchaseTokenと署名を使って購入を検証するだけでなく、購入されたアイテムXでありアイテムXであることを知ることです。サーバーがGoogleと話すことができ、特定のpurchaseTokenがどのアイテムIDに属しているかを尋ねるGoogle APIがありますか?これを行うには他の方法がありますか?

答えて

42

私自身の質問に答えるのは嫌ですが、他に誰もいませんでした。私と私の同僚は今朝もう一度問題をもう一度見ました。クライアント側の検証がTrivialDriveの例でどのように機能するかをもう一度見てから、私の問題の解決策が私にとってついに起こりました。私は間違っていることを理解したとき、私は "愚かな帽子"をかけるような気がしました。

購入を確認するために使用された購入トークンと署名だと思っていましたが、購入したアイテムAかアイテムBかどうかを確認する手段がありませんでした。

購入者がコンテンツを利用できるようにする前にサーバー側の検証(またはそのような検証を行う)を行う場合は、実際にはオリジナルのJSONデータです(IabHelperクラスを使用すると、元のJSONがPurchaseクラス)と署名と公開鍵を一緒に使用するはずです。また、サーバーに渡すオリジナルのJSONデータであるため、購入に関するすべての情報(SKU IDなど)も含まれています。

デベロッパーのペイロードを、ユーザー(デバイスではなく)を一意に識別できるものに設定することも重要です。私たちの場合、各ユーザーはサーバー上にアカウントを持っており、開発者のペイロードとして一意のユーザーIDを使用します。

/mmr.Stupid signing off!

+0

ありがとうございました!私はこの問題のために2日間過ごしました。 –

+9

あなた自身の質問に答えることはStackOverflowによって奨励されるので、心配しないでください。 – Oliver

+0

IABHelperでgetOriginalJsonを使用していただきありがとうございました – ilovett

関連する問題