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);
に私のコードを変更しますが、私はそう、私は全くわからないよ例のアプリで間違ったコードが存在することになる疑問もし私がそれを正しければ!
どうすればよいですか?私を助けてください!
これは単なるバグかもしれません。数量変数は、商品タイプの合計購入額、またはすべての購入額(「払い戻し」タイプを含む)を測定していますか? Android Developerサイトに存在するサブスクリプションの例が調整なしでは機能しないため、バグであれば驚くことはありません。 – BDFun
数量はその時間に買ったアイテムの量です(複数のアイテムを一度に購入することも可能だと思います)。何らかの理由でアイテムが返金されても数量が上がります。 updatePurchasedItemは、数量が0の商品を受け取った場合にエントリを削除します。これは、払い戻しを示す限り、他の場所で州のデータを使用しないため、私が知っている限りです。ここで例を確認できますhttp://developer.android.com/guide/google/play/billing/billing_integrate.html#billing-download – Ruuhkis