[`StoreKit`] `SKPaymentTransactionStateFailed` のエラー内容のメモ

アプリ内課金の処理が途中で終了したりしてエラーになった場合は、transaction.transactionState == SKPaymentTransactionStateFailed の状態になって SKPaymentTransaction にエラー内容がセットされる。このエラー内容のメモ書き。

Error Domain=SKErrorDomain

5つのエラー分類がある。

enum {
    SKErrorUnknown,
    SKErrorClientInvalid,       // client is not allowed to issue the request, etc.
    SKErrorPaymentCancelled,    // user cancelled the request, etc.
    SKErrorPaymentInvalid,      // purchase identifier was invalid, etc.
    SKErrorPaymentNotAllowed    // this device is not allowed to make the payment
};

SKErrorUnknown | Code=0 "Cannot connect to iTunes Store"

iTunes Store に接続できない場合。他の4つに当てはまらない場合は全てここに来るらしい。途中でアプリケーションがバックグラウンドへ移行したりとか

SKErrorPaymentCancelled | Code=2 "Cannot connect to iTunes Store"

これはデバイスのユーザーがアラート選択で 「キャンセル」などを押した時に設定されるっぽい。

Error Domain=SSServerErrorDomain

アップルのサーバーからエラーが返された場合のエラー

Code=5020 "Forget Your Password?"

非ログイン状態でアプリ内課金を購入しようとすると サインインするために ユーザー名とパスワードを求められる。これを何度か失敗すると、この SKPaymentTransactionStateFailed になって このエラーが設定される。

Error Domain=SSServerErrorDomain Code=-5000 "Your password was entered incorrectly."

どんな条件で発生したのか忘れてしまった…

Error Domain=SSServerErrorDomain Code=0 "This Apple ID has been Locked for security reasons. Visit iForgot to reset your account (https:/ /iforgot.apple.com)."

非ログイン状態で購入しようとした時にでるアラートで「既存のAppleIDを使用」を選択して、入力ダイアログで英数字1文字のユーザーをテキトーに入力するとコレが出てくる。セキュリティに関する理由でロックされているアカウントだってさ。

Share
関連記事