using UnityEngine.Purchasing; using UnityEngine; namespace GFGGame { public class QDAppStore { public static void InitPlatform() { IAPManager.Instance.InitializePurchasing(); } public static void Pay(int buyID, int count, string orderID, long Price) { IAPManager.Instance.Pay(buyID, count, orderID, Price); } } public class IAPManager : SingletonBase, IStoreListener { IStoreController m_StoreController; // The Unity Purchasing system. public void Pay(int buyID, int count, string orderID, long Price) { Debug.Log($"Pay {buyID}"); m_StoreController.InitiatePurchase(buyID + ""); } public void InitializePurchasing() { Debug.Log("InitializePurchasing"); var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); builder.AddProduct("10001", ProductType.Consumable); UnityPurchasing.Initialize(this, builder); } public void OnInitialized(IStoreController controller, IExtensionProvider extensions) { Debug.Log("In-App Purchasing successfully initialized"); m_StoreController = controller; EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_INITED, true); } public void OnInitializeFailed(InitializationFailureReason error) { Debug.Log($"In-App Purchasing initialize failed: {error}"); EventAgent.DispatchEvent(ConstMessage.ON_PLATFORM_SDK_INITED, false); } public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) { Debug.Log($"Purchase failed - Product: '{product.definition.id}', PurchaseFailureReason: {failureReason}"); } public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) { //Retrieve the purchased product var product = args.purchasedProduct; Debug.Log($"Purchase Complete - Product: {product.definition.id}"); //We return Complete, informing IAP that the processing on our side is done and the transaction can be closed. return PurchaseProcessingResult.Complete; } } }