Esempio n. 1
0
        public bool VerifyUserNameAndCardNumber(string userName, string cardNumber, SmmProcessorEnum processor)
        {
            SqlConnection con = null;

            try
            {
                if (!string.IsNullOrEmpty(cardNumber))
                {
                    cardNumber = Crypto.SHA256Hash(cardNumber);
                }
                else
                {
                    return(true);
                }
                con = Connect();
                SqlCommand cmd = new SqlCommand("knsp_smmx_verifyUserNameAndCardNumber", con);
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@user_name", userName);
                cmd.Parameters.AddWithValue("@card_hash", cardNumber);
                cmd.Parameters.AddWithValue("@processor", (int)processor);

                cmd.Parameters.Add("@outCode", SqlDbType.Int);
                cmd.Parameters["@outCode"].Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();

                return(GetInt(cmd, "@outCode") == 1);
            }
            catch (Exception ex)
            {
                //Logger.Instance.Error(this, "VerifyUserNameAndCardNumber", ex);
                return(false);
            }
            finally
            {
                Disconnect(con);
            }
        }
Esempio n. 2
0
        protected Dictionary <string, string> GetSMMConfig(string userName, string cardNumber, string customerNo, string targetClientId, bool isIgnoreMultiConfig = false)
        {
            Dictionary <string, string> dic = null;
            IProcessor       processor = null;
            SmmProcessorEnum smmProcessor = SmmProcessorEnum.UNKNOWN;
            int productId = 0, productsetId = 0, count = 0, version = 0; productId = 0;

            if (!string.IsNullOrEmpty(targetClientId) && string.IsNullOrEmpty(customerNo))
            {
                productsetId = SMMXDao.Instance.GetProductSetIdFromSmmxClientId(targetClientId, out version, out productId);
                if (productId != 0)
                {
                    //version = SMMXDao.Instance.GetMobileCodfingVersion(userName, out productsetId, out productId, cardNumber, customerNo);
                    dic          = SMMXDao.Instance.GetServerConfigByProductId(productId, out count, cardNumber, targetClientId);
                    smmProcessor = SmmClientHelper.GetSmmProcessorId(dic);
                    if (smmProcessor != SmmProcessorEnum.FSV)
                    {
                        version = SMMXDao.Instance.GetMobileCodfingVersion(userName, out productsetId, out productId, cardNumber, customerNo);
                        dic     = SMMXDao.Instance.GetServerConfigByProductId(productId, out count, cardNumber, targetClientId);
                    }
                }
                else
                {
                    version = SMMXDao.Instance.GetMobileCodfingVersion(userName, out productsetId, out productId, cardNumber, customerNo);
                    dic     = SMMXDao.Instance.GetServerConfigByProductId(productId, out count, cardNumber, targetClientId);
                }
            }
            else
            {
                version = SMMXDao.Instance.GetMobileCodfingVersion(userName, out productsetId, out productId, cardNumber, customerNo);
                dic     = SMMXDao.Instance.GetServerConfigByProductId(productId, out count, cardNumber, targetClientId);
            }



            if (count > 1 && !isIgnoreMultiConfig)
            {
                if (!string.IsNullOrEmpty(cardNumber) && string.IsNullOrEmpty(customerNo) && smmProcessor == SmmProcessorEnum.FIS)
                {
                    processor  = ProcessorFactory.Instance.GetProcessor(Constants.SMMX);
                    customerNo = processor.GetCustomerNoForFis(cardNumber, dic, Constants.SMMX);
                    if (string.IsNullOrEmpty(customerNo))
                    {
                        //Logger.Instance.Error(this, string.Format("customer number empty in FIS for card: {0}, skip next step", StringUtils.MaskPAN16(cardNumber)));
                        return(new Dictionary <string, string>());
                    }
                    version = SMMXDao.Instance.GetMobileCodfingVersion(userName, out productsetId, out productId, cardNumber, customerNo);
                    if (productId == 0)
                    {
                        //Logger.Instance.Error(this, string.Format(" no product id found for customer number: {0}", customerNo));

                        List <string> cards = processor.GetAllCardsForFis(customerNo, dic, Constants.SMMX);
                        foreach (string s in cards)
                        {
                            version = SMMXDao.Instance.GetMobileCodfingVersion(userName, out productsetId, out productId, s, string.Empty);
                            if (productId == 0)
                            {
                                continue;
                            }
                            else
                            {
                                break;
                            }
                        }
                        if (productId != 0)
                        {
                            dic = SMMXDao.Instance.GetServerConfigByProductId(productId, out count, cardNumber, targetClientId);
                        }
                        else
                        {
                            //Logger.Instance.Error(this, string.Format("no product id found for card:{0}", StringUtils.MaskPAN16(cardNumber)));
                            dic = new Dictionary <string, string>();
                        }
                    }
                    else
                    {
                        dic = SMMXDao.Instance.GetServerConfigByProductId(productId, out count, cardNumber, targetClientId);
                    }
                }
            }
            else
            {
                if (dic == null || dic.Count <= 0)
                {
                    //Logger.Instance.Error(this, string.Format("no product id found for card:{0}", StringUtils.MaskPAN16(cardNumber)));
                }
            }

            return(dic);
        }