diff --git a/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs b/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs index 9778fa0..92ff0d0 100644 --- a/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs +++ b/Runtime/GuruIAP/Runtime/Code/IAPServiceBase.cs @@ -31,6 +31,8 @@ namespace Guru protected Dictionary Products => _products; public bool IsInitialized => _storeController != null && _storeExtensionProvider != null; + + private Product _curPurchasingProduct = null; /// /// 是否是首次购买 @@ -520,6 +522,8 @@ namespace Guru Analytics.IAPClick(info?.Category??"none", product.definition.id); Analytics.IAPImp(DefaultCategory, product.definition.id); + _curPurchasingProduct = product; + OnBuyStart?.Invoke(productName); return (T)this; } @@ -556,8 +560,12 @@ namespace Guru PurchaseCount++; // 记录支付次数 Debug.Log($"############ ProcessPurchase: PurchaseCount:{PurchaseCount}"); - ReportPurchaseResult(purchaseEvent); // 支付结果上报 - + if (_curPurchasingProduct != null) + { + _curPurchasingProduct = null; // 只有实际发生购买后才会有订单上报. 启动时的 Restore 操作自动调用支付成功. 这里做一个判定, 过滤掉订单的物品 + ReportPurchaseResult(purchaseEvent); // 支付结果上报 + } + var pp = purchaseEvent.purchasedProduct; if ( pp == null || string.IsNullOrEmpty(pp.receipt)) {