protected override void OnServiceUI() { using (new SA_WindowBlockWithSpace(new GUIContent("Your license key"))) { EditorGUILayout.HelpBox("RSA public key will be used for app licensing. & in-app billing purchases", MessageType.Info); EditorGUILayout.LabelField("Base64-encoded RSA public key"); AN_Settings.Instance.RSAPublicKey = EditorGUILayout.TextArea(AN_Settings.Instance.RSAPublicKey, SA_PluginSettingsWindowStyles.TextArea, GUILayout.Height(95)); AN_Settings.Instance.RSAPublicKey.Trim(); } using (new SA_WindowBlockWithSpace(new GUIContent("Licensing "))) { EditorGUILayout.HelpBox("Licensing allows you to prevent unauthorized distribution of your App.", MessageType.Info); AN_Settings.Instance.Licensing = SA_EditorGUILayout.ToggleFiled("API Status", AN_Settings.Instance.Licensing, SA_StyledToggle.ToggleType.EnabledDisabled); } using (new SA_WindowBlockWithSpace(new GUIContent("In-App Products List"))) { if (AN_Settings.Instance.InAppProducts.Count == 0) { EditorGUILayout.HelpBox("Use this menu to specify in-app products available for your App.", MessageType.Info); } SA_EditorGUILayout.ReorderablList(AN_Settings.Instance.InAppProducts, GetProductDisplayName, DrawProductContent, () => { var product = new AN_Product("your.product.sku", AN_ProductType.inapp); product.Title = "New Product"; AN_Settings.Instance.InAppProducts.Add(product); }); } }
private void DrawProductContent(AN_Product product) { product.ProductId = SA_EditorGUILayout.TextField(ProductIdDLabel, product.ProductId); product.Title = SA_EditorGUILayout.TextField(DisplayNameLabel, product.Title); product.Type = (AN_ProductType)SA_EditorGUILayout.EnumPopup(ProductType, product.Type); product.IsConsumable = SA_EditorGUILayout.ToggleFiled(ConsumableLabel, product.IsConsumable, SA_StyledToggle.ToggleType.YesNo); product.Price = SA_EditorGUILayout.TextField(PriceLabel, product.Price); EditorGUILayout.LabelField(DescriptionLabel); using (new SA_GuiBeginHorizontal()) { product.Description = EditorGUILayout.TextArea(product.Description, GUILayout.Height(60), GUILayout.MinWidth(190)); EditorGUILayout.Space(); product.Icon = (Texture2D)EditorGUILayout.ObjectField("", product.Icon, typeof(Texture2D), false, GUILayout.Width(75)); } }
public override void Test() { AN_Product product = new AN_Product("android.test.purchased", AN_ProductType.inapp); AN_Billing.Purchase(product, (result) => { AN_Logger.Log("Purchase result.IsSucceeded: " + result.IsSucceeded); if (result.IsSucceeded) { var purchase = result.Purchase; PrintPurchaseInfo(purchase); } AN_Logger.Log("Now print it from invent"); foreach (var purchase in AN_Billing.Inventory.Purchases) { PrintPurchaseInfo(purchase); } SetAPIResult(result); }); }
public void SetUp() { var settings = AN_Settings.Instance; settings.RSAPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAonqY2kxgUKeAioN2tnMB2jtS1tBVwm0RHvsrFkDewHfzMGyBZvHsg9UN47H1MO6omXtNvsVuOnACV02MWIY16w7TPnttYTY7e2pULARafq7GwPuh9F7gLDdGluIoi/dJGjhaCTzvY6TpslI/FegJ/tDXVsNZh7urAxO1pWP4vrs412lANAjN8O6KF2dxF0VSThejyjzhyL0QWVtXtB6mJ9Ulsw16+0ndY4/Y4gL0BYSiJ4Qa+y7Ron6IXEGOnimixvGWasQQSKZHtEOLrh593ssp4a9PKMLQHWP7Pu2AYDmzhfR/ZkR1ZupKattjsviPnz5fTpsZ3oggSK+7IDBWQwIDAQAB"; settings.InAppProducts.Clear(); var p0 = new AN_Product(UM_InAppService.TEST_ITEM_PURCHASED, AN_ProductType.inapp); p0.Title = "Android Purchased"; p0.IsConsumable = false; settings.InAppProducts.Add(p0); var p1 = new AN_Product(UM_InAppService.TEST_ITEM_UNAVAILABLE, AN_ProductType.inapp); p1.Title = "Android Unavailable"; p1.IsConsumable = false; settings.InAppProducts.Add(p1); m_Observer = new TestTransactionObserver(); UM_InAppService.Client.SetTransactionObserver(m_Observer); }
private string GetProductDisplayName(AN_Product product) { return(product.Title + " " + product.Price + "$"); }
public static void ApplyExampleConfig() { PlayerSettings.productName = "Android Native"; PlayerSettings.SetApplicationIdentifier(BuildTargetGroup.Android, "com.stansassets.androidnative.pro"); PlayerSettings.Android.keystorePass = "******"; PlayerSettings.Android.keyaliasName = "android native pro"; PlayerSettings.Android.keyaliasPass = "******"; var settings = AN_Settings.Instance; settings.LogLevel.Info = true; settings.LogLevel.Warning = true; settings.LogLevel.Error = true; settings.WTFLogging = true; //Making environment for Vending Test settings.Vending = true; settings.Licensing = true; settings.RSAPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAonqY2kxgUKeAioN2tnMB2jtS1tBVwm0RHvsrFkDewHfzMGyBZvHsg9UN47H1MO6omXtNvsVuOnACV02MWIY16w7TPnttYTY7e2pULARafq7GwPuh9F7gLDdGluIoi/dJGjhaCTzvY6TpslI/FegJ/tDXVsNZh7urAxO1pWP4vrs412lANAjN8O6KF2dxF0VSThejyjzhyL0QWVtXtB6mJ9Ulsw16+0ndY4/Y4gL0BYSiJ4Qa+y7Ron6IXEGOnimixvGWasQQSKZHtEOLrh593ssp4a9PKMLQHWP7Pu2AYDmzhfR/ZkR1ZupKattjsviPnz5fTpsZ3oggSK+7IDBWQwIDAQAB"; settings.InAppProducts.Clear(); var p0 = new AN_Product("android.test.purchased", AN_ProductType.inapp); p0.Title = "Android Purchased"; p0.IsConsumable = false; settings.InAppProducts.Add(p0); var p1 = new AN_Product("example.product.1", AN_ProductType.inapp); p1.Title = "Example 1"; settings.InAppProducts.Add(p1); var p2 = new AN_Product("example.product.2", AN_ProductType.inapp); p2.Title = "Example 2"; settings.InAppProducts.Add(p2); var p3 = new AN_Product("android.test.item_unavailable", AN_ProductType.inapp); p3.Title = "Android Unavailable"; p3.IsConsumable = false; settings.InAppProducts.Add(p3); //Application settings.LocalNotifications = true; settings.SkipPermissionsDialog = true; //Contacts settings.Contacts = true; //Social settings.Social = true; //CameraAndGallery settings.CameraAndGallery = true; //Google Play settings.GooglePlay = true; settings.GooglePlayGamesAPI = true; AN_GoolgePlayRersources.OverrideGamesIds(GAMES_IDS); }
#pragma warning restore 649 void Start() { m_checkBillingAvalibility.onClick.AddListener(() => { }); m_consumeButton.onClick.AddListener(() => { AN_Billing.Consume(AN_Billing.Inventory.Purchases[0], (SA_Result result) => { AN_Logger.Log("Consume result.IsSucceeded: " + result.IsSucceeded); }); }); m_purchaseButton.onClick.AddListener(() => { AN_Product product = new AN_Product("android.test.purchased", AN_ProductType.inapp); AN_Billing.Purchase(product, (result) => { AN_Logger.Log("Unity Purchase result.IsSucceeded: " + result.IsSucceeded); if (result.IsSucceeded) { var purchase = result.Purchase; AN_Logger.Log("purchase.OrderId: " + purchase.OrderId); AN_Logger.Log("purchase.ProductId: " + purchase.ProductId); AN_Logger.Log("purchase.PackageName: " + purchase.PackageName); AN_Logger.Log("purchase.PurchaseState: " + purchase.PurchaseState); AN_Logger.Log("purchase.PurchaseTime: " + purchase.PurchaseTime); AN_Logger.Log("purchase.Signature: " + purchase.Signature); AN_Logger.Log("purchase.Token: " + purchase.Token); AN_Logger.Log("purchase.Type: " + purchase.Type); AN_Logger.Log("purchase.DeveloperPayload: " + purchase.DeveloperPayload); AN_Logger.Log("purchase.AutoRenewing: " + purchase.AutoRenewing); AN_Logger.Log("purchase.OriginalJson: " + purchase.OriginalJson); AN_Logger.Log("----------------------------------------------------"); } else { AN_Logger.Log("Unity Purchase failed: " + result.Error.FullMessage); } }); }); m_connectButton.onClick.AddListener(() => { AN_Billing.Connect((result) => { AN_Logger.Log("Connect result.IsSucceeded: " + result.IsSucceeded); AN_Logger.Log("Connect result.IsInAppsAPIAvalible: " + result.IsInAppsAPIAvalible); AN_Logger.Log("Connect result.IsSubsAPIAvalible: " + result.IsSubsAPIAvalible); if (result.IsSucceeded) { AN_Logger.Log("AN_Billing.Inventory.Purchases.Count: " + AN_Billing.Inventory.Purchases.Count); AN_Logger.Log("AN_Billing.Inventory.Products.Count: " + AN_Billing.Inventory.Products.Count); //Let's print all purchases info foreach (AN_Purchase purchase in AN_Billing.Inventory.Purchases) { AN_Logger.Log("purchase.OrderId: " + purchase.OrderId); AN_Logger.Log("purchase.ProductId: " + purchase.ProductId); AN_Logger.Log("purchase.PackageName: " + purchase.PackageName); AN_Logger.Log("purchase.PurchaseState: " + purchase.PurchaseState); AN_Logger.Log("purchase.PurchaseTime: " + purchase.PurchaseTime); AN_Logger.Log("purchase.Signature: " + purchase.Signature); AN_Logger.Log("purchase.Token: " + purchase.Token); AN_Logger.Log("purchase.Type: " + purchase.Type); AN_Logger.Log("purchase.DeveloperPayload: " + purchase.DeveloperPayload); AN_Logger.Log("purchase.AutoRenewing: " + purchase.AutoRenewing); AN_Logger.Log("purchase.OriginalJson: " + purchase.OriginalJson); AN_Logger.Log("----------------------------------------------------"); } //And products info as well foreach (AN_Product product in AN_Billing.Inventory.Products) { AN_Logger.Log("product.ProductId: " + product.ProductId); AN_Logger.Log("product.Type: " + product.Type); AN_Logger.Log("product.Price: " + product.Price); AN_Logger.Log("product.Title: " + product.Title); AN_Logger.Log("product.Description: " + product.Description); AN_Logger.Log("product.PriceAmountMicros: " + product.PriceAmountMicros); AN_Logger.Log("product.PriceCurrencyCode: " + product.PriceCurrencyCode); AN_Logger.Log("product.SubscriptionPeriod: " + product.SubscriptionPeriod); AN_Logger.Log("product.FreeTrialPeriod: " + product.FreeTrialPeriod); AN_Logger.Log("product.SubscriptionPeriod: " + product.SubscriptionPeriod); AN_Logger.Log("product.FreeTrialPeriod: " + product.FreeTrialPeriod); AN_Logger.Log("product.IntroductoryPrice: " + product.IntroductoryPrice); AN_Logger.Log("product.IntroductoryPriceAmountMicros: " + product.IntroductoryPriceAmountMicros); AN_Logger.Log("product.IntroductoryPricePeriod: " + product.IntroductoryPricePeriod); AN_Logger.Log("product.IntroductoryPriceCycles: " + product.IntroductoryPriceCycles); AN_Logger.Log("product.IsValid: " + product.IsValid); AN_Logger.Log("product.OriginalJson: " + product.OriginalJson); AN_Logger.Log("----------------------------------------------------"); } } else { AN_Logger.Log("Billing service connection failed: " + result.Error.FullMessage); } }); }); m_checkLicenseButton.onClick.AddListener(() => { AN_LicenseChecker.CheckAccess((result) => { switch (result.PolicyCode) { case AN_Policy.LICENSED: AN_Logger.Log("AN_LicenseChecker: LICENSED"); break; case AN_Policy.NOT_LICENSED: AN_Logger.Log("AN_LicenseChecker: NOT_LICENSED"); break; case AN_Policy.RETRY: AN_Logger.Log("AN_LicenseChecker: RETRY"); break; } if (result.IsFailed) { Debug.Log("AN_LicenseChecker error: " + result.ErrorCode.ToString()); } }); }); }