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;
}
}
}