問題タブ [android-billing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1290 参照

android - 独自の Web サーバーを使用した、一貫した安全な Google Play アプリ内購入シナリオ

私はAndroid 開発者ガイドのすべてのドキュメントを何度か読み 、素晴らしい Google プレゼンテーションEvading Pirates and Stopping Vampiresに慣れました。

最後に、上記のプレゼンテーションに従って、独自の Web サーバーを含むアプリ内課金シナリオを実装しようとしました。サーバーとのやり取りの主なポイントは次のとおりです。

  1. Google に REQUEST_PURCHASE リクエストを送信する前に、Web サーバーに新しい購入を登録するリクエストを送信します。リクエストが成功すると、サーバーから nonce を取得します。
  2. トランザクションが終了すると、通知 ID の配列を受け取り、GET_PURCHASE_INFORMATION リクエストに渡します。この時点で、ステップ 1 でサーバーから受け取った nonce を使用する必要があります。<-ここで立ち往生!
  3. GET_PURCHASE_INFORMATION が成功すると、自分のサーバーに渡す signedJson と署名を取得します。購入を確認し、サーバー上でトランザクションをコミットします。

今のところ理解できないのは、次の 2 点です。

  1. 私の場合、着信 IN_APP_NOTIFY インテントによって以前に生成されたナンスを識別する方法は? 私の知る限り、現在の購入の完了または別の購入の払い戻しのいずれかに対応できます。私が見たところ、REQUEST_PURCHASE リクエストとは関係のない通知 ID しかありません。
  2. サーバーがこのイベントについて 100% 認識されるように、払い戻しを安全に処理するにはどうすればよいですか? 最も自然な方法は、サーバーから Google サーバーに定期的にリクエストして、注文の実際のステータスを取得することです。残念ながら、私の国の開発者は Google Checkout API を使用できません。もう 1 つの方法は、既知の通知 ID と新しいナンスを渡す GET_PURCHASE_INFORMATION リクエストを使用して、デバイスを介して注文状態を定期的にチェックすることです。ある期間中にチェックが失敗した場合、最初の注文状態の確認が成功するまで、購入は自動的に期限切れになります。このシナリオは可能ですか?注文の CONFIRM_NOTIFICATIONS リクエストの後に、既知の通知 ID を使用して GET_PURCHASE_INFORMATION リクエストを行うことはできますか?

編集:払い戻し (ポイント 2) については、関連するトピックAndroid アプリ内課金のセキュリティの問題がありますか? . アプリ内購入の払い戻しを開発者に依頼するための組み込みのエンド ユーザー機能が Google Play にないというのは正しいですか? その場合、アプリケーション内にボタンを実装して、検証済みのユーザー資格情報などの必要なすべての情報を含む払い戻しリクエストをサーバーに送信し、Google マーチャント アカウントとサーバーのデータベースの両方で払い戻しを手動で処理します。

0 投票する
2 に答える
1042 参照

android - 「アイテムが見つかりません」のようなAndroidアプリ内課金取得ダイアログ

私はアプリ内課金に取り組んでいます。私はすべてのステップを完了しました。署名したapkを実行し、購入ボタンをクリックした後、このダイアログ「アイテムが見つかりません」が表示されます。また、[OK]をクリックすると、「リクエストしたアイテムは購入できません」などの別のダイアログが開きます。アプリの問題は何ですか。また、テストに別のアカウントを使用しています。

0 投票する
1 に答える
397 参照

android - アプリ内課金実装:確定購入

これは、アプリ内課金を実装するためのコードの一部です。私には2つの疑問があります。

私の質問:

  1. 「この時点で、Premium の変更を適用する必要があります」と言った時点で、アプリケーションが購入されたことをどのように保証できますか?

  2. 購入後、有効になるまでに数時間かかる場合があることを理解しています。アプリケーションが適切なコードを実行するようにするにはどうすればよいですか?

0 投票する
0 に答える
35 参照

android-billing - アプリの請求トランザクションに関連するアカウント情報を見つける方法

Googleのドキュメントでは、アプリケーション内の請求トランザクションは、デバイスでプライマリとして設定されているアカウントにリンクされていると指定されています。ユーザーが自分の携帯電話に複数のGoogleアカウントを登録している場合、どのアカウントで取引が行われたかをどのように見つけることができますか。私もこのリンクを調査しました:Androidデバイスのプライマリ電子メールアドレスを取得する方法

0 投票する
1 に答える
1386 参照

android - 既存の公開済みアプリにアプリ内購入を追加し、公開せずにテストする

以前に課金権限を持っていなかった既存の公開済みアプリにアプリ内購入を追加しようとしています。請求権限のある更新された APK をアップロードしましたが、このドラフトを公開したくないため、アクティブ化しませんでした。ただし、アプリ内製品を追加することはできません。「現在のアプリケーション バージョンでは請求権限が使用されていません」と表示されます。この問題を解決/回避する方法はありますか?

0 投票する
1 に答える
108 参照

android - Android - testing inapp billing, not sure how to enable products and test with test account

I have tested on my own device using the adb tool and the program seems to work ok.

I created a test account which I added inside my developer console. But When I try to log into the developer console using my test account, Google play tries to get me to pay $25 to sign up as a developer. So I think I am doing something wrong. How do I sign into my device with my test account?

Thanks!

0 投票する
4 に答える
9041 参照

android - Android 請求の例外

請求をテストしていますが、次の例外が発生しました。

このコードを実行した後:

しかし、これに先立って、テストユーザーとしてテスト製品IDを実行しました.android.test.purchasedで動作しました。しかし、製品 ID を自分の製品 ID の 1 つに変更すると、上記の例外でクラッシュしました。

なぜそれが起こったのですか?ありがとう!

0 投票する
11 に答える
24014 参照

android - Fragment から startIntentSenderForResult を呼び出す (Android Billing v3)

新しい Android Billing v3 のドキュメントとヘルパー コードはstartIntentSenderForResult()、購入フローを開始するときに使用します。から購入フローを開始 (および結果を受け取り) したいFragment

たとえば、ドキュメントでは呼び出しを提案しています

そしてヘルパーコード呼び出し

を呼び出しますstartIntentSenderForResult()

問題は、呼び出し元( が存在する場所)ではなく、親で呼び出しstartIntentSenderForResult()が発生することです。onActivityResult()ActivityFragmentIabHelper

onActivityResult()親でを受け取り、でをActivity手動で呼び出すことができますが、結果を に直接返すから を呼び出す方法はありますか?onActivityResult()FragmentstartIntentSenderForResult()FragmentFragmentonActivityResult()

0 投票する
2 に答える
3040 参照

android - 購入アイテムのクエリ時に注文 ID を取得する

所有アイテムのクエリを検討していますが、ユーザーが実際に購入したときに利用できるチェックアウト注文 ID の取得は含まれていません。すでに行われた購入の注文 ID を照会する方法はありませんか?

0 投票する
3 に答える
4080 参照

android - Android Billingローカルキャッシュをクリアしますか?

Playストアからの購入情報のクエリにAndroidBillingAPIV3を使用しています。ローカルキャッシュをクリアできるかどうか疑問に思っています。

V3は、ネットワークトラフィックを削減するために、課金APIのローカルキャッシュ機能を追加しました。メタデータを更新する更新サービスが毎日実行されています。アプリケーションにコストを表示しているので、ローカルキャッシュをフラッシュし、価格を更新した場合に更新をトリガーして、正しい価格が表示されるようにします。

ドキュメントによると:

Google Playクライアントはアプリ内課金情報をデバイス上でローカルにキャッシュするようになったため、バージョン3 APIを使用して、たとえばgetPurchases呼び出しを通じて、この情報をより頻繁にクエリできます。以前のバージョンのAPIとは異なり、多くのバージョン3 API呼び出しは、Google Playへのネットワーク接続ではなく、キャッシュルックアップを介して処理されるため、APIの応答時間が大幅に短縮されます。