web-dev-qa-db-ja.com

2016年6月20日以降のGoogle Play IABテスト購入の注文のキャンセル

私はGoogle Playのアプリ内購入(IAP)を長い間使用していますが、最近(2016年6月20日)です。彼らはペイメントMerchant Centerを更新して、テスト購入が表示されないようにしました。開発者への最近のメールを引用します:

「以前は、1回限りのIAPで生成された注文IDのテスト購入。2016年6月20日以降、1回限りのIAPでは注文IDが生成されず、Merchant Centerに表示されません。」

リンクに関する購入(サブスクリプションではない)に関する情報が見つかりません: https://developer.Android.com/google/play/billing/billing_testing.html このページには、「完了したテスト購入のキャンセル"サブスクリプションについてのみコメントします。

テスト購入がペイメントMerchant Centerに表示されない場合、テスト購入はどこでキャンセルできますか?

更新-Googleサポートからの公式回答:

Google Playデベロッパーサポートにお問い合わせいただきありがとうございます。チェックインしましたが、Playデベロッパーコンソールは現在、テストIAPのキャンセルをサポートしていません。唯一の方法は、IAPを消費するか、14日間の消費時間を待つことです。

更新2-マイクからの以下の回答のおかげで、以下のコードを挿入しました:

Purchase premiumPurchase = inventory.getPurchase(Constants.SKU_PRO);
if (premiumPurchase != null) {
    App.mHelper.consumeAsync(premiumPurchase, new IabHelper.OnConsumeFinishedListener() {
        @Override
        public void onConsumeFinished(Purchase purchase, IabResult result) {
            Log.d(TAG, "Test purchase is consumed.");
        }
    });
}

私はこのコードを実行して、テスト購入をキャンセルし、購入フロー全体を再度デバッグするだけです。

32
Antonio

アプリ内購入をキャンセルする最も簡単な方法は、それを消費することです。 Googleが提供する IabHelper を使用する場合は、consumeAsyncを呼び出してPurchaseを渡すだけです。アプリのアプリ内アイテムをすべて消費する機能を維持しています。これは基本的に、テスト用の課金リセット機能です。

12
Mike

私は質問に遅れましたが、これはGoogleからのアプリ内購入を払い戻し/キャンセルする最新の方法です。左側のメニューのGoogle Play Consoleには、注文管理と呼ばれるメニュー項目があります。これにより、下部にある青い[REFUND]ボタンのある注文の概要が表示されます。これをクリックし、払い戻しの理由を選択して送信します。

公式ドキュメントの説明

1
Lew Perren

私がAndroid=デベロッパーサイトから得ていることは、テストフローの場合、購入フローが支払いをしなければならないところに到達するのをまったく妨げているということです。 Googleは、テスト購入の支払いを行わないことを確認します。14日以内に停止します。そのためには、開発者コンソールからアクティブ化できるテストライセンスが必要です。

したがって、技術的には何も購入したことがないと同時に、何かを購入したときに何が起こるかをテストできるので、キャンセルする必要はありません。しかし、マーチャントセンターはリクエストを受け取りません。

編集:

直接キャンセルして何が起こるかを確認する場合は、実際に購入してキャンセルしてください。

1
Zoe

これは最新のKotlinコードであり、すべての購入を消費して再度購入できるようにします。これを実行すると望ましくない動作が確実に発生するため、これを本番コードで使用しないように注意してください。

明らかに、以前に購入したものを入手する必要があります。

fun consumeAllTestPurchases(purchases: ArrayList<Purchase>) {
    purchases.value?.forEach {
        val consumeParams = ConsumeParams.newBuilder().setPurchaseToken(it.purchaseToken).build()
        billingClient.consumeAsync(consumeParams) { billingResult, _ ->
            if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
                var purchaseConsumed = true
            }
        }
    }
}
0
xarlymg89

TrivialDriveKotlinと同様の方法を使用する場合は、この投稿に機能的な回答を掲載します https://stackoverflow.com/a/61141740/1568148

0
Turvy