2012-07-11 29 views
6

Androidアプリでアプリ内課金を導入するのは初めてです。guidelineからコードの一部をまっすぐに取り出して、払い戻しについて考えていただけで完璧に忘れてしまいました。サンプルアプリケーションはすでに払い戻しが実装されていますが、奇妙な方法で!それは払い戻しましたし、私はなぜこれがない考えを持っていない場合でも、Androidアプリ内課金払い戻し

 // Count the number of times the product was purchased 
     while (cursor.moveToNext()) { 
      int stateIndex = cursor.getInt(2); 
      PurchaseState state = PurchaseState.valueOf(stateIndex); 
      // Note that a refunded purchase is treated as a purchase. Such 
      // a friendly refund policy is nice for the user. 
      if (state == PurchaseState.PURCHASED || state == PurchaseState.REFUNDED) { 
       quantity += 1; 
      } 
     } 

     // Update the "purchased items" table 
     updatePurchasedItem(productId, quantity); 

その追加項目:払い戻しは、購入としてではなく、完全に理解できるが、元のソースは次のようになります還付の状態でアプリ上で受信されましたか?払い戻された商品には特別なIDがありますか、何が欠けていますか?私はテスト製品でこれを試しただけなので、わかりません。数量は完全に右のようです0であれば

updatePurchasedItem方法は、テーブルからエントリを削除しますので、私はこの

 while (cursor.moveToNext()) { 
      int stateIndex = cursor.getInt(2); 
      PurchaseState state = PurchaseState.valueOf(stateIndex); 
      // Note that a refunded purchase is treated as a purchase. Such 
      // a friendly refund policy is nice for the user. 
      if(Consts.DEBUG) 
       Log.v(TAG, state == PurchaseState.PURCHASED ? "purchase" : "refund"); 

      if (state == PurchaseState.PURCHASED) { 
       quantity += 1; 
      } else if(state == PurchaseState.REFUNDED) { 
       quantity = 0; 
      } 
     } 

     // Update the "purchased items" table 
     updatePurchasedItem(productId, quantity); 

に私のコードを変更しますが、私はそう、私は全くわからないよ例のアプリで間違ったコードが存在することになる疑問もし私がそれを正しければ!

どうすればよいですか?私を助けてください!

+0

これは単なるバグかもしれません。数量変数は、商品タイプの合計購入額、またはすべての購入額(「払い戻し」タイプを含む)を測定していますか? Android Developerサイトに存在するサブスクリプションの例が調整なしでは機能しないため、バグであれば驚くことはありません。 – BDFun

+0

数量はその時間に買ったアイテムの量です(複数のアイテムを一度に購入することも可能だと思います)。何らかの理由でアイテムが返金されても数量が上がります。 updatePurchasedItemは、数量が0の商品を受け取った場合にエントリを削除します。これは、払い戻しを示す限り、他​​の場所で州のデータを使用しないため、私が知っている限りです。ここで例を確認できますhttp://developer.android.com/guide/google/play/billing/billing_integrate.html#billing-download – Ruuhkis

答えて

5

履歴テーブルには購入ごとに1つのエントリがあります。これは、後に払い戻された購入は、払い戻しの後、「払い戻された」ステータスの製品の単一の履歴レコードを有することを意味する。

購入数をカウントすると、「払い戻された」状態はその商品が購入されたことを示します。 これは、ユーザーが払い戻しを受けた商品にアクセスする必要があるかどうかを判断することです。 (すでに寄付している人が購入した商品を払い戻したいと思っている開発者のサイトで、その商品を引き続き使用したいという例があります)。

払い戻しをカウントしたくない場合は、購入金額を追加するようにコードを変更する必要がありますが、払い戻しには何もしないでください。 (量を0に設定しないでください)。アプリの製品で

は3種類があります:

  1. 管理項目は:Googleは複数回、このような製品を購入することはできません。総量は、ゼロまたは1に限ります。

  2. 管理されていない項目:ユーザーはこのような製品を何度も購入することができます。合計数量はゼロ以上にすることができます

  3. 購読:管理対象と同じです。

+0

わかりやすい回答ありがとうございます! – Ruuhkis

関連する問題