GuruSDKService/Runtime/GuruSDKService.IAP.cs

112 lines
3.2 KiB
C#

using Guru;
using UnityEngine.Purchasing;
namespace GuruSDKService
{
public partial class GuruSDKService
{
private void AddIAPCallbackListener()
{
GuruSDK.Callbacks.IAP.OnIAPInitStart += OnIAPInitStart;
GuruSDK.Callbacks.IAP.OnIAPInitComplete += OnIAPInitComplete;
GuruSDK.Callbacks.IAP.OnPurchaseStart += OnPurchaseStart;
GuruSDK.Callbacks.IAP.OnPurchaseEnd += OnPurchaseEnd;
GuruSDK.Callbacks.IAP.OnPurchaseFailed += OnPurchaseFailed;
GuruSDK.Callbacks.IAP.OnIAPRestored += OnIAPRestored;
}
#region callbacks
private void OnIAPInitStart()
{
Log.I($"[GuruCallback][OnIAPInitStart]");
}
private void OnIAPInitComplete(bool success)
{
Log.I($"[GuruCallback][OnIAPInitComplete] success:{success}");
}
private void OnPurchaseStart(string productName)
{
Log.I($"[GuruCallback][OnPurchaseStart] productName:{productName}");
}
private void OnPurchaseEnd(string productName, bool success)
{
Log.I($"[GuruCallback][OnPurchaseEnd] productName:{productName}, success:{success}");
}
private void OnPurchaseFailed(string productName, string reason)
{
Log.I($"[GuruCallback][OnPurchaseFailed] productName:{productName}, reason:{reason}");
}
private void OnIAPRestored(bool success, string msg)
{
Log.I($"[GuruCallback][OnIAPRestored] success:{success}, msg:{msg}");
}
#endregion
#region 查询接口
public string GetProductCurrencyCode(string productName)
{
if (string.IsNullOrEmpty(productName))
return Fallback();
var productInfo = GuruSDK.GetProductInfo(productName);
if (productInfo == null)
return Fallback();
return productInfo.CurrencyCode;
string Fallback()
{
return "USD";
}
}
public string GetProductPriceString(string productName)
{
if (string.IsNullOrEmpty(productName))
return Fallback();
var productInfo = GuruSDK.GetProductInfo(productName);
if (productInfo == null)
return Fallback();
return productInfo.LocalizedPriceString;
string Fallback()
{
return "$0";
}
}
public double GetProductPrice(string productName)
{
if (string.IsNullOrEmpty(productName))
return Fallback();
var productInfo = GuruSDK.GetProductInfo(productName);
if (productInfo == null)
return Fallback();
return productInfo.Price;
double Fallback()
{
return 0.0;
}
}
#endregion
public void ShowIAPLoadingView() => _serviceImp.ShowIAPBuyLoadingView();
public void CloseIAPLoadingView() => _serviceImp.CloseIAPLoadingView();
public void IAPBuySuccessTip() => _serviceImp.IAPBuySuccessTip();
public void IAPBuyFailTip() => _serviceImp.IAPBuyFailTip();
}
}