Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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();
        }