Example #1
0
    public void OnInitializeFailed(InitializationFailureReason error)
    {
   
        m_StoreController = null;
        // Store specific subsystem, for accessing device-specific store features.
        m_StoreExtensionProvider = null;

        init = false;
    }
Example #2
0
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Purchasing;

public class IAPManager : MonoBehaviour, IStoreListener
{

    // Placing the Purchaser class in the CompleteProject namespace allows it to interact with ScoreManager, 
    // one of the existing Survival Shooter scripts.
    // Deriving the Purchaser class from IStoreListener enables it to receive messages from Unity Purchasing.

    private static IStoreController m_StoreController;          // The Unity Purchasing system.
    private static IExtensionProvider m_StoreExtensionProvider; // The store-specific Purchasing subsystems.

    // Product identifiers for all products capable of being purchased: 
    // "convenience" general identifiers for use with Purchasing, and their store-specific identifier 
    // counterparts for use with and outside of Unity Purchasing. Define store-specific identifiers 
    // also on each platform's publisher dashboard (iTunes Connect, Google Play Developer Console, etc.)

    // General product identifiers for the consumable, non-consumable, and subscription products.
    // Use these handles in the code to reference which product to purchase. Also use these values 
    // when defining the Product Identifiers on the store. Except, for illustration purposes, the 
    // kProductIDSubscription - it has custom Apple and Google identifiers. We declare their store-
    // specific mapping to Unity Purchasing's AddProduct, below.
    //public static string kProductIDConsumable =    "consumable";
    public static string kProductIDNonConsumable = "noads";
    //public static string kProductIDSubscription =  "subscription";

    // Apple App Store-specific product identifier for the subscription product.
    //private static string kProductNameAppleSubscription =  "com.unity3d.subscription.new";

    // Google Play Store-specific product identifier subscription product.
    //private static string kProductNameGooglePlaySubscription =  "com.SushrutS.TowerTrouble.noads";

    void Start()
    {
        // If we haven't set up the Unity Purchasing reference
        if (m_StoreController == null)
        {
            // Begin to configure our connection to Purchasing
            InitializePurchasing();
        }
    }

    public void InitializePurchasing()
    {
        // If we have already connected to Purchasing ...
        if (IsInitialized())
        {
            // ... we are done here.
            return;
        }

        // Create a builder, first passing in a suite of Unity provided stores.
        var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

        // Add a product to sell / restore by way of its identifier, associating the general identifier
        // with its store-specific identifiers.
        //builder.AddProduct( kProductIDConsumable, ProductType.Consumable );
        // Continue adding the non-consumable product.
        builder.AddProduct( kProductIDNonConsumable, ProductType.NonConsumable );
        // And finish adding the subscription product. Notice this uses store-specific IDs, illustrating
        // if the Product ID was configured differently between Apple and Google stores. Also note that
        // one uses the general kProductIDSubscription handle inside the game - the store-specific IDs 
        // must only be referenced here. 
        //builder.AddProduct( kProductIDSubscription, ProductType.Subscription, new IDs(){
        //        { kProductNameAppleSubscription, AppleAppStore.Name },
        //        { kProductNameGooglePlaySubscription, GooglePlay.Name },
        //    } );

        // Kick off the remainder of the set-up with an asynchrounous call, passing the configuration 
        // and this class' instance. Expect a response either in OnInitialized or OnInitializeFailed.
        UnityPurchasing.Initialize( this, builder );
    }


    private bool IsInitialized()
    {
        // Only say we are initialized if both the Purchasing references are set.
        return m_StoreController != null && m_StoreExtensionProvider != null;
    }


    public void BuyConsumable()
    {
        // Buy the consumable product using its general identifier. Expect a response either 
        // through ProcessPurchase or OnPurchaseFailed asynchronously.
        //BuyProductID( kProductIDConsumable );
    }


