57 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|
|
} |