Exemple #1
0
        public static DebitResponse DoDebit(DebitRequest req)
        {
            var bankRef = Utils.RandomString(50);

            //do prop validation
            // waiting for bank debit service  to do debit

            Repository.SaveDebitTransactionLog(new DataAccess.DebitTransactionLog()
            {
                Amount                   = req.amount,
                ChannelId                = 1,
                DateCreated              = DateTime.Now,
                DestinationAccount       = req.destinationAccount,
                DestinationAccountName   = req.destinationAccountName,
                DestinationBankCode      = req.destinationBankCode,
                InterswitchTransactionId = req.transactionId,
                SourceAccount            = req.sourceAccount,
                SourceAccountName        = req.sourceAccountName,
                BankRequestReference     = bankRef
            });
            return(new DTO.DebitResponse()
            {
                amount = req.amount, requestReference = bankRef, responseCode = "00", responseMessage = "Succesful", transactionDate = DateTime.Now, transactionId = req.transactionId
            });
        }
Exemple #2
0
 public static DebitRequest CreateDebitRequest(string pPath, string pAPIKey, DebitRequest pDebitRequest)
 {
     try {
         return(ApiRestServices.CreateObject <DebitRequest>(pPath + "/debit-request", pAPIKey, "debit_request", pDebitRequest));
     }
     catch (ApplicationException ae)
     {
         throw new ApplicationException(ae.Message);
     }
 }
        public static BaseResponse <BaseWalletResponseData> ProcessBetDebit(DebitRequest request)
        {
            dynamic requestData = new ExpandoObject();

            requestData.Token         = request.SessionToken;
            requestData.UID           = request.UserUID;
            requestData.TransactionID = request.TransactionID;
            requestData.EventId       = request.EventID;
            requestData.EventName     = request.EventName;
            requestData.DebitAmount   = request.Amount;
            requestData.betDetail     = request.BetDetail;

            dynamic serviceData = new ExpandoObject();

            CallService(ConfigurationHelper.GetConfigurationItem("DebitServiceEndpoint"), requestData, out serviceData);

            BaseWalletResponseData data       = new BaseWalletResponseData();
            JavaScriptSerializer   serializer = new JavaScriptSerializer();

            data.TransactionID = serviceData.TransactionID;
            data.Balance       = (decimal)serviceData.Balance;
            data.errorCode     = (WalletErrorCode)Enum.ToObject(typeof(WalletErrorCode), serviceData.ErrorCode);
            data.ErrorMessage  = serviceData.ErrorDescription;
            data.SessionToken  = serviceData.Token;
            DateTime outputDate = DateTime.Now;

            if (DateTime.TryParse(serviceData.Date.ToString(), out outputDate))
            {
                data.Date = outputDate;
            }
            else
            {
                if (serviceData.Date.GetType().Equals(typeof(System.DateTime)))
                {
                    data.Date = serviceData.Date;
                }
                else
                {
                    data.Date = DateTime.UtcNow;
                }
            }


            if (data.errorCode.Equals(WalletErrorCode.Success))
            {
                return(new BaseResponse <BaseWalletResponseData>(data, ResponseStatus.OK));
            }
            else
            {
                return(new BaseResponse <BaseWalletResponseData>(data, ResponseStatus.Fail, string.Format("Service error: {0} - {1}", data.errorCode, data.ErrorMessage)));
            }
        }
Exemple #4
0
        private bool IsSignatureValid(string signature, DebitRequest req)
        {
            var isValid = false;

            try
            {
                Utils.LogInfo("IsSignatureValid : " + signature);
                if (Utils.Base64StringDecoder(signature).Trim().Equals(Utils.Sha512Hash(string.Format("{0}{1}{2}", req.amount, req.transactionId, Utils.InterswitchRequestSecretKey), true)))
                {
                    isValid = true;
                }
            }
            catch (Exception e) { Utils.LogError(e, ""); }
            return(isValid);
        }
Exemple #5
0
        public IHttpActionResult DoDebit(DebitRequest req)
        {
            string bearerAccessToken = string.Empty;
            string signature         = string.Empty;

            System.Net.Http.Headers.HttpRequestHeaders headers = this.Request.Headers;
            if (headers.Contains("Authorization"))
            {
                bearerAccessToken = headers.GetValues("Authorization").First();
                if (!bearerAccessToken.Trim().StartsWith("Bearer "))
                {
                    return(Unauthorized());
                }
                ;
                if (!Utils.IsAccessTokenValid(bearerAccessToken.Replace("Bearer ", "")))
                {
                    return(Unauthorized());
                }
                ;
            }
            else
            {
                return(Unauthorized());
            }
            if (headers.Contains("signature"))
            {
                signature = headers.GetValues("signature").First();
                if (!IsSignatureValid(signature, req))
                {
                    return(Unauthorized());
                }
                ;
            }
            else
            {
                return(Unauthorized());
            }
            var response = NameEnquiryLogic.DoDebit(req);

            return(Ok(response));
        }
        public CommonApiResponse Hold(DebitRequest request, [FromServices] SessionManagerService sessionManager, [FromServices] OperationManagerService operationManager)
        {
            var merchant = (Merchant)HttpContext.Items["Merchant"];

            var session = sessionManager.Create(merchant, new SessionCreateRequest
            {
                Amount           = request.Amount,
                Currency         = request.Currency,
                OrderDescription = request.OrderDescription,
                OrderId          = request.OrderId,
                SessionType      = SessionType.TwoStep
            });

            var paymentData = new PaymentData(request.Pan, request.Year, request.Month, request.Cvv);

            var result = operationManager.Hold(merchant, session, paymentData);

            return(new DebitResponse {
                Status = result.OperationStatus, Auth = result.AdditionalAuth
            });
        }
 public static DebitRequest CreateDebitRequest(string pPath, string pAPIKey, DebitRequest pDebitRequest)
 {
     return(ApiRestServices.CreateObject <DebitRequest>(pPath + "/debit-request", pAPIKey, "debit_request", pDebitRequest));
 }