Esempio n. 1
0
        public TopUpResponse TopUp(TopUpRequest topUpRequest)
        {
            Log(Logger.LogMessageType.Info, "->   -------------------- Comienza la ejecución del método Stock.TopUp", Logger.LoggingLevelType.Medium);
            TopUpRequestInternal internalObject = new TopUpRequestInternal()
            {
                Amount       = topUpRequest.Request.Amount,
                DeviceType   = topUpRequest.Request.DeviceType,
                HostTransRef = topUpRequest.Request.HostTransRef,
                MNO          = topUpRequest.Request.MNO,
                MNODefinedID = topUpRequest.Request.MNODefinedID,
                Recipient    = topUpRequest.Request.Recipient,
                SessionID    = topUpRequest.Request.SessionID
            };
            TopUpResponseInternal internalResponse = TopUpProvider.TopUpInternal(internalObject);
            TopUpResponse         response         = new TopUpResponse();
            TopUpResponseBody     responseBody     = new TopUpResponseBody()
            {
                ResponseCode    = internalResponse.ResponseCode,
                ResponseMessage = internalResponse.ResponseMessage,
                TransactionID   = internalResponse.TransactionID,
                HostTransRef    = internalResponse.HostTransRef,
                Fee             = internalResponse.Fee,
                BalanceStock    = internalResponse.BalanceStock
            };

            response.Response = responseBody;
            Log(Logger.LogMessageType.Info, "->   -------------------- Termina la ejecución del método Stock.TopUp", Logger.LoggingLevelType.Medium);
            return(response);
        }
Esempio n. 2
0
        public TopUpResponse TopUp(TopUpRequest request)
        {
            return(WrapResponse <TopUpResponse, TopUpResponseBody>(
                       new ServiceExecutionDelegator <TopUpResponseBody, TopUpRequestBody>().ResolveRequest(request.Request, (request.Request.Platform ?? ConfigurationManager.AppSettings["DefaultPlatform"]), ApiServiceName.TopUp)));

            // return WrapResponse<TopUpResponse, TopUpResponseBody>(
            //  new ServiceExecutionDelegator<TopUpResponseBody, TopUpRequestBody>().ResolveRequestService(request.Request, (request.Request.Platform ?? ConfigurationManager.AppSettings["DefaultPlatform"]), ApiServiceName.TopUp));
        }
Esempio n. 3
0
        public async Task <Card> TopUp(TopUpRequest topUpRequest)
        {
            var card = await _unitOfWork.GetRepository <Card>().FindAsync(x => x.CardNumber == topUpRequest.CardNumber && x.Status == 1);

            if (card == null)
            {
                throw new Exception("Thẻ không tồn tại hoặc bị từ chối");
            }

            card.Money      += topUpRequest.Money;
            card.ExpiredDate = DateTime.Now.AddYears(1);

            _unitOfWork.GetRepository <Card>().Update(card);
            await _unitOfWork.CommitAsync();

            return(card);
        }
        /// <summary>
        /// Extension method to simplify adding money to a savings goal.
        /// </summary>
        /// <param name="http"></param>
        /// <param name="goalId"></param>
        /// <param name="minorUnits"></param>
        /// <returns></returns>
        public static Task <HttpResponseMessage> SavingsGoalsAddMoney(this HttpClient http, string goalId, long minorUnits)
        {
            Guard.AgainstNullArgument(nameof(http), http);
            Guard.AgainstNullOrWhitespaceArgument(nameof(goalId), goalId);

            if (minorUnits < 0)
            {
                return(null);
            }

            var req = new TopUpRequest
            {
                Amount = new CurrencyAndAmount
                {
                    Currency   = "GBP",
                    MinorUnits = minorUnits
                }
            };

            return(http.StarlingPutAsync($"v1/savings-goals/{goalId}/add-money/{Guid.NewGuid()}", req));
        }
Esempio n. 5
0
        public async Task <IActionResult> Add(string cardId, [FromBody] TopUpRequest topUpRequest)
        {
            if (!_cachingPin.IsPinCached(cardId))
            {
                return(Unauthorized());
            }
            try
            {
                var result = await _cardRepository.UpdateBalance(cardId, topUpRequest.TopUpAmount);

                return(Ok(new TopUpResponse(topUpRequest.TopUpAmount, result.Balance)));
            }

            catch (DbException e)
            {
                if (e.Message.Contains(ErrorMessage).Equals(true))
                {
                    return(StatusCode(StatusCodes.Status400BadRequest, e));
                }

                return(StatusCode(StatusCodes.Status500InternalServerError, "Database Failure"));
            }
        }
