2013-01-27 15 views
18

アプリケーションにアプリ内課金を実装しようとしていますが、購入の一部は正しく機能していますが、払い戻しの手続きはどのようにして行いますか?v3のアプリ内課金払い戻しの処理

Testing In-App Billingセクションの下では、IN_APP_NOTIFYを視聴する必要があると言われていますが、そのことをクリックすると、ブロードキャスト受信機を登録する必要があるAPIのv2に移動します。しかしv3では、何をするか、またはIN_APP_NOTIFYでも同じことが使用されているかサポートされているかについての情報はありません。

サンプルアプリケーションでは払い戻しを処理しないため、v3で払い戻しを処理するにはどうすればよいですか?

+0

は私の知る限りでは、払い戻しは、アプリ内購入のためにサポートされていません。その理由は、商品が既に消費されている可能性があるからです。 – Henry

+0

@Henryですが、プレミアムアップグレードなどのアプリケーションのロックを解除するなど、消耗品ではないアイテムや、アプリケーション全体への完全なアクセス権があります。私は彼らがこれに何かを実装しないとは思わない。 v2でも利用可能だったようです – tyczj

+3

http://support.google.com/googleplay/android-developer/bin/answer.py?hl=ja&answer=1153485 – Henry

答えて

30

あなたはv2と同じ方法で処理することになっています:ユーザーが払い戻しをリクエストしたとき、Checkoutコンソールから注文をキャンセルまたは払い戻す。その後、アプリは起動時などに購入のステータスをチェックし、適切なことを行う必要があります(通常、払い戻しを受けた購入のためのアクセスを許可し、キャンセルされた購入を拒否します)。残念ながら、提供されたサンプルはこれを行うのを邪魔しないので、あなた自身で追加する必要があります。サーバーのローカルキャッシュやバグにより、購入をキャンセルまたは払い戻した後も購入状態が長く続くという事実はさらに不幸です。あなたはATMを介してそれについて行うことはあまりありません。

あなたは些細なドライブのサンプルを使用していると仮定すると、あなたのアプリにこのような何かを追加したい場合があります:

Purchase purchase = inventory.getPurchase(product); 
Log.d(TAG, "Purchase state: " + purchase.getPurchaseState()); 
// 0 (purchased), 1 (canceled), or 2 (refunded). 
if (purchase.getPurchaseState() == 0 
    || purchase.getPurchaseState() == 2) { 
    showPremiumVersion(); 
} else { 
    showFreeVersion(); 
} 
+0

アプリが毎回起動したときに、すべての購入状態を確認しているので、技術的には「BroadcastReceiver」なしでできますか? – tyczj

+1

はい、「BroadcastReceiver」はv3では不要になりました。 –

+5

プレミアム版にはなぜ2(払い戻し)の状態を使用しますか?その偉大な答え以外 –

関連する問題