void OnLoadPayouts(string err, Hashtable data) { if (!string.IsNullOrEmpty(err)) { EB.Debug.LogError("获取商品失败:" + err); _config.Listener.OnOffersFetched(); return; } _externalId = EB.Dot.String("externalTrkid", data, _externalId); int end = _externalId.LastIndexOf(':'); _externalId = _externalId.Substring(0, end + 1);//去掉平台数据,后面用到的自己去拼,处理多平台问题 _sale = null; _bonusItems.Clear(); _payouts.Clear(); _enumerated = false; var currentSet = EB.Dot.Find <object>("data.payoutSets.0", data); if (currentSet != null) { var sale = EB.Dot.Object("sale", currentSet, null); if (sale != null) { _sale = new PayoutSale(sale); } var bonus = EB.Dot.Array("redeemers", currentSet, new ArrayList()); foreach (object candidate in bonus) { Hashtable item = candidate as Hashtable; if (item != null) { RedeemerItem redeemerItem = new RedeemerItem(item); if (redeemerItem.IsValid == true) { _bonusItems.Add(redeemerItem); } } } var payouts = Dot.Array("payouts", currentSet, new ArrayList()); EB.Debug.Log("【商城】加载商品成功,数量:{0}", payouts.Count); foreach (Hashtable payout in payouts) { var item = new EB.IAP.Item(_externalId, payout); _payouts.Add(item); } } _iapManager.Enumerate(_payouts); _config.Listener.OnOffersFetchSuceeded(); }
public override void Connect() { State = SubSystemState.Connecting; isRequest = false; _lastFetchTime = 0; _sale = null; _bonusItems.Clear(); _payouts.Clear(); _verify.Clear(); _VerifyAgain.Clear(); if (_iapManager == null) { var iapConfig = new IAP.Config(); iapConfig.OnEnumerate += OnEnumerate; iapConfig.Verify += OnVerify; iapConfig.VerifyAgain += OnVerifyAgain; iapConfig.OnPurchaseFailed += OnPurchaseFailed; iapConfig.OnPurchaseCanceled += OnPurchaseCanceled; iapConfig.PublicKey = _config.IAPPublicKey; iapConfig.OnPurchaseNoResult += OnPurchaseNoResult; #if UNITY_ANDROID iapConfig.ReceiptPersistance = _config.ReceiptPersistance; #endif _iapManager = new IAP.Manager(iapConfig); } var wallet = Dot.Object("wallet", Hub.DataStore.LoginDataStore.LoginData, null); if (wallet != null) { OnFetch(null, wallet); } else { Fetch(); } _fetchWait = Dot.Integer("offer_delay", Hub.DataStore.LoginDataStore.LoginData, _fetchWait); FetchOffersDelayed(); RequestPayout(); }