示例#1
0
        /// <summary>
        /// Exchanges from currecny passed as parameter to Main currency
        /// </summary>
        /// <param name="currencyCode"></param>
        /// <returns></returns>
        public Money ExchangeFrom(string currencyCode)
        {
            Money output = Money.Zero;

            if (AppSettings.Payments.CurrencyMode == CurrencyMode.Fiat)
            {
                output = CurrencyExchangeHelper.FromCalculate(this, currencyCode);
            }
            else if (AppSettings.Payments.CurrencyMode == CurrencyMode.Cryptocurrency)
            {
                var cryptocurrencyExchange = CryptocurrencyFactory.Get(AppSettings.Site.CurrencyCode);
                output = new Money(cryptocurrencyExchange.ConvertFromMoney(this, currencyCode));
            }

            return(output);
        }
示例#2
0
        /// <summary>
        /// Print Money class object, ex. $1,334.30042 $12.003
        /// </summary>
        public override string ToString()
        {
            string output = CurrencyExchangeHelper.TryCalculate(amount).ToStringGlobal();

            if (AppSettings.Site.CommasInNumbersEnabled)
            {
                String formatCommand = "{0:n" + CoreSettings.GetMaxDecimalPlaces(CurrencyType.Fiat) + "}";
                output = String.Format(new System.Globalization.CultureInfo("en-US"), formatCommand, Decimal.Parse(output));
            }

            //Show zeros?
            if (!AppSettings.Site.ShowRemainingZeros)
            {
                output = CutEndingZeros(output);
            }

            output = AddCurrencySign(output);

            return(output);
        }
示例#3
0
        public override void ProcessRequest()
        {
            var request = context.Request.QueryString;

            //Set variables
            TransactionID = HttpUtility.UrlDecode(request["proxy_trans_id"]);

            Amount   = HttpUtility.UrlDecode(request["trans_amount"]);
            Merchant = HttpUtility.UrlDecode(request["location_id"]);

            PhoneNumber = HttpUtility.UrlDecode(request["phone"]);
            Code        = HttpUtility.UrlDecode(request["trans_id"]);

            try
            {
                //Check IPs
                CheckIP("192.241.213.216");

                //Check duplicated transactions
                CheckIfNotDoneYet(TransactionID);

                //Check if we are the merchant
                CheckMerchant(MPesaSapamaAccountDetails.Exists(Convert.ToInt32(Merchant)));

                //Amount from KES to USD
                Money money          = Money.Parse(Amount); //in KES
                var   ConvertedMoney = CurrencyExchangeHelper.FromCalculate(money, "KES");

                //All OK, let's proceed
                MPesaSapamaCode.Create(ConvertedMoney, Code, PhoneNumber);

                context.Response.Write("OK");
            }
            catch (Exception ex)
            {
                ErrorLogger.Log(ex);
                context.Response.Write("ERROR");
            }
        }
示例#4
0
        private string buildTransactionRequestString(TransactionRequest request, ref string queryString)
        {
            string transactionID = HashingManager.GenerateMD5(DateTime.Now + request.MemberName + AppSettings.Offerwalls.UniversalHandlerPassword);

            var arrayToHash = new string[] { accountDetails.APIKey, accountDetails.APISecret, "json", accountDetails.LocationId.ToString(), "live" };
            var DataToHash  = String.Join(".", arrayToHash);
            var user        = new Member(request.MemberName);

            string hash = HashingManager.SHA256(DataToHash).ToLower();

            //We need to convert money from our currency to KES
            var moneyToBeSent = CurrencyExchangeHelper.Calculate(request.Payment, "KES");

            queryString = String.Format("format=json&api_key={0}&hash={1}&location_id={2}&mode=live",
                                        accountDetails.APIKey, hash, accountDetails.LocationId.ToString());

            return(new NVPStringBuilder()
                   .Append("format", "json")
                   .Append("api_key", accountDetails.APIKey)
                   .Append("hash", hash)
                   .Append("location_id", accountDetails.LocationId)
                   .Append("mode", "live")
                   .Append("beneficiaries[0][gateway]", "mpesa")
                   .Append("beneficiaries[0][phone]", request.PayeeId)
                   .Append("beneficiaries[0][trans_reference]", transactionID)
                   .Append("beneficiaries[0][description]", request.Note)
                   .Append("beneficiaries[0][first_name]", user.FirstName)
                   .Append("beneficiaries[0][last_name]", user.SecondName)
                   .Append("beneficiaries[0][amount]", moneyToBeSent.ToShortClearString())
                   .Append("beneficiaries[0][callback_url]", AppSettings.Site.Url + "Handlers/Payment/MPesaSapamaX.ashx")
                   .Append("beneficiaries[0][callback_http_method]", "GET")
                   .Append("beneficiaries[0][message]", HttpUtility.UrlEncode(AppSettings.Payments.TransactionNote))
                   .Append("beneficiaries[0][short_code]", accountDetails.Username)
                   .Append("beneficiaries[0][currency]", "KES")
                   .Build());
        }
示例#5
0
 public Money FromMulticurrency()
 {
     return(CurrencyExchangeHelper.TryFromCalculate(this));
 }