public void RetrieveProducts(ReadOnlyCollection <ProductDefinition> products, Action <bool, string> callback)
        {
            if (m_Bridge != null)
            {
                if (m_RetrieveProductsCallbackCache != null)
                {
                    callback(false, "{ \"error\" : \"already retrieving products\" }");
                    return;
                }

                m_RetrieveProductsCallbackCache = callback;
                Action <bool, object> retrieveCallback = OnInventoryQueried;

                var           retrieveProductsMethod = UdpIapBridgeInterface.GetRetrieveProductsMethod();
                List <string> ids = new List <String>();
                foreach (var product in products)
                {
                    ids.Add(product.storeSpecificId);
                }
                retrieveProductsMethod.Invoke(m_Bridge, new object[] { new ReadOnlyCollection <string>(ids), retrieveCallback });
            }
            else
            {
                Debug.LogError("Cannot Retrieve Products from UDP. Please make sure your UDP package is installed and up-to-date");
                throw new NotImplementedException();
            }
        }
 public void FinishTransaction(ProductDefinition productDefinition, string transactionID)
 {
     if (m_Bridge != null)
     {
         var finishTransactionMethod = UdpIapBridgeInterface.GetFinishTransactionMethod();
         finishTransactionMethod.Invoke(m_Bridge, new object[] { transactionID });
     }
     else
     {
         Debug.LogError("Cannot Complete transaction for UDP. Please make sure your UDP package is installed and up-to-date");
         throw new NotImplementedException();
     }
 }
 public void Purchase(string productId, Action <bool, string> callback, string developerPayload = null)
 {
     if (m_Bridge != null)
     {
         var purchaseMethod = UdpIapBridgeInterface.GetPurchaseMethod();
         purchaseMethod.Invoke(m_Bridge, new object[] { productId, callback, developerPayload });
     }
     else
     {
         Debug.LogError("Cannot Purchase via UDP. Please make sure your UDP package is installed and up-to-date");
         throw new NotImplementedException();
     }
 }
 public void Initialize(Action <bool, string> callback)
 {
     if (m_Bridge != null)
     {
         var initMethod = UdpIapBridgeInterface.GetInitMethod();
         initMethod.Invoke(m_Bridge, new object[] { callback });
     }
     else
     {
         Debug.LogError("Cannot Initialize UDP store module. Please make sure your UDP package is installed and up-to-date");
         throw new NotImplementedException();
     }
 }
        public UDPBindings()
        {
            Type udpIapBridge = UdpIapBridgeInterface.GetClassType();

            if (udpIapBridge != null)
            {
                m_Bridge = Activator.CreateInstance(udpIapBridge);
            }
            else
            {
                Debug.LogError("Failed to access UDP. Please make sure your UDP package is installed and up-to-date");
                throw new NotImplementedException();
            }
        }
Esempio n. 6
0
        private INativeStore GetAndroidStoreHelper(IUnityCallback callback, AppStore store, IPurchasingBinder binder,
                                                   IUtil util)
        {
            switch (store)
            {
            case AppStore.AmazonAppStore:
                using (var pluginClass = new AndroidJavaClass("com.unity.purchasing.amazon.AmazonPurchasing"))
                {
                    // Switch Android callbacks to the scripting thread, via ScriptingUnityCallback.
                    var proxy    = new JavaBridge(new ScriptingUnityCallback(callback, util));
                    var instance = pluginClass.CallStatic <AndroidJavaObject> ("instance", proxy);
                    // Hook up our amazon specific functionality.
                    var extensions = new AmazonAppStoreStoreExtensions(instance);
                    binder.RegisterExtension <IAmazonExtensions> (extensions);
                    binder.RegisterConfiguration <IAmazonConfiguration> (extensions);
                    return(new AndroidJavaStore(instance));
                }

            case AppStore.UDP:
            {
                Type udpIapBridge = UdpIapBridgeInterface.GetClassType();
                if (udpIapBridge != null)
                {
                    UDPImpl     udpImpl     = new UDPImpl();
                    UDPBindings udpBindings = new UDPBindings();
                    udpImpl.SetNativeStore(udpBindings);
                    binder.RegisterExtension <IUDPExtensions>(udpImpl);
                    return(udpBindings);
                }
                else
                {
                    Debug.LogError("Cannot set Android target to UDP. Make sure you have installed UDP in your project");
                    throw new NotImplementedException();
                }
            }
            }

            throw new NotImplementedException();
        }