    public void BuyNonConsumable()
    {
        // Buy the non-consumable product using its general identifier. Expect a response either 
        // through ProcessPurchase or OnPurchaseFailed asynchronously.
        BuyProductID( kProductIDNonConsumable );
    }


    public void BuySubscription()
    {
        // Buy the subscription product using its the general identifier. Expect a response either 
        // through ProcessPurchase or OnPurchaseFailed asynchronously.
        // Notice how we use the general product identifier in spite of this ID being mapped to
        // custom store-specific identifiers above.
        //BuyProductID( kProductIDSubscription );
    }


    void BuyProductID(string productId)
    {
        // If Purchasing has been initialized ...
        if (IsInitialized())
        {
            // ... look up the Product reference with the general product identifier and the Purchasing 
            // system's products collection.
            Product product = m_StoreController.products.WithID(productId);

            // If the look up found a product for this device's store and that product is ready to be sold ... 
            if (product != null && product.availableToPurchase)
            {
                Debug.Log( string.Format( "Purchasing product asychronously: '{0}'", product.definition.id ) );
                // ... buy the product. Expect a response either through ProcessPurchase or OnPurchaseFailed 
                // asynchronously.
                m_StoreController.InitiatePurchase( product );
            }
            // Otherwise ...
            else
            {
                // ... report the product look-up failure situation  
                Debug.Log( "BuyProductID: FAIL. Not purchasing product, either is not found or is not available for purchase" );
            }
        }
        // Otherwise ...
        else
        {
            // ... report the fact Purchasing has not succeeded initializing yet. Consider waiting longer or 
            // retrying initiailization.
            Debug.Log( "BuyProductID FAIL. Not initialized." );
        }
    }


    // Restore purchases previously made by this customer. Some platforms automatically restore purchases, like Google. 
    // Apple currently requires explicit purchase restoration for IAP, conditionally displaying a password prompt.
    public void RestorePurchases()
    {
        // If Purchasing has not yet been set up ...
        if (!IsInitialized())
        {
            // ... report the situation and stop restoring. Consider either waiting longer, or retrying initialization.
            Debug.Log( "RestorePurchases FAIL. Not initialized." );
            return;
        }

        // If we are running on an Apple device ... 
        if (Application.platform == RuntimePlatform.IPhonePlayer ||
            Application.platform == RuntimePlatform.OSXPlayer)
        {
            // ... begin restoring purchases
            Debug.Log( "RestorePurchases started ..." );

            // Fetch the Apple store-specific subsystem.
            var apple = m_StoreExtensionProvider.GetExtension<IAppleExtensions>();
            // Begin the asynchronous process of restoring purchases. Expect a confirmation response in 
            // the Action<bool> below, and ProcessPurchase if there are previously purchased products to restore.
            apple.RestoreTransactions( (result) =>
            {
                // The first phase of restoration. If no more responses are received on ProcessPurchase then 
                // no purchases are available to be restored.
                Debug.Log( "RestorePurchases continuing: " + result + ". If no further messages, no purchases available to restore." );
            } );
        }
        // Otherwise ...
        else
        {
            // We are not running on an Apple device. No work is necessary to restore purchases.
            Debug.Log( "RestorePurchases FAIL. Not supported on this platform. Current = " + Application.platform );
        }
    }


    //  
    // --- IStoreListener
    //

    public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
    {
        // Purchasing has succeeded initializing. Collect our Purchasing references.
        Debug.Log( "OnInitialized: PASS" );

        // Overall Purchasing system, configured with products for this application.
        m_StoreController = controller;
        // Store specific subsystem, for accessing device-specific store features.
        m_StoreExtensionProvider = extensions;
    }


    public void OnInitializeFailed(InitializationFailureReason error)
    {
        // Purchasing set-up has not succeeded. Check error for reason. Consider sharing this reason with the user.
        Debug.Log( "OnInitializeFailed InitializationFailureReason:" + error );
    }


