コード例 #1
0
ファイル: GomsTfctv.cs プロジェクト: agentvnod/tfctvoldcode
        /// <summary>
        /// Reload UserWallet via Credit Card
        /// </summary>
        /// <param name="context">DBContext of Model to be used</param>
        /// <param name="userId">Owner of wallet to be reloaded.  Wallet to be used is the one with currency the same as the user's current country.</param>
        /// <param name="transaction">CreditCardReloadTransaction filled up with the ff properties filled up: Amount, Currency, Date</param>
        /// <param name="cardInfo">Credit Card information</param>
        /// <returns></returns>
        public RespCreateWalletLoad ReloadWalletViaCreditCard(IPTV2Entities context, System.Guid userId, CreditCardReloadTransaction transaction, CreditCardInfo cardInfo)
        {
            RespCreateWalletLoad result = null;
            try
            {
                GomsException validationResult = UserValidation(context, userId);
                if (!(validationResult is GomsSuccess))
                {
                    throw validationResult;
                }
                var user = context.Users.Find(userId);

                var wallet = user.UserWallets.FirstOrDefault(w => w.IsActive);
                if (wallet == null)
                {
                    throw new GomsInvalidWalletException();
                }
                // Validate Wallet
                validationResult = WalletValidation(context, user, wallet.WalletId);
                if (!(validationResult is GomsSuccess))
                {
                    throw validationResult;
                }

                result = ReloadWalletViaCreditCard(context, wallet, transaction, cardInfo);
            }
            catch (GomsException e)
            {
                result = new RespCreateWalletLoad { IsSuccess = false, StatusCode = e.StatusCode, StatusMessage = e.StatusMessage };
            }
            return result;
        }
コード例 #2
0
ファイル: GomsTfctv.cs プロジェクト: agentvnod/tfctvoldcode
        /// <summary>
        /// Reload UserWallet via Credit Card
        /// </summary>
        /// <param name="context">DBContext of Model to be used</param>
        /// <param name="wallet">UserWallet to be loaded</param>
        /// <param name="transaction">CreditCardReloadTransaction filled up with the ff properties filled up: Amount, Date</param>
        /// <param name="cardInfo">Credit Card information</param>
        /// <returns></returns>
        public RespCreateWalletLoad ReloadWalletViaCreditCard(IPTV2Entities context, UserWallet wallet, CreditCardReloadTransaction transaction, CreditCardInfo cardInfo)
        {
            RespCreateWalletLoad result = null;

            InitializeServiceClient();

            try
            {
                // validate credit card information
                cardInfo.Validate();
                if (!cardInfo.IsValid)
                {
                    throw new GomsInvalidCreditCardException();
                }

                // validate user
                GomsException validationResult = UserValidation(context, wallet.UserId);
                if (!(validationResult is GomsSuccess))
                {
                    throw validationResult;
                }
                var user = context.Users.Find(wallet.UserId);

                // validate the wallet
                validationResult = WalletValidation(context, user, wallet.WalletId);
                if (!(validationResult is GomsSuccess))
                {
                    throw validationResult;
                }

                // validate transaction
                if (transaction == null)
                {
                    throw new GomsInvalidTransactionException();
                }
                else
                {
                    if ((transaction.Amount <= 0) || (transaction.Date == null))
                        throw new GomsInvalidTransactionException();
                }

                // prepare request
                // set transaction wallet
                user.Transactions.Add(transaction);
                transaction.UserWallet = wallet;
                transaction.Currency = wallet.Currency;

                var req = new ReqCreateWalletLoad
                {
                    UID = ServiceUserId,
                    PWD = ServicePassword,
                    Email = user.EMail,
                    CustomerId = (int)user.GomsCustomerId,
                    ServiceId = (int)user.GomsServiceId,
                    SubsidiaryId = (int)user.GomsSubsidiaryId,
                    WalletId = (int)transaction.UserWallet.GomsWalletId,
                    OrderType = 1,
                    // PhoenixId = transaction.TransactionId,
                    PhoenixId = (int)(DateTime.Now.Ticks - int.MaxValue),
                    LoadAmountLocalCurrency = (double)transaction.Amount,
                    //CurrencyId = (int)context.Currencies.Find(user.Country.CurrencyCode).GomsId
                    CCName = cardInfo.Name,
                    CCNumber = cardInfo.Number,
                    CCSecurityCode = cardInfo.CardSecurityCode,
                    CCExpiry = cardInfo.ExpiryDate,
                    CCPostalCode = cardInfo.PostalCode,
                    CCStreet = cardInfo.StreetAddress
                };

                var paymentMethod = context.GomsPaymentMethods.FirstOrDefault(p => (p.GomsSubsidiaryId == user.GomsSubsidiaryId) && (p.Name == cardInfo.CardTypeString));

                if (paymentMethod == null)
                {
                    throw new GomsCreditCardTypeInvalidException();
                }

                req.PaymentMethod = paymentMethod.PaymentMethodId;

                var log = new GomsLogs() { email = user.EMail, phoenixid = req.PhoenixId };
                try
                {
                    var startTime = DateTime.Now;
                    result = _serviceClient.CreateWalletLoad(req);
                    var endTime = DateTime.Now;
                    var timeDifference = endTime - startTime;

                    if (result.IsSuccess)
                    {
                        transaction.Reference = result.TransactionId.ToString();
                        transaction.GomsTransactionId = result.TransactionId;
                        transaction.GomsTransactionDate = DateTime.Now;
                        transaction.UserWallet.Balance += transaction.Amount;
                        transaction.UserWallet.LastUpdated = DateTime.Now;
                        context.SaveChanges();
                        log.gomstransactionid = result.TransactionId;
                        log.message = String.Format("{0} - {1}", result.IsSuccess, result.StatusMessage);
                        log.transactionid = transaction.TransactionId;
                        log.transactiondate = transaction.GomsTransactionDate.Value.ToString("yyyy-MM-dd hh:mm:ss");
                    }
                }
                catch (Exception e)
                {
                    log.message = e.Message;
                    LogToGigya("glogs", log);
                    throw new GomsServiceCallException(e.Message);
                }
                finally
                {
                    LogToGigya("glogs", log);
                }
            }
            catch (GomsException e)
            {
                result = new RespCreateWalletLoad { IsSuccess = false, StatusCode = e.StatusCode, StatusMessage = e.StatusMessage };
            }
            return (result);
        }
