7

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 がありますか、それとも何が欠けていますか? 私はまだテスト製品でこれを試しただけなので、わかりません.

updatePurchasedItem メソッドは、数量が 0 の場合、完全に正しいと思われるテーブルからエントリを削除するので、コードを次のように変更しました

        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);

しかし、サンプルアプリに間違ったコードがあるとは思えないので、正しく行っているかどうかはまったくわかりません!

これをどのように処理すればよいですか?私を助けてください!

4

1 に答える 1

5

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

購入をカウントする場合、「返金済み」の状態は、アイテムが購入されたことを示します。その後、返金された製品にユーザーがアクセスできるようにするかどうかは、開発者が決定します。(このサイトには、既に寄付した人が購入したものを返金したい開発者の例があり、製品の使用を継続できるようにしたいと考えています)。

返金をカウントしたくない場合は、コードを変更して購入数量を追加する必要がありますが、返金については何もしません。(数量をゼロに設定しないでください)。

アプリ製品には 3 つの種類があります。

  1. 管理対象アイテム: Google では、このような商品を複数回購入することを許可していません。合計数量は 0 または 1 まで追加できます。

  2. 未管理アイテム: ユーザーはそのような商品を何度も購入できます。合計数量は 0 以上にすることができます

  3. サブスクリプション: 管理対象アイテムと同じ。

于 2012-07-25T09:50:50.120 に答える