    public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
    {
        // A consumable product has been purchased by this user.
        //if (String.Equals( args.purchasedProduct.definition.id, kProductIDConsumable, StringComparison.Ordinal ))
        //{
        //    Debug.Log( string.Format( "ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id ) );
        //    // The consumable item has been successfully purchased, add 100 coins to the player's in-game score.
        //    //ScoreManager.score += 100;

        //}
        //// Or ... a non-consumable product has been purchased by this user.
        //else
        if (String.Equals( args.purchasedProduct.definition.id, kProductIDNonConsumable, StringComparison.Ordinal ))
        {
            Debug.Log( string.Format( "ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id ) );

            PurchaseComplete();


            // TODO: The non-consumable item has been successfully purchased, grant this item to the player.
        }
        // Or ... a subscription product has been purchased by this user.
        //else if (String.Equals( args.purchasedProduct.definition.id, kProductIDSubscription, StringComparison.Ordinal ))
        //{
        //    Debug.Log( string.Format( "ProcessPurchase: PASS. Product: '{0}'", args.purchasedProduct.definition.id ) );
        //    // TODO: The subscription item has been successfully purchased, grant this to the player.
        //}
        // Or ... an unknown product has been purchased by this user. Fill in additional products here....
        else
        {
            Debug.Log( string.Format( "ProcessPurchase: FAIL. Unrecognized product: '{0}'", args.purchasedProduct.definition.id ) );
            UIScript.instance.SetPurchaseState( "UnKnown Product" );
        }

        // Return a flag indicating whether this product has completely been received, or if the application needs 
        // to be reminded of this purchase at next app launch. Use PurchaseProcessingResult.Pending when still 
        // saving purchased products to the cloud, and when that save is delayed. 
        return PurchaseProcessingResult.Complete;
    }


    public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)
    {
        // A product purchase attempt did not succeed. Check failureReason for more detail. Consider sharing 
        // this reason with the user to guide their troubleshooting actions.
        Debug.Log( string.Format( "OnPurchaseFailed: FAIL. Product: '{0}', PurchaseFailureReason: {1}", product.definition.storeSpecificId, failureReason ) );

        UIScript.instance.SetPurchaseState( "PUrchase Failed" + failureReason );

        if(failureReason == PurchaseFailureReason.DuplicateTransaction)
Example #3
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log($"In-App Purchasing initialize failed: {error}");
 }
Example #4
0
 public void OnInitializeFailed(InitializationFailureReason ifr)
 {
 }
Example #5
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log("IAP init failed: " + error.ToString());
     RefreshButtons();
 }
        // -------------------------------------------

        /*
         * OnInitializeFailed
         */
        public void OnInitializeFailed(InitializationFailureReason error)
        {
            Debug.Log("OnInitializeFailed InitializationFailureReason:" + error);
            UIEventController.Instance.DispatchUIEvent(EVENT_IAP_INITIALIZED, false);
        }
Example #7
0
 void IStoreListener.OnInitializeFailed(InitializationFailureReason error)
 {
     txtLog = "OnInitializeFailed" + error;
     Debug.Log(txtLog);
 }
Example #8
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     // Purchasing set-up has not succeeded. Check error for reason. Consider sharing this reason with the user.
     //NGUIDebug.Log ("OnInitializeFailed InitializationFailureReason:" + error);
 }
Example #9
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     UDBG.Log($"UnityPurchasing:OnInitializeFailed: {error}".Attrib(bold: true, italic: true, color: "r"));
 }
Example #10
0
 private void OnInitializeFailed(InitializationFailureReason t)
 {
     Debug.LogError("IAP初始化失败!:" + t);
 }
Example #11
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.LogError($"On init fail. {error}");
 }
Example #12
0
 public void OnInitializeFailed(InitializationFailureReason reason)
 {
     Debug.Log("OnInitializeFailed InitializationFailureReason:" + reason);
 }
