0

Androidでアプリ内課金をテストしています。管理対象製品を購入でき、サーバーから期待どおりの応答が得られます。ただし、同じデバイスから管理対象製品を再購入しようとすると、GooglePlayから応答がありません。

再購入すると、「アイテムはすでに購入しました」というポップアップメッセージが表示されますが、応答がありません。しかし、驚くべきことに、同じデバイスから同じ製品を再購入しようとしても、ずっと早く応答があります。誰かが私が問題を解決するのを手伝ってもらえますか?
また、商品がすでに購入されているかどうかを確認する方法はありますか?

コード:

@Override
 public void onPurchaseStateChange(PurchaseState purchaseState,
                               String itemId, int quantity, long purchaseTime,
                               String developerPayload) {}

再購入しようとしたときにonPurchaseStateChange()関数が呼び出されませんでした。
グーグルプレイからonRequestPurchaseResponse()へのRESULT_ERROR応答のみを受け取りましたが、私は初めて製品を購入することができ、PurchaseState.PURCHASEDステータスを取得しました。再購入の場合、状態は返されません。これは、Google Playに関連するサーバーエラーが原因ですか?

4

1 に答える 1

1

管理アイテムを再購入することは想定されていません。何かを複数回販売したい場合は、管理されていないアイテムを使用してください。

すでに所有しているものを再購入しようとした場合のRESULT_ERRORは妥当なようです。購入が行われなかった場合、購入状態の変更メッセージを要求することはありません。

使用しているアイテムを管理対象から管理対象に変更していませんか?または、テスト製品を使用していて、現在は実際の製品を使用している可能性がありますか?(android.test.purchasedを何度も購入できます)

アプリは、管理対象アイテムを購入済みとしてマークして、ユーザーがそれらを再購入しようとするのを防ぐことができるように、行われた購入を追跡する必要があります(したがって、ユーザーはすでにそれらを購入していることがわかります)。

ユーザーが管理対象アイテムのいずれかを既に所有しているかどうかを確認する必要があるのは、ユーザーがアプリを再インストールするかどうかだけです。その場合、Restore Transactions呼び出しを行い、購入したもののアプリのローカルレコードを更新します。

于 2012-09-30T23:40:14.103 に答える