public static PaymentInfoItemList ReloadPaymentInfo(string distributorID,
                                                            string locale,
                                                            HttpSessionState aSession)
        {
            var payments = new PaymentInfoItemList();

            try
            {
                string cacheKey = getCacheKey(distributorID, locale);
                var    session  =
                    ((null != aSession) ? aSession : HttpContext.Current.Session);

                if (session == null)
                {
                    return(payments);
                }

                var current = (session)[cacheKey] as PaymentInfoItemList;
                List <PaymentInformation> tempPayments = null;
                if (null != current && current.Count > 0)
                {
                    tempPayments = (from t in current where t.IsTemporary select t).ToList();
                }

                payments = loadPaymentInfoFromService(distributorID, locale);

                if (null != current && null != payments)
                {
                    foreach (PaymentInformation pi in current)
                    {
                        var c = payments.Find(p => p.ID == pi.ID); // (from p in payments where p.ID == pi.ID select p);
                        if (c != null)
                        {
                            c.AuthorizationFailures = pi.AuthorizationFailures;
                        }
                    }
                }

                if (null != tempPayments && tempPayments.Count > 0)
                {
                    payments.AddRange(tempPayments);
                }

                if (payments != null)
                {
                    try
                    {
                        savePaymentInfoToCache(cacheKey, payments);
                    }
                    catch (Exception ex)
                    {
                        ExceptionPolicy.HandleException(ex, ProviderPolicies.SYSTEM_EXCEPTION);
                    }
                }
                else
                {
                    session.Remove(cacheKey);
                }
            }
            catch (Exception ex)
            {
                ExceptionPolicy.HandleException(ex, ProviderPolicies.SYSTEM_EXCEPTION);
            }
            return(payments);
        }