update: 添加支付回调

feature/item_system 1.0.0
胡宇飞 2023-12-28 19:29:04 +08:00
parent 0f4433b493
commit 5bc24e3443
2 changed files with 49 additions and 7 deletions

View File

@ -140,6 +140,13 @@ namespace Guru
add => _onPurchaseStart += value; add => _onPurchaseStart += value;
remove => _onPurchaseStart -= value; remove => _onPurchaseStart -= value;
} }
internal static Action<string, string> _onPurchaseFailed;
public static event Action<string, string> OnPurchaseFailed
{
add => _onPurchaseFailed += value;
remove => _onPurchaseFailed -= value;
}
} }

View File

@ -4,10 +4,21 @@ namespace Guru
using System; using System;
using System.Linq; using System.Linq;
public partial class GuruSDK public partial class GuruSDK
{ {
public static bool IsIAPReady = false; public static bool IsIAPReady = false;
//---------- 支付失败原因 ----------
public const string BuyFail_PurchasingUnavailable = "PurchasingUnavailable";
public const string BuyFail_Pending = "ExistingPurchasePending";
public const string BuyFail_ProductUnavailable = "ProductUnavailable";
public const string BuyFail_SignatureInvalid = "SignatureInvalid";
public const string BuyFail_UserCancelled = "UserCancelled";
public const string BuyFail_PaymentDeclined = "PaymentDeclined";
public const string BuyFail_DuplicateTransaction = "DuplicateTransaction";
public const string BuyFail_Unknown = "Unknown";
/// <summary> /// <summary>
/// 初始化IAP 功能 /// 初始化IAP 功能
@ -18,6 +29,7 @@ namespace Guru
GuruIAP.Instance.OnRestored += OnRestored; GuruIAP.Instance.OnRestored += OnRestored;
GuruIAP.Instance.OnBuyStart += OnBuyStart; GuruIAP.Instance.OnBuyStart += OnBuyStart;
GuruIAP.Instance.OnBuyEnd += OnBuyEnd; GuruIAP.Instance.OnBuyEnd += OnBuyEnd;
GuruIAP.Instance.OnBuyFailed += OnBuyFailed;
GuruIAP.Instance.InitWithKeys(googleKey, appleRootCerts, IsDebugMode); GuruIAP.Instance.InitWithKeys(googleKey, appleRootCerts, IsDebugMode);
} }
@ -58,12 +70,22 @@ namespace Guru
return null; return null;
} }
public static ProductSetting GetProductSetting(string productName)
{
var products = GuruSettings.Instance.Products;
if (products != null && products.Length > 0)
{
return products.FirstOrDefault(p => p.ProductName == productName);
}
return null;
}
private static Action<string, bool> _onPurchaseCallback; private static Action<string, bool> _onPurchaseCallback;
/// <summary> /// <summary>
/// 购买商品, 通过商品Name /// 购买商品, 通过商品Name
/// </summary> /// </summary>
/// <param name="productId"></param> /// <param name="productName"></param>
/// <param name="purchaseCallback"></param> /// <param name="purchaseCallback"></param>
public static void Purchase(string productName, Action<string, bool> purchaseCallback = null) public static void Purchase(string productName, Action<string, bool> purchaseCallback = null)
{ {
@ -97,15 +119,28 @@ namespace Guru
/// </summary> /// </summary>
/// <param name="productId"></param> /// <param name="productId"></param>
/// <param name="success"></param> /// <param name="success"></param>
private static void OnBuyEnd(string productId, bool success) private static void OnBuyEnd(string productName, bool success)
{ {
_onPurchaseCallback?.Invoke(productId, success); _onPurchaseCallback?.Invoke(productName, success);
} }
/// <summary>
private static void OnBuyStart(string productId) /// 支付开始
/// </summary>
/// <param name="productName"></param>
private static void OnBuyStart(string productName)
{ {
Callbacks.IAP._onPurchaseStart?.Invoke(productId); Callbacks.IAP._onPurchaseStart?.Invoke(productName);
}
/// <summary>
/// 支付失败
/// </summary>
/// <param name="productName"></param>
/// <param name="reason"></param>
private static void OnBuyFailed(string productName, string reason)
{
Callbacks.IAP._onPurchaseFailed?.Invoke(productName, reason);
} }
#endregion #endregion