2016-09-12 23 views
0
私は私のアプリでアプリ内課金を実装しようとしている

google payload sample's MainActivityで、それは次のように述べている:Androidのアプリ内課金:文字列ペイロード

/* TODO:セキュリティのために、ここにあなたのペイロードを生成検証のため。詳細については、 * verifyDeveloperPayload()のコメントを参照してください。これはサンプルなので、 *は空の文字列ですが、本番アプリではこれを慎重に生成する必要があります。 */

私はAndroid Developers - Security and Design上でそれを見ていると、それは述べて:

後でことができるようにあなたは、購入したユーザーを識別するためのアプリケーションを助け文字列トークンを渡す必要がありますそのユーザーが正当な購入であることを確認してください。消耗品の場合は、ランダムに生成された文字列を使用できますが、消耗品でない場合は、ユーザーを一意に識別する文字列を使用する必要があります。

はまだ私が文字列を生成しなければならないの最も重要な

「ユーザーを一意に識別する文字列を使用」する方法おそらくあなたは例を提供することができ、どのように私には明確ではありませんそれがどのように機能するかの簡単な説明。

編集: GoogleのAndroid Developers - Security and Designでは、ユーザーのメールを使用しないことを提案しています。

注意:ペイロード文字列には、そのアドレスが変更される可能性があるため、ユーザーの電子メールアドレスを使用しないでください。

代わりに何を使用できますか?

答えて

0

がここにアンドロイドのドキュメントによると、それは

5番目の引数は、ご注文についての補足情報を送信するために使用できる「開発者ペイロード」という文字列が含まれていることが述べられている(これは空の文字列を指定できます)。通常、これは、この購入要求を一意に識別する文字列トークンを渡すために使用されます。文字列値を指定すると、Google Playは購入応答とともにこの文字列を返します。その後、この購入に関するクエリを行うと、Google Playはこの文字列を購入の詳細とともに返します。

セキュリティの推奨事項:アプリケーションを購入したユーザーを識別するための文字列を渡すことをお勧めします。これにより、後でそのユーザーが正当な購入であることを確認できます。消耗品の場合、ランダムに生成された文字列を使用できますが、消耗品でない場合は、ユーザーを一意に識別する文字列を使用する必要があります。

したがって、商品ID SKU_2006の場合、購入フローをString payload = email + item1で開始した場合。

まず、あなたが購入を開始します:その後、Google Playには対応して同じペイロードを返しますので、あなたが今

boolean verifyDeveloperPayload(Purchase p) { 
     String payload = p.getDeveloperPayload(); 
.. 
} 

として、ここでそれを得るだろう、私はコードの面で全体のシナリオを定義してみましょう下記のようなリクエスト

購入注文が成功した場合、Google Playの応答データはリスナーに返される購入オブジェクトに保存されます。

private class PurchaseFinishListener implements IabHelper.OnIabPurchaseFinishedListener { 
    private final String mItemUniqeId; 
    public PurchaseFinishListener(String itemUniqeId) { 

      mItemUniqeId = itemUniqeId; 
     } 

     public void onIabPurchaseFinished(IabResult result, Purchase purchase) 
     { 
      if (result.isFailure()) { 
      Log.d(TAG, "Error purchasing: " + result); 
      return; 
      }  
    if (!verifyDeveloperPayLoad(mItemUniqeId , purchase)) { 
    Log.d(TAG, "Authenticity verification failed"); 
      return; 
    } 

    // set your product as purchased in your DB or server 

    } 
    } 

今、あなたのverifyDeveloperPayLoad(購入)メソッドは、以下のようになります。

+0

偉大な答えをいただき、ありがとうございます。彼のメール以外のユーザーを特定するために使用できるものはありますか? Googleはそれを使用しないことを示唆しているため、変更される可能性があります。 – Daniele

+0

私は同様のアルゴリズムを実装しています。しかし、 "Lukcy Patcher"アプリケーションのワンクリックでハッキングされてしまった。あなたはハッキングを防ぐためのアプローチを知っていますか? – MeLine

関連する問題