LoginSignup
29
27

More than 5 years have passed since last update.

iOS定期購読課金のレシートに追加された「pending_renewal_info」をみてみる

Last updated at Posted at 2018-04-20

以前書いた iOS定期購読課金 ステータスが追加された件の保留中の課金状態についての詳細です。
定期購読時のレシートにフィールド「pending_renewal_info」が追加され、保留中の定期購読状態が取得できます。

保留中の定期購読状態とは

保留中の定期購読状態とは将来予定されている定期購読(現在購読中で今後も更新されるかもしれない、また以前購読していて自動更新もOFFに)や、何らかの理由で過去に失敗した定期購読のことです。

  • 現在購読中、今後も更新されるかもしれない購読
  • 過去に購読していたが現在は期限も切れており自動更新もOFFにしている状態だが、今後自動更新をONにされるかもしれない購読
  • 定期購読の自動更新はONになっているがなんらかの理由で決済ができない状態で期限切れの購読
    • なんらかの理由は以下がありそうです
      • iThunsカードチャージが足りていない
      • クレジット決済ができなかった
      • キャリア決済の上限に達した

pending_renewal_info

キー 説明
auto_renew_product_id The current renewal preference for the auto-renewable subscription.
プロダクトIDではあるが、購入状態の優先されるプロダクトIDとなります。※1
product_id 購入したアイテムのプロダクトID 現在購読中もしくは期限切れの場合は最後に購読していたプロダクトID
original_transaction_id Appleアカウントで一意となる購入ID latest_receiptのフィールド内の値と同じです
auto_renew_status 自動更新型購読について現在の更新ステータス “1” - 現購読期間の最終日に更新される。つまり自動更新はONになっている。
“0” - 顧客が購読の自動更新をオフにした。次は更新されない。
expiration_intent 購読期限切れの理由
※期限切れの場合のみ
“1” - 顧客が購読をキャンセルした
“2” - 課金エラー; 顧客の支払い情報が有効でなくなったなど
“3” - 顧客が値上げに同意しなかった
“4” - 更新の時点でプロダクトが購入できる状態でなかった
“5” - 原因不明のエラー。
is_in_billing_retry_period 期限切れになった購読についてAppleがなお自動更新を試みているか否か
※期限切れの場合のみ
“1” - App Storeは購読更新を試みている
“0” - App Storeは購読更新の試みをしていない

※1 auto_renew_product_idとproduct_id

product_idはlatest_receipt_infoの最後のレシート(最後に購入したもの)のプロダクトIDとなり、現在購読中もしくは期限がきれたものとなる。
auto_renew_product_idは現在のアカウントがなにを購入しているかの予約までも考慮したプロダクトIDとなります。
アップグレード/ダウングレードクロスグレードを使った場合、次の更新で別のプロダクトIDに切り替わる場合に切り替わる予定のプロダクトIDがこのフィールドに設定されます。

① あるアプリにはプロダクトA(月額)とB(年額)があります。同グループ同レベルに設定することによりクロスグレードとなります。(クロスグレードについてはiOS定期購読課金 クロスグレードを参照)
② ユーザはAを購入します。このときpending_renewal_infoは以下のようになります。

"pending_renewal_info":[
  {
    "auto_renew_product_id":"product_a", 
    "original_transaction_id":"XXXXXXXXXXXXXXXX", 
    "product_id":"product_a", 
    "auto_renew_status":"1"
  }
]

③ 有効期限内にBに乗り換えます。(クロスグレード)この時点ではまだAの有効期限内なのでレシート情報は更新されていない。このときのpending_renewal_infoは以下のようになります。

"pending_renewal_info":[
  {
    "auto_renew_product_id":"product_b", 
    "original_transaction_id":"XXXXXXXXXXXXXXXX", 
    "product_id":"product_a", 
    "auto_renew_status":"1"
  }
]

④ Aの有効期限日になり、Bに切り替わりました。この時点でレシートが更新され、Aは有効期限切れ、Bが有効期限内となります。このときのpending_renewal_infoは以下のようになります。

"pending_renewal_info":[
  {
    "auto_renew_product_id":"product_b", 
    "original_transaction_id":"XXXXXXXXXXXXXXXX", 
    "product_id":"product_b", 
    "auto_renew_status":"1"
  }
]

つかえる場面

今までわからなかったことがわかるようになるのでいろいろ使えそうですね!

:metal: ユーザが自動更新をONにしているかOFFにしているかがわかるのでユーザ動向がわかる
:metal: クロスグレードしたかどうかがわからなかったがレシートからわかるようになった
:metal: 有効期限切れの理由がわかるので、iTunesチャージ切れの場合などはアプリでお知らせするなどで促進できる

29
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
27