The Unity IAP does not initialize. The Purchasing Unavailable error is returned. Code (CSharp): using System.Collections; using UnityEngine; using UnityEngine.Purchasing; using static CodeStrange.LogNotification; public class StoreManager : MonoBehaviour, IStoreListener { private static StoreManager instance; private static IStoreController storeController; private static IExtensionProvider extensionProvider; private static IAppleExtensions appleExtension; private static IGooglePlayStoreExtensions googleExtension; public static StoreManager storeManager { get { if (instance == null) instance = new GameObject("Store Manager").AddComponent<StoreManager>(); return instance; } } private void Awake() { if (instance && instance.GetInstanceID() != GetInstanceID()) DestroyImmediate(gameObject); else { instance = this; DontDestroyOnLoad(gameObject); } } private void Start() { if (storeController == null) StartCoroutine(InitializePurchasing()); } private IEnumerator InitializePurchasing() { if (IsInitialized()) yield break; Log("Inicializando la agregacion de los productos a la tienda."); var products = new[] { ("va_preplife_premium_1_month", ProductType.Subscription), ("va_preplife_premium_6_months", ProductType.Subscription), ("va_preplife_premium_1_year", ProductType.Subscription), ("va_preplife_premium_forever", ProductType.NonConsumable) }; var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); foreach (var product in products) { builder.AddProduct(product.Item1, product.Item2); Log($"Product Key: {product.Item1}"); } Log("Termino la agregacion de los productos a la tienda."); UnityPurchasing.Initialize(this, builder); Log("Inicializando la tienda."); } private bool IsInitialized() { return storeController != null && extensionProvider != null; } public void OnInitialized(IStoreController controller, IExtensionProvider extensions) { storeController = controller; extensionProvider = extensions; appleExtension = extensions.GetExtension<IAppleExtensions>(); googleExtension = extensions.GetExtension<IGooglePlayStoreExtensions>(); Log("Ejecutandose el callback OnInitialized."); } public void OnInitializeFailed(InitializationFailureReason error) { Log($"Ejecutandose el callback OnInitializeFailed. Error: {error} "); } public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e) { Log($"Compra del producto {e.purchasedProduct.metadata.localizedTitle} completada."); return PurchaseProcessingResult.Complete; } public void OnPurchaseFailed(Product p, PurchaseFailureReason e) { Log($"Compra del producto {p.metadata.localizedTitle} fallida por {e}."); } public void BuyProduct(string id) { Log($"Inicializando compra del producto con id: {id}"); if (!IsInitialized()) { Log("BuyProduct FAIL. Not initialized."); return; } var product = storeController.products.WithID(id); if (product == null || !product.availableToPurchase) { Log("BuyProduct FAIL. Either is not found or is not available for purchase"); return; } Log($"Inicializando compra del producto {product.metadata.localizedTitle} en la tienda."); storeController.InitiatePurchase(product); } }
That would be expected for any number of reasons. Please provide additional information and the device logs.
@JeffDUnity3D the problem was that the one who was testing the application store was in a country blocked by the United States. Thanks.