Android

Androidの月額課金が勝手に3日で解約される原因と解決方法

弊作アプリ、付箋メモQuickMemo+のAndroid版を1/23にリリースしました。

iOS版
Android版

iOS版
Android版

 

念の為、月額課金商品を購入して、無事課金が処理される事を確認。

ほっと一安心したのもつかの間。

数日後、その課金が勝手にキャンセルされました。

 

念の為もう一度試しても、キャンセル
ダメ押しの再購入も、キャンセル

 

Google Playからのメールを見ると、購入から3日きっかりで3回とも解約されてます。

 

他のAndroidアプリ2つでも月額課金を実装していて問題無かったのに、なぜ、同じ実装()をしたこのアプリでだけ問題が起こるのか…。

ググっても他のアプリの設定と比較しても良く分からない。

 

ダメ元で、Google Playの課金サポートセンターに問い合わせてみたらあっさり解決。
(お問い合わせから14分で返信来た。Googleサポート神)

購入は3日以内に承認いただく必要がございます。承認が確認されなかった取引は、自動で中止されます。
<購入は3日以内に承認する必要がある>
https://developer.android.com/google/play/billing/billing_library_releases_notes#2_0_acknowledge
<購入を承認する>
https://developer.android.com/google/play/billing/billing_library_overview#acknowledge

 

リンク先の記事と、関連記事を踏まえて状況を整理すると

  1. Google Play Billing Library v2 に、2019/5から、課金の承認処理が追加された。
  2. ユーザーが課金した後は、未承認という状態でレスポンスが来る。
  3. 課金されてから3日以内に承認しないと自動で課金がキャンセルされる。
  4. Google Play Billing Library v1 は、自動で承認されるので問題なし。

という事でした。

 

僕が過去に作ったAndroidアプリの月額課金は、Billing Library v1.1を使っていたので問題なかったけど、今回は v2が出てるジャーン、使おう!!と使ったため、問題が発生していました。

誰だ、同じ実装()って言ってた奴。

 

最後に、承認処理のKotlin実装を紹介して締めとします。

// 課金処理とレシート検証が終わった後

val purchases = billingClient.queryPurchases(BillingClient.SkuType.SUBS)
if (purchases.purchasesList != null && purchases.purchasesList.size > 0) {
    
    if (!purchases.purchasesList[0].isAcknowledged) {
        // isAcknowledged がfalseだと課金承認されていない
        
        val acknowledgePurchaseParams = AcknowledgePurchaseParams.newBuilder()
            .setPurchaseToken(purchases.purchasesList[0].purchaseToken)
            .setDeveloperPayload(purchases.purchasesList[0].developerPayload)
            .build()

        // 承認
        billingClient.acknowledgePurchase(
            acknowledgePurchaseParams,
            AcknowledgePurchaseResponseListener {
                if (it.responseCode == BillingClient.BillingResponseCode.OK) {
                    // 承認成功!

                } else {
                    // 承認失敗
                }
            }
        )
    } else {
        // restoreや課金の更新では課金承認済みなのでコッチ
    }
}

現場からは以上です。

 

twitterでも開発情報を呟いていますので、フォロー宜しくおねがいします。

 

タイトル画像は
Hans BraxmeierによるPixabayからの画像
です。