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