Esempio n. 6
0
        public async Task <IHttpActionResult> PostTopUpRequest(TopUpRequest topUpRequest)
        {
            //return NotFound();
            Guid          fiId          = Guid.Parse(fiIdString);
            TopUpResponse topUpResponse = new TopUpResponse();

            Helpers.Transfer_Light transfer = new Helpers.Transfer_Light();
            switch (topUpRequest.CarrierID)
            {
            case "Digicel":
                string userId       = User.Identity.GetUserId();
                var    userAccounts = db.AssociatedAccounts.Where(p => p.UserID.Equals(userId));
                var    fromAcct     = userAccounts.Where(p => p.AssociatedAccountID == topUpRequest.AssociatedAccountID).FirstOrDefault();
                var    minorAcct    = userAccounts.Where(p => p.Description2.Equals("EPAY DIGICEL TOPUP")).FirstOrDefault();
                if (fromAcct == null)
                {
                    topUpResponse.Message    = "Invalid source account specified.";
                    topUpResponse.Successful = false;
                }
                //if(minorAcct != null)
                //{
                ////###################################################
                //// Set maximum TopUps to a single number
                ////###################################################
                //int totalTopUps = db.Transfers.Where(p => p.BillerAccountNumber.Equals(topUpRequest.MobileNumber)).Count();
                //if (totalTopUps > 2)
                //{
                //    topUpResponse.Message = "Test credit has been depleted.";
                //    topUpResponse.Successful = false;
                //}
                //else
                //{
                //    topUpRequest.Amount = 5;
                //    //return Ok(DigicelTopUp.TopUp(topUpRequest.MobileNumber, topUpRequest.Amount));
                //    DigicelTopUpResponse digicelTopUpResponse = DigicelTopUp.TopUp(topUpRequest.Territory, topUpRequest.MobileNumber, topUpRequest.Amount);
                //    topUpResponse.Successful = digicelTopUpResponse.Code == "0";
                //    topUpResponse.Message = digicelTopUpResponse.Message;
                //    topUpResponse.TransactionID = digicelTopUpResponse.TransactionID;
                //}
                ////##############################################

                //################################################
                //      LIVE CODE
                //################################################
                //DigicelTopUpResponse digicelTopUpResponse = DigicelTopUp.TopUp(topUpRequest.Territory, topUpRequest.MobileNumber, topUpRequest.Amount);
                //topUpResponse.Successful = digicelTopUpResponse.Code == "0";
                //topUpResponse.Message = digicelTopUpResponse.Message;
                //topUpResponse.TransactionID = digicelTopUpResponse.TransactionID;
                //################################################

                //################################################
                //      TEST CODE
                //################################################
                DigicelTopUpResponse digicelTopUpResponse = new DigicelTopUpResponse
                {
                    Code          = "0",
                    Message       = "TopUp to " + topUpRequest.MobileNumber + " Successful",
                    TransactionID = Guid.NewGuid().ToString()
                };
                topUpResponse.Successful    = digicelTopUpResponse.Code == "0";
                topUpResponse.Message       = digicelTopUpResponse.Message;
                topUpResponse.TransactionID = digicelTopUpResponse.TransactionID;
                //################################################
                //}
                //else
                //{
                //    topUpResponse.Message = "Your account has not been provisioned for this transaction.";
                //    topUpResponse.Successful = false;
                //}

                if (!topUpResponse.Successful)
                {
                    return(Ok(topUpResponse.Message));
                }


                //################################################
                //      LIVE CODE
                //################################################
                //string encryptedPin = db.PINs.Where(p => p.FinancialInstitutionID == fiId && p.UserID == userId).Select(p => p.Pin).First();
                //string decryptedPin = Helpers.StringCipher.Decrypt(encryptedPin, userId);

                //transfer.fromAcct = fromAcct.AccountNumber;
                //transfer.amount = (double)topUpRequest.Amount;
                //transfer.toAccountNumber = minorAcct.AccountNumber;
                //transfer.memid = fromAcct.MemberID;
                //transfer.pin = decryptedPin;

                //string transferResponse = await COB.TransferFunds(transfer);
                //string[] transferResponseArray = transferResponse.Split(new string[] { "ITC" }, StringSplitOptions.RemoveEmptyEntries)[0].Split(new char[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);
                //if (transferResponseArray[1][0] != '1')
                //{
                //    //topUpResponse.Successful = false;
                //    topUpResponse.Message = transferResponseArray[1];
                //    //return Ok(topUpResponse);
                //}
                //################################################


                break;

            case "Ozone":
                BillPaymentResponse response = await MiddleWare.Ozone.OzoneBillPaymentProxy.PayBill(new BillPaymentRequest
                {
                    Amount = topUpRequest.Amount,
                    AssociatedAccountID = topUpRequest.AssociatedAccountID,
                    BillerAccountNumber = topUpRequest.MobileNumber,
                    BillerID            = "869cd85f-c155-429e-8ded-b92f41b61ec1"
                });

                topUpResponse.Successful    = response.Successful;
                topUpResponse.Message       = response.Message;
                topUpResponse.TransactionID = response.TransactionID;
                break;

            default:
                topUpResponse.Successful = false;
                topUpResponse.Message    = "Invalid Mobile Provider";
                break;
            }

            AssociatedAccount account = db.AssociatedAccounts.Where(p => p.AssociatedAccountID == topUpRequest.AssociatedAccountID).First();
            Guid billerId             = db.Billers.Where(p => p.Name.Equals(topUpRequest.CarrierID)).Select(p => p.BillerID).First();

            db.Transfers.Add(new E_Pay_Web_API.Models.Transfer
            {
                SourceTransactionID = DateTime.Now.ToString("yyyyMMdd-mmss"),
                SourceAccountNumber = account.AccountNumber,
                SourceAccountID     = account.AssociatedAccountID,
                SourceInstitutionID = account.FinancialInstitutionID,
                MinorAccountNumber  = transfer.toAccountNumber,
                BillerID            = billerId,
                //BillerID = Guid.Parse(topUpRequest.CarrierID),
                BillerAccountNumber = topUpRequest.MobileNumber,
                BillerTransactionID = topUpResponse.TransactionID,
                TransferAmount      = topUpRequest.Amount,
                TransferDescription = topUpRequest.CarrierID + " - TopUp",
                Status            = topUpResponse.Successful ? "Successful" : "Error",
                StatusDescription = topUpResponse.Message,
                Created           = DateTime.Now
            });
            db.SaveChanges();

            if (topUpResponse.Successful)
            {
                MailSender.SendMessage(
                    User.Identity.GetUserName(),
                    "E-Pay Top Up Confirmation and Receipt of Mobile Top Up Sent",
                    "Congratulations your order has been completed successfully.\r\n\r\n"
                    + "1 successful\r\n\r\n"
                    + "Order ID: " + topUpResponse.TransactionID + "\r\n"
                    + "Product: Mobile Top Up\r\n"
                    + "Number: " + topUpRequest.MobileNumber + "\r\n"
                    + "Country: Barbados\r\n"
                    + "Top-up Amount: BBD $" + topUpRequest.Amount.ToString() + "\r\n"
                    + "Receive Amount: BBD $" + topUpRequest.Amount.ToString() + "\r\n\r\n\r\n"
                    + "Date & Time: " + DateTime.Now.ToString() + "\r\n\r\n"
                    + "Amount Paid:  BBD $" + topUpRequest.Amount.ToString() + "\r\n\r\n"
                    + "From Account: " + account.Description + ": " + account.Description3 + " - " + account.AccountNumber + "\r\n\r\n"
                    + "If you have any queries, please contact our customer care team.\r\n"
                    + "Thanks,\r\n"
                    + "The E-Pay Team"
                    );
            }
            return(Ok(topUpResponse));
            //return NotFound();
        }
        public async Task <IActionResult> TopUp(TopUpRequest topUpRequest)
        {
            var response = await _cardService.TopUp(topUpRequest);

            return(Ok(new ApiOkResponse(response)));
        }
Esempio n. 8
0
        public Task <(HttpStatusCode status, CreateOrUpdateSavingsGoalResponse response)> AddMoney(Guid goalId, TopUpRequest topup)
        {
            var transferId = Guid.NewGuid();

            return(this.RequestBuilder
                   .WithUrl($"{this.BaseUrl}v1/savings-goals/{goalId}/add-money/{transferId}")
                   .WithMethod(HttpMethod.Put)
                   .WithHeader("Authorization", $"Bearer {this.AccessToken}")
                   .WithBody(topup)
                   .SendAsync <CreateOrUpdateSavingsGoalResponse>());
        }