3

Androidでアプリ内課金を機能させようとしていますが、トランザクションを初期化しようとすると、次のlogcat出力が表示され続けます。

// from logcat, BillingService:
Billing service connected
CheckBillingSupported
CheckBillingSupported response code: RESULT_OK
RestoreTransactions 
   restoreTransactions received RESULT_OK
     request id: 12345
     request id: -1
handleCommand() action: [com.android.vending.billing.RESPONSE_CODE].
RestoreTransactions: RESULT_DEVELOPER_ERROR

私のセットアップ:

  1. マニフェストに請求許可があります。
  2. 請求サービスと受信者はマニフェストで定義されます。
  3. 私のアプリは公開されていません。下書きがあります。
  4. アプリ内アイテムを1つ作成し、公開しました。
  5. テストアカウントを追加しましたが、現時点で違いがあるかどうかはわかりません。
  6. マーケットプレイスのドラフトapkと私の電話のapkはどちらも、同じキーでリリースモードで署名されており、同じversionCodeを持っています。

別のアプリで動作するようにアプリ内購入を取得しましたが、その場合、すでにアプリのバージョンを公開しています。この場合(#3で述べたように)、apkを一度も公開したことはありません。これを機能させるには、アプリを1回公開する必要がありますか?私はそうではないと思います、

ありがとう

4

3 に答える 3

5

ドキュメントのすべての要件を満たしているようです。解決策は、GooglePlayサーバーが追いつくまで待つことだと思います。

アプリのapkの新しいバージョンをGooglePlayにアップロードした直後にトランザクションを復元しようとしたときに、同じ問題が発生しました。新しいapkがGoogleサーバーで完全に処理され、すべてのタイプの請求リクエストに正しく応答するまでには、しばらく時間がかかるようです(おそらく数時間) 。たとえば、CHECK_BILLING_SUPPORTEDに応答してRESULT_OKを取得していましたが、RESTORE_TRANSACTIONSに問題がありました(非同期応答としてのRESULT_DEVELOPER_ERROR)。しかし、同じバージョンのapkで数時間後に再試行したところ、コードを変更せずに、RESTORE_TRANSACTIONSに応答してRESULT_OKを取得しました。

于 2012-07-24T16:44:17.913 に答える
1

このエラーが発生する可能性があるもう1つの理由は、一度に20を超えるSKUをフェッチしようとした場合です。この制限は、AIDLファイルに記載されています。

于 2013-08-20T20:00:29.100 に答える
0

アプリをGooglePlayで公開する必要はありません。ドラフトで十分です。

あなたが言及した6つのポイントは大丈夫ですが、ドキュメントに記載されているように、追加の要件を確認する必要があると思います。

RESULT_DEVELOPER_ERROR:

アプリケーションがアプリ内課金リクエストを作成しようとしているが、アプリケーションがマニフェストでcom.android.vending.BILLING権限を宣言していないことを示します。また、アプリケーションが適切に署名されていないこと、またはバンドルキーが欠落しているリクエストや認識されないリクエストタイプを使用するリクエストなど、不正な形式のリクエストを送信したことを示すこともできます。

于 2012-07-16T22:50:52.090 に答える