diff --git a/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs b/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs index 1d53465..847628f 100644 --- a/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs +++ b/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs @@ -210,7 +210,7 @@ namespace Guru if (_products.ContainsKey(item.definition.id)) { - _products[item.definition.id].Product = item; + _products[item.definition.id].SetProduct(item); } } @@ -586,7 +586,19 @@ namespace Guru // 失败原因 OnBuyFailed?.Invoke(info.Name, failureReason.ToString()); } - + + + /// + /// 获取商品的本地化价格字符串 + /// 如果商品不存在或者 IAP 尚未初始化完成则显示 "Loading" 字样 + /// + /// + /// + public string GetLocalizedPriceString(string productName) + { + return GetInfo(productName)?.LocalizedPriceString ?? "Loading"; + } + #endregion #region Log 输出 diff --git a/Runtime/GuruIAP/Runtime/Code/Settings/ProductInfo.cs b/Runtime/GuruIAP/Runtime/Code/Settings/ProductInfo.cs index 8ec4488..ed36f22 100644 --- a/Runtime/GuruIAP/Runtime/Code/Settings/ProductInfo.cs +++ b/Runtime/GuruIAP/Runtime/Code/Settings/ProductInfo.cs @@ -66,8 +66,11 @@ namespace Guru [Serializable] public partial class ProductInfo { + private Product _product; public ProductSetting Setting; - public Product Product; + public Product Product => _product; + + public void SetProduct(Product product) => _product = product; public string Name => Setting.ProductName; public string Id => Product.definition.id; @@ -76,6 +79,7 @@ namespace Guru public string Category => Setting.Category; public string Type => Setting.Type == ProductType.Subscription ? "subscription" : "product"; public bool IsFree => Setting.IsFree; + public string LocalizedPriceString => Product?.metadata.localizedPriceString ?? $"$ {Setting.Price}"; }