From 5bc24e3443abf57abd0f8bdb3c29b9ba8c5e59f6 Mon Sep 17 00:00:00 2001 From: HuYufei Date: Thu, 28 Dec 2023 19:29:04 +0800 Subject: [PATCH] =?UTF-8?q?update=EF=BC=9A=20=E6=B7=BB=E5=8A=A0=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Runtime/Code/Core/GuruSDK.Callback.cs | 7 ++++ Runtime/Code/Core/GuruSDK.IAP.cs | 49 +++++++++++++++++++++++---- 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/Runtime/Code/Core/GuruSDK.Callback.cs b/Runtime/Code/Core/GuruSDK.Callback.cs index 3bf14e5..9c330be 100644 --- a/Runtime/Code/Core/GuruSDK.Callback.cs +++ b/Runtime/Code/Core/GuruSDK.Callback.cs @@ -140,6 +140,13 @@ namespace Guru add => _onPurchaseStart += value; remove => _onPurchaseStart -= value; } + + internal static Action _onPurchaseFailed; + public static event Action OnPurchaseFailed + { + add => _onPurchaseFailed += value; + remove => _onPurchaseFailed -= value; + } } diff --git a/Runtime/Code/Core/GuruSDK.IAP.cs b/Runtime/Code/Core/GuruSDK.IAP.cs index b056005..12ef7da 100644 --- a/Runtime/Code/Core/GuruSDK.IAP.cs +++ b/Runtime/Code/Core/GuruSDK.IAP.cs @@ -4,10 +4,21 @@ namespace Guru using System; using System.Linq; - public partial class GuruSDK { 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"; + + /// /// 初始化IAP 功能 @@ -18,6 +29,7 @@ namespace Guru GuruIAP.Instance.OnRestored += OnRestored; GuruIAP.Instance.OnBuyStart += OnBuyStart; GuruIAP.Instance.OnBuyEnd += OnBuyEnd; + GuruIAP.Instance.OnBuyFailed += OnBuyFailed; GuruIAP.Instance.InitWithKeys(googleKey, appleRootCerts, IsDebugMode); } @@ -58,12 +70,22 @@ namespace Guru 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 _onPurchaseCallback; /// /// 购买商品, 通过商品Name /// - /// + /// /// public static void Purchase(string productName, Action purchaseCallback = null) { @@ -97,15 +119,28 @@ namespace Guru /// /// /// - private static void OnBuyEnd(string productId, bool success) + private static void OnBuyEnd(string productName, bool success) { - _onPurchaseCallback?.Invoke(productId, success); + _onPurchaseCallback?.Invoke(productName, success); } - - private static void OnBuyStart(string productId) + /// + /// 支付开始 + /// + /// + private static void OnBuyStart(string productName) { - Callbacks.IAP._onPurchaseStart?.Invoke(productId); + Callbacks.IAP._onPurchaseStart?.Invoke(productName); + } + + /// + /// 支付失败 + /// + /// + /// + private static void OnBuyFailed(string productName, string reason) + { + Callbacks.IAP._onPurchaseFailed?.Invoke(productName, reason); } #endregion