コード例 #3
0
ファイル: GomsTfctv.cs プロジェクト: agentvnod/tfctvoldcode
        public RespCreateWalletLoad ReloadWallet(IPTV2Entities context, System.Guid userId, int transactionId)
        {
            RespCreateWalletLoad result = null;

            InitializeServiceClient();

            try
            {
                // Validate User
                GomsException validationResult = UserValidation(context, userId);
                if (!(validationResult is GomsSuccess))
                {
                    throw validationResult;
                }
                var user = context.Users.Find(userId);

                // Validate Transaction
                validationResult = TransactionValidation(context, transactionId, false);
                if (!(validationResult is GomsSuccess))
                {
                    throw validationResult;
                }
                var reloadTransaction = user.Transactions.OfType<ReloadTransaction>().FirstOrDefault(t => t.TransactionId == transactionId);

                // Validate Wallet
                validationResult = WalletValidation(context, user, reloadTransaction.UserWallet.WalletId);
                if (!(validationResult is GomsSuccess))
                {
                    throw validationResult;
                }

                var req = new ReqCreateWalletLoad
                {
                    UID = ServiceUserId,
                    PWD = ServicePassword,
                    Email = user.EMail,
                    CustomerId = (int)user.GomsCustomerId,
                    ServiceId = (int)user.GomsServiceId,
                    SubsidiaryId = (int)user.GomsSubsidiaryId,
                    WalletId = (int)reloadTransaction.UserWallet.GomsWalletId,
                    OrderType = 1,
                    // PhoenixId = reloadTransaction.TransactionId,
                    // TODO: set transactionId series
                    PhoenixId = (int)(DateTime.Now.Ticks - int.MaxValue),
                    LoadAmountLocalCurrency = (double)reloadTransaction.Amount,
                    CurrencyId = (int)reloadTransaction.UserWallet.WalletCurrency.GomsId,
                    ExchangeRate = (double)Forex.Convert(context, user.Country.CurrencyCode, "USD", 1),
                    CCExpiry = String.Empty,
                    CCNumber = String.Empty,
                    CCSecurityCode = String.Empty
                };

                GomsPaymentMethod paymentMethod = null;

                if (reloadTransaction is PpcReloadTransaction)
                {
                    paymentMethod = context.GomsPaymentMethods.FirstOrDefault(p => (p.GomsSubsidiaryId == user.GomsSubsidiaryId) && (string.Compare(p.Name, "Prepaid Card") == 0));
                    if (paymentMethod != null)
                    {
                        req.PPCSerialNumber = ((PpcReloadTransaction)reloadTransaction).ReloadPpc.SerialNumber;
                        req.PPCPin = ((PpcReloadTransaction)reloadTransaction).ReloadPpc.Pin;

                        // consume prepaid card
                        var resultUsePpc = UsePrepaidCard(context, userId, reloadTransaction);
                        if (resultUsePpc.IsSuccess)
                        {
                            result = new RespCreateWalletLoad
                                    {
                                        IsSuccess = true,
                                        StatusCode = resultUsePpc.StatusCode,
                                        StatusMessage = resultUsePpc.StatusMessage,
                                        TransactionId = resultUsePpc.TransactionId
                                    };
                        }
                        else
                        {
                            throw new GomsException { StatusCode = resultUsePpc.StatusCode, StatusMessage = resultUsePpc.StatusMessage };
                        }
                    }
                    else
                    {
                        throw new GomsPaymentMethodIdInvalidException();
                    }
                }
                else if (reloadTransaction is CreditCardReloadTransaction)
                {
                }
                else if (reloadTransaction is PaypalReloadTransaction)
                {
                    req.PaypalReferenceNumber = reloadTransaction.Reference;
                    paymentMethod = context.GomsPaymentMethods.FirstOrDefault(p => (p.GomsSubsidiaryId == user.GomsSubsidiaryId) && (string.Compare(p.Name, "PayPal") == 0));
                    if (paymentMethod == null)
                    {
                        throw new GomsPaymentMethodIdInvalidException();
                    }

                    req.PaymentMethod = paymentMethod.PaymentMethodId;
                    try
                    {
                        result = _serviceClient.CreateWalletLoad(req);

                        if (result.IsSuccess)
                        {
                            reloadTransaction.GomsTransactionId = result.TransactionId;
                            reloadTransaction.GomsTransactionDate = DateTime.Now;
                            reloadTransaction.GomsRemarks = null;
                            context.SaveChanges();
                        }
                        else
                            throw new Exception(result.StatusMessage);
                    }
                    catch (Exception e)
                    {
                        throw new GomsServiceCallException(e.Message);
                    }
                }
                else if (reloadTransaction is MopayReloadTransaction)
                {
                    req.PaypalReferenceNumber = reloadTransaction.Reference;
                    paymentMethod = context.GomsPaymentMethods.FirstOrDefault(p => (p.GomsSubsidiaryId == user.GomsSubsidiaryId) && (string.Compare(p.Name, "MoPay") == 0));
                    if (paymentMethod == null)
                    {
                        throw new GomsPaymentMethodIdInvalidException();
                    }

                    req.PaymentMethod = paymentMethod.PaymentMethodId;
                    try
                    {
                        result = _serviceClient.CreateWalletLoad(req);

                        if (result.IsSuccess)
                        {
                            reloadTransaction.GomsTransactionId = result.TransactionId;
                            reloadTransaction.GomsTransactionDate = DateTime.Now;
                            reloadTransaction.GomsRemarks = null;
                            context.SaveChanges();
                        }
                        else
                            throw new Exception(result.StatusMessage);
                    }
                    catch (Exception e)
                    {
                        throw new GomsServiceCallException(e.Message);
                    }
                }
                else
                {
                    throw new GomsInvalidTransactionTypeException();
                }
            }
            catch (GomsException e)
            {
                result = new RespCreateWalletLoad { IsSuccess = false, StatusCode = e.StatusCode, StatusMessage = e.StatusMessage };
            }
            return (result);
        }