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);
しかし、サンプルアプリに間違ったコードがあるとは思えないので、正しく行っているかどうかはまったくわかりません!
これをどのように処理すればよいですか?私を助けてください!