using System; using System.Data; using JetBrains.Annotations; using TMPro; using UnityEngine; using UnityEngine.Purchasing; public class MyIAPManager : MonoBehaviour,IStoreListener { private IStoreController controller; private IExtensionProvider extensions; [SerializeField] GameObject 彈跳_pl,彈跳文字_tb; void Start(){ if(Main.Global.已載入現金道具表==false){ Main.Global.已載入現金道具表=true; SQL_CommString.SQL_連線字串_正式_SQL(); if(PlayerPrefs.HasKey("系統語言")){Main.Global.系統語言=PlayerPrefs.GetString("系統語言");} login.刷新現金道具表(); /*SQL_game_sys.SQL_載入現金道具資料表(); DataSet ds1 = new(); SQL_Module.da.Fill(ds1); Main.Global.道具清單_tabel = ds1.Tables[0];*/ } Initialize(); } public void Initialize() { var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance()); foreach (DataRow row in Main.Global.道具清單_tabel.Rows){ builder.AddProduct(row[2].ToString(), ProductType.Consumable); } foreach (DataRow row in Main.Global.菟幣道具清單_tabel.Rows){ builder.AddProduct(row[2].ToString(), ProductType.Consumable); } builder.AddProduct("tubao_noad1", ProductType.Consumable); UnityPurchasing.Initialize (this, builder); } /// <summary> /// Unity IAP 准备好可以进行购买时调用。 /// </summary> public void OnInitialized (IStoreController controller, IExtensionProvider extensions){ this.controller = controller; this.extensions = extensions; } /// <summary> /// Unity IAP 遇到不可恢复的初始化错误时调用。 /// /// 请注意,如果互联网不可用,则不会调用此项;Unity IAP /// 将尝试初始化,直到互联网变为可用。 /// </summary> public void OnInitializeFailed (InitializationFailureReason error){ 彈跳_pl.SetActive(true); 彈跳文字_tb .GetComponent().text= error.ToString(); } /// <summary> /// 购买完成时调用。 /// /// 可能在 OnInitialized() 之后的任何时间调用。 /// </summary> public PurchaseProcessingResult ProcessPurchase (PurchaseEventArgs e){ login.購買完成(e.purchasedProduct.definition.id); return PurchaseProcessingResult.Complete; } /// <summary> /// 购买失败时调用。 /// </summary> public void OnPurchaseFailed (Product i, PurchaseFailureReason p){ 彈跳_pl.SetActive(true); 彈跳文字_tb .GetComponent().text= p.ToString(); } public void OnInitializeFailed(InitializationFailureReason error, string message){ 彈跳_pl.SetActive(true); 彈跳文字_tb .GetComponent().text= error.ToString(); throw new System.NotImplementedException(); } public void OnPurchaseClicked(string productId){ controller.InitiatePurchase(productId); } public SubscriptionInfo GetSubscriptionInfo(string ProductId){ var product = controller.products.WithID(ProductId); if (product != null && product.receipt != null) { var subscriptionManager = new SubscriptionManager(product, null); SubscriptionInfo info = subscriptionManager.getSubscriptionInfo(); return info; }else{ Debug.LogError("找不到产品或收据为空"); return null; } } public DateTime? GetExpireDate(string ProductId){ var product = controller.products.WithID(ProductId); if (product != null && product.receipt != null){ var subscriptionManager = new SubscriptionManager(product, null); SubscriptionInfo info = subscriptionManager.getSubscriptionInfo(); if (info != null){ return info.getExpireDate(); } }else{ Debug.LogError("找不到产品或收据为空"); } return null; } public bool IsSubscribed(string ProductId){ var product = controller.products.WithID(ProductId); if (product != null && product.receipt != null){ var subscriptionManager = new SubscriptionManager(product, null); SubscriptionInfo info = subscriptionManager.getSubscriptionInfo(); if (info != null){ return info.isSubscribed() == Result.True; } }else{ Debug.LogError("找不到产品或收据为空"); } return false; } }