前回の続き。課金アイテムの購入(*´ω`*)
Making Purchases
実際の購入処理はシンプル。purchasePackage()
を呼ぶだけ。
try { CustomerInfo customerInfo = await Purchases.purchasePackage(package); if (customerInfo.entitlements.all["my_entitlement_identifier"].isActive) { // Unlock that great "pro" content } } on PlatformException catch (e) { var errorCode = PurchasesErrorHelper.getErrorCode(e); if (errorCode != PurchasesErrorCode.purchaseCancelledError) { showError(e); } }
購入に成功すると、更新後のCustomerInfo
が返ってくる。
例外処理に関してはこのあたり。
ユーザがキャンセルした場合でも、エラーが投げられるが、
userCancelled
などで判断できるっぽい。
Error codes common to all methods
エラーコードの一覧はこんな感じ。
Common Errors
INVALID_APP_USER_ID
- 不正なApp User ID。100文字以上など
INVALID_CREDENTIALS
- 不正なクレデンシャル
INVALID_SUBSCRIBER_ATTRIBUTES
- 顧客の属性の保存に失敗。属性の形式を確認する
- Customer Attributes | In-App Subscriptions Made Easy – RevenueCat
NETWORK_ERROR
- ネットワークエラー
OFFLINE_CONNECTION_ERROR
- オフラインエラー
OPERATION_ALREADY_IN_PROGRESS
- すでに処理中の場合。ボタン連打など
STORE_PROBLEM
- App Store, Play Storeなどの問題
SIGNATURE_VERIFICATION_FAILED
UNEXPECTED_BACKEND_RESPONSE_ERROR
- RevenueCatサーバからのレスポンスエラー
UNKNOWN_BACKEND_ERROR
- RevenueCatサーバのサーバエラー
UNKNOWN
- 不明なエラー
Purchasing Errors
購入決済時のエラー
RECEIPT_ALREADY_IN_USE
- 他のユーザがすでに同じレシートを持っている
- ログインし直すか、復元などが必要
INVALID_RECEIPT
- 不正なレシート形式か、無効なレシート
INVALID_APPLE_SUBSCRIPTION_KEY
(iOS)- Apple Subscription Keyが不正
MISSING_RECEIPT_FILE
(iOS)- デバイスにレシートファイルがない
INELIGIBLE_ERROR
(iOS)- ユーザにサブスクリプションの購入/表示する資格がない
INSUFFICIENT_PERMISSIONS_ERROR
- アプリ内課金の権限がない
PAYMENT_PENDING_ERROR
- entitlementを付与する前に、追加のユーザ操作が必要な場合
- ペアレンタルコントロールが必要など
PRODUCT_ALREADY_PURCHASED
(iOS) /ITEM_ALREADY_OWNED
(Android)- すでに購入済
PRODUCT_NOT_AVAILABLE_FOR_PURCHASE
(iOS) /ITEM_UNAVAILABLE
(Android)- 購入できない商品
PURCHASE_CANCELLED
- ユーザが購入をキャンセル
PURCHASE_INVALID
(iOS) /DEVELOPER_ERROR
- 支払い方法などのエラー
PURCHASE_NOT_ALLOWED
- 購入する権限が無い
Restoring Errors
復元時のエラー
以上!! 購入は簡単だけど、エラーハンドリングが大変だ。。(*´ω`*)