using System; namespace WordsToolkit.Scripts.Services.IAP { /// /// IAP 典型错误类型枚举 /// public enum IAPErrorType { None, UserCancelled, PaymentDeclined, InsufficientFunds, ProductUnavailable, DuplicateTransaction, NetworkError, NetworkUnavailable, IAPInitFailed, InvalidProductID, Unknown } public static class IAPErrorHelper { /// /// 根据错误信息字符串,提取并映射到 IAPErrorType 枚举 /// public static IAPErrorType ParseError(string errorMessage) { if (string.IsNullOrEmpty(errorMessage)) return IAPErrorType.Unknown; errorMessage = errorMessage.ToLowerInvariant(); if (errorMessage.Contains("usercancelled") || errorMessage.Contains("user cancelled")) return IAPErrorType.UserCancelled; if (errorMessage.Contains("paymentdeclined") || errorMessage.Contains("payment declined")) return IAPErrorType.PaymentDeclined; if (errorMessage.Contains("insufficientfunds") || errorMessage.Contains("insufficient funds")) return IAPErrorType.InsufficientFunds; if (errorMessage.Contains("productunavailable") || errorMessage.Contains("product unavailable")) return IAPErrorType.ProductUnavailable; if (errorMessage.Contains("duplicatetransaction") || errorMessage.Contains("duplicate transaction")) return IAPErrorType.DuplicateTransaction; if (errorMessage.Contains("networkerror") || errorMessage.Contains("network error")) return IAPErrorType.NetworkError; if (errorMessage.Contains("networkunavailable") || errorMessage.Contains("network unavailable")) return IAPErrorType.NetworkUnavailable; if (errorMessage.Contains("InvalidProductID".ToLowerInvariant()) ) return IAPErrorType.InvalidProductID; if (errorMessage.Contains("IAPInitFailed".ToLowerInvariant())) return IAPErrorType.IAPInitFailed; return IAPErrorType.Unknown; } } }