Example #13
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log("OnInitializeFailed InitializationFailureReason:" + error);
 }
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     this.m_ForwardTo.OnInitializeFailed(error);
 }
Example #15
0
 public void OnInitializeFailed(InitializationFailureReason failureReason)
 {
     Debug.Log(failureReason.ToString());
 }
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log("OnInitializeFailed InitializationFailureReason:" + error);
 }
Example #17
0
 public void OnInitializeFailed(InitializationFailureReason error) => Debug.Log($"InitializeFailed: {error}");
Example #18
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log("PurchaseManager: InitializationFailed, " + error);
 }
Example #19
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log("store initialization failed: " + error);
     this.storeMenu.setupIAPSection(false);
 }
Example #20
0
 void IStoreListener.OnInitializeFailed(InitializationFailureReason error)
 {
 }
Example #21
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     m_ForwardTo.OnInitializeFailed(error);
 }
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.LogError(string.Format("Purchasing failed to initialize. Reason: {0}", error.ToString()));
 }
Example #23
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     _OnInitFinished(false, error.ToString());
 }
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.LogError("[In-App Purchase Manager] >>>>>> OnInitializeFailed InitializationFailureReason:" + error);
 }
Example #25
0
 /// <summary>
 /// 初始化失败
 /// </summary>
 /// <param name="error"></param>
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     AllSDKManager.SDKDebug(Name + "初始化失败:" + error);
 }
Example #26
0
 /// <summary>
 /// Called when Unity IAP encounters an unrecoverable initialization error.
 ///
 /// Note that this will not be called if Internet is unavailable; Unity IAP
 /// will attempt initialization until it becomes available.
 /// </summary>
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log("Unity IAP Initialisation failed");
 }
Example #27
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     this.msgText.text = "OnInitializeFailed InitializationFailureReason:" + error;
 }
 /// <summary>
 /// Called when Unity IAP encounters an unrecoverable initialization error.
 ///
 /// Note that this will not be called if Internet is unavailable; Unity IAP
 /// will attempt initialization until it becomes available.
 /// </summary>
 public void OnInitializeFailed(InitializationFailureReason _error)
 {
     Debug.LogError("[IAP] Failed Initialize");
 }
Example #29
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log("UnityIapProvider - OnInitializeFailed InitializationFailureReason:" + error);
     _listener.OnProductsQueryFailed();
 }
Example #30
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     throw new System.NotImplementedException();
 }
Example #31
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.LogError("Purchasing failed to initialize.");
 }
Example #32
0
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     // Purchasing set-up has not succeeded. Check error for reason. Consider sharing this reason with the user.
     Debug.Log("OnInitializeFailed InitializationFailureReason:" + error);
 }
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.Log(string.Format("error : {0}", error));
 }
Example #34
0
	public void OnInitializeFailed(InitializationFailureReason error)
	{
		Debug.Log("Billing failed to initialize!");
		switch (error)
		{
			case InitializationFailureReason.AppNotKnown:
				Debug.LogError("Is your App correctly uploaded on the relevant publisher console?");
				break;
			case InitializationFailureReason.PurchasingUnavailable:
				// Ask the user if billing is disabled in device settings.
				Debug.Log("Billing disabled!");
				break;
			case InitializationFailureReason.NoProductsAvailable:
				// Developer configuration error; check product metadata.
				Debug.Log("No products available for purchase!");
				break;
		}
	}
Example #35
0
 public void OnInitializeFailed(InitializationFailureReason reason)
 {
     Log.Verbose(nameof(UnityInAppPurchaser), "OnInitializeFailed InitializationFailureReason:" + reason);
     _onInitializedCallback.CallSafe(false);
 }
 public void OnInitializeFailed(InitializationFailureReason error)
 {
     Debug.LogError("IAPMgr InitializationFailureReason:" + error);
 }
 public void OnInitializeFailed(InitializationFailureReason reason)
 {
     Debug.Log("OnInitializeFailed InitializationFailureReason:" + reason);
 }