Files
WordConnect/Assets/WordConnectGameToolkit/Scripts/Services/IAP/IAPErr.cs
2025-10-17 09:14:59 +08:00

57 lines
2.2 KiB
C#

using System;
namespace WordsToolkit.Scripts.Services.IAP
{
/// <summary>
/// IAP 典型错误类型枚举
/// </summary>
public enum IAPErrorType
{
None,
UserCancelled,
PaymentDeclined,
InsufficientFunds,
ProductUnavailable,
DuplicateTransaction,
NetworkError,
NetworkUnavailable,
IAPInitFailed,
InvalidProductID,
Unknown
}
public static class IAPErrorHelper
{
/// <summary>
/// 根据错误信息字符串,提取并映射到 IAPErrorType 枚举
/// </summary>
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;
}
}
}