public static string GetPaymentButtons(BaseButtonGenerator bg) { var BtcCryptocurrency = CryptocurrencyFactory.Get(CryptocurrencyType.BTC); int buttonsPresent = 0; StringBuilder sb = new StringBuilder(); foreach (var t in PaymentAccountDetails.PaymentAccountDetailsClasses) { var instance = Activator.CreateInstance(t); var gateway = (PaymentAccountDetails)PaymentAccountDetails.RunStaticMethod(t, "GetFirstIncomeGateway"); if (gateway != null && gateway.AccountType != "MPesaAgent") //MPesaAgent do not support payment buttons { bg.Strategy = gateway.GetStrategy(); sb.Append(bg.Generate()); buttonsPresent++; } } if (BtcCryptocurrency.DepositEnabled && CryptocurrencyApiFactory.Get(BtcCryptocurrency.DepositApiProcessor).AllowToUsePaymentButtons()) { sb.Append(GetBtcButton(bg)); buttonsPresent++; } if (buttonsPresent == 0) { return(U6011.NOACTIVEPAYMENTPROCESSORS); } return(sb.ToString()); }
//For MPesa protected void SetProcessorValues() { AccountInformationDiv.Visible = false; string selectedProcessor = RadioFrom.SelectedValue; if (selectedProcessor == "MPesa") { AccountInformationDiv.Visible = true; Account.Enabled = true; ChangeAccountButton.Visible = false; AddNewAccount.Visible = false; var userAccountAddress = ""; PaymentProcessor targetprocessor = PaymentAccountDetails.GetFromStringType(selectedProcessor); userAccountAddress = user.GetPaymentAddress(targetprocessor); if (!string.IsNullOrWhiteSpace(userAccountAddress)) { Account.Visible = true; Account.Enabled = false; Account.Text = userAccountAddress; ChangeAccountButton.Text = U6007.CHANGE; ChangeAccountButton.Visible = true; } else { Account.Visible = false; AddNewAccount.Text = L1.ADDNEW; AddNewAccount.Visible = true; } } }
public static void logPayout(string message, TransactionRequest request, TransactionResponse response, string paymentProcessor) { PaymentProcessor processor = PaymentAccountDetails.GetFromStringType(paymentProcessor); ErrorLogger.Log(String.Format(@"{0}: PayoutRequest ID: {1} Raw response: {2}", message, request.PayeeId, response.RawResponse), ErrorLoggerHelper.GetTypeFromProcessor(processor), true); }
public static Money GetProperLimitValue(Member User, PaymentAccountDetails PP) { if (PP.OverrideGlobalLimit) { return(PP.CashoutLimit); } return(GetGlobalLimitValue(User)); }
public static void AddPaymentAccount(PaymentAccountDetails account) { Statistics stat = new Statistics(); stat.Data1 = StatisticsManager.GetPaymentAccountName(account); stat.data2 = "0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000#0.000"; stat.Type = StatisticsType.AvailableFunds; stat.NumberOfDays = 14; stat.Save(); }
public static void UpdatePaymentAccount(string oldUserName, PaymentAccountDetails account) { if (oldUserName == account.Username) { return; } var id = TableHelper.SelectScalar(string.Format("SELECT Id FROM [Statistics] WHERE Data1 LIKE '{0}:{1}'", account.AccountType, oldUserName)); Statistics stat = new Statistics((int)id); stat.Data1 = StatisticsManager.GetPaymentAccountName(account); stat.Save(); }
private void CheckBaseLimits() { if (IsCustomPayoutProcessor) { CheckMaxPayout(PaymentProcessor.CustomPayoutProcessor, User, AmountToPayout, CustomPayoutProcessorId); } else { CheckMaxPayout(PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor), User, AmountToPayout); } PaymentAccountDetails TheGateway = null; if (!IsCustomPayoutProcessor) { TheGateway = PaymentAccountDetails.GetFirstGateway(TargetPaymentProcessor); } if (TheGateway == null && !IsCustomPayoutProcessor) { throw new MsgException("Sorry, no payment gateway available at the moment. Please try again soon."); } Money minPayout = Money.Zero; if (IsCustomPayoutProcessor) { minPayout = PayoutLimit.GetProperLimitValue(User, new CustomPayoutProcessor(CustomPayoutProcessorId)); } else { minPayout = PayoutLimit.GetProperLimitValue(User, TheGateway); } if (AmountToPayout < minPayout) { throw new MsgException(U2502.AMOUNTHIGHER + ": " + minPayout.ToString()); } //Cashout limits for automatic if (TheGateway != null && AppSettings.Payments.IsInstantPayout) { TheLimit = TheGateway.ManualCashoutAfterExceeding; if (AmountToPayout > TheGateway.ManualCashoutAfterExceeding) { IsAutomaticButAvoveTheLimit = true; } } }
public static string GetPaymentButton(BaseButtonGenerator bg, Type t) { var sb = new StringBuilder(); var instance = Activator.CreateInstance(t); var gateway = (PaymentAccountDetails)PaymentAccountDetails.RunStaticMethod(t, "GetFirstIncomeGateway"); if (gateway != null && gateway.AccountType != "MPesaAgent") //MPesaAgent do not support payment buttons { bg.Strategy = gateway.GetStrategy(); sb.Append(bg.Generate()); } return(string.IsNullOrEmpty(sb.ToString()) ? U6011.NOACTIVEPAYMENTPROCESSORS : sb.ToString()); }
protected override ApiResultMessage HandleRequest(object args) { string token = ((JObject)args)["token"].ToString(); int pin = Convert.ToInt32(((JObject)args)["pin"]); decimal amount = Convert.ToDecimal(((JObject)args)["amount"]); string processorValue = ((JObject)args)["processor"].ToString(); int userId = ApiAccessToken.ValidateAndGetUserId(token); Member User = new Member(userId); User.ValidatePIN(pin.ToString()); Money Amount = new Money(amount); Amount = Money.Parse(Amount.ToShortClearString()); var userAccountAddress = String.Empty; try { var CustomProcessor = new CustomPayoutProcessor(int.Parse(processorValue)); userAccountAddress = User.GetPaymentAddress(CustomProcessor.Id); } catch (Exception) { var selectedProcessor = processorValue; PaymentProcessor targetprocessor = PaymentAccountDetails.GetFromStringType(selectedProcessor); userAccountAddress = User.GetPaymentAddress(targetprocessor); } //Lets process to cashout PayoutManager Manager = new PayoutManager(User, Amount, processorValue, CustomPayoutProcessor.IsCustomPayoutProcessor(processorValue), CustomPayoutProcessor.GetCustomPayoutProcessorId(processorValue), userAccountAddress); string successMessage = Manager.TryMakePayout(); return(new ApiResultMessage { success = true, message = successMessage, data = null }); }
public static void TryMarkAccountActivationFeeAsPaid(Member user, Money amount, string from, string transId, string cryptoCurrencyInfo) { bool Successful = false; try { String Message = String.Format(" {0} money for account activation. ", amount); if (amount < AppSettings.Registration.AccountActivationFee) { Message += "Amount is lower than expected! Account not activated."; History.AddEntry(Member.CurrentName, HistoryType.Transfer, Message); PoolDistributionManager.AddProfit(ProfitSource.AccountActivationFee, amount); throw new Exception(String.Format("Account activation fee is lower than expected! ({0})", amount)); } AccountActivationFeeCrediter Crediter = (AccountActivationFeeCrediter)CrediterFactory.Acquire(user, CreditType.AccountActivationFee); var moneyLeftForPools = Crediter.CreditReferer(amount); //Pools PoolDistributionManager.AddProfit(ProfitSource.AccountActivationFee, moneyLeftForPools); user.IsAccountActivationFeePaid = true; user.Save(); Message += "Account activated."; History.AddEntry(Member.CurrentName, HistoryType.Transfer, Message); Successful = true; } catch (Exception ex) { ErrorLogger.Log(ex); } PaymentProcessor PP = PaymentAccountDetails.GetFromStringType(from); CompletedPaymentLog.Create(PP, "Activation Fee", transId, false, user.Name, amount, Money.Zero, Successful, cryptoCurrencyInfo); }
public string TryMakePayout() { ValidatePayout(); string paymentAddress = PaymentAccountDetails.GetPaymentProcessorUserAccount(user, paymentProcessor); var request = new TransactionRequest(user.Name, paymentAddress, amountToPayout); Transaction transaction = TransactionFactory.CreateTransaction(request, paymentProcessor); var response = transaction.Commit(); if (!response.IsSuccess) { if (request != null && response != null) { PayoutManager.logPayout("Commission Balance Payout unsuccessful", request, response, paymentProcessor); } throw new MsgException(response.Note); } PayoutRequest req = new PayoutRequest(); req.Amount = amountToPayout; req.IsPaid = true; req.RequestDate = DateTime.Now; req.Username = user.Name; req.IsRequest = false; req.BalanceType = BalanceType.CommissionBalance; req.PaymentAddress = paymentAddress; req.PaymentProcessor = paymentProcessor; req.Save(); user.SubtractFromCommissionBalance(amountToPayout, "Payout"); user.SaveBalances(); History.AddCashout(user.Name, amountToPayout); PayoutManager.logPayout("Commission Balance Payout successful", request, response, paymentProcessor); PaymentProof.Add(user, req); return(U3501.AUTOMATICCASHOUTSUCC + ": " + response.Note); }
/// <summary> /// FROM AP /// </summary> /// <param name="request"></param> /// <param name="gateway"></param> /// <param name="transaction"></param> /// <returns></returns> public static bool MakePayout(PayoutRequest request, PaymentAccountDetails gateway, ref Transaction transaction) { transaction.Commit(); if (transaction.Response.IsSuccess) { request.IsPaid = true; request.IsRequest = false; request.Save(); Member User = new Member(request.Username); //Add payment proof PaymentProof.Add(User, request); //Add statistics var stats = new Statistics(StatisticsType.Cashflow); stats.AddToData2(request.Amount); stats.Save(); //Add history History.AddCashout(request.Username, request.Amount); if (gateway is PayPalAccountDetails) { // Log because payment may have response status SuccessWithWarning // More on this: https://developer.paypal.com/webapps/developer/docs/classic/api/NVPAPIOverview/ logPayout("Payout successful", request, transaction.Response, request.PaymentProcessor); } return(true); } else { logPayout("Payout unsuccessful", request, transaction.Response, request.PaymentProcessor); return(false); } }
/// <summary> /// FROM AP /// </summary> /// <param name="request"></param> public static void RejectRequest(PayoutRequest request) { Member User = new Member(request.Username); try { PaymentProcessor processor = PaymentAccountDetails.GetFromStringType(request.PaymentProcessor); PaymentProportionsManager.UndoMemberPaidOut(request.Amount, processor, User); } catch { //processor = custom processor } request.IsPaid = true; request.PaymentProcessor = "REJECTED"; request.Save(); User.MoneyCashout -= request.Amount; User.AddToMainBalance(request.Amount, "Payout rejected"); User.Save(); History.AddCashoutRejection(User.Name, request.Amount.ToString()); }
protected void Page_Load(object sender, EventArgs e) { if (!AppSettings.Registration.IsAccountActivationFeeEnabled || User.IsAccountActivationFeePaid) { AccessManager.RedirectIfDisabled(false); } UpgradeViaPaymentProcessor.Text = U6005.PAYVIAPAYMENTPROCESSOR; PriceLiteral.Text = AppSettings.Registration.AccountActivationFee.ToString(); if (!Page.IsPostBack) { if (!PaymentAccountDetails.AreIncomingPaymentProcessorsAvailable()) { UpgradeViaPaymentProcessorPlaceHolder.Visible = false; NoPaymentProcessorsPlaceHolder.Visible = true; } if (AppSettings.Payments.CashBalanceEnabled && AppSettings.Registration.AccountActivationFeeViaCashBalanceEnabled && AppSettings.Registration.AccountActivationFeeVia == AccountActivationFeeVia.UserPanel) { PayViaCashBalancePlaceHolder.Visible = true; PayViaCashBalanceButton.Text = String.Format("{0} ({1})", U6005.PAYVIACASHBALANCE, User.CashBalance); PayViaCashBalanceButton.Enabled = User.CashBalance >= AppSettings.Registration.AccountActivationFee ? true : false; String linkToDeposit = String.Format("<a href=\"user/transfer.aspx\">{0}</a>.", U6011.HERE); RedirectToDepositLiteral.Text = String.Format("<p style=\"text-align:center\"> <br /> {0} <br />{1} {2}</p> ", U6011.YOUCANPAYVIACASHBALANCE, U6011.YOUCANDEPOSITCASH, linkToDeposit); RedirectToDepositLiteral.Visible = !PayViaCashBalanceButton.Enabled; } } if (TitanFeatures.IsRofriqueWorkMines) { UpgradeViaPaymentProcessorPlaceHolder.Visible = false; } }
public static void DeletePaymentAccount(PaymentAccountDetails account) { TableHelper.DeleteRows <Statistics>(TableHelper.MakeDictionary("Data1", StatisticsManager.GetPaymentAccountName(account))); }
protected void btnTransfer_Click(object sender, EventArgs e) { ErrorMessagePanel.Visible = false; ErrorMessage.Text = ""; MessageUpdatePanel.Update(); string amount = TransferFromTextBox.Text.Trim().Replace(",", "."); Money Amount; try { Amount = Money.Parse(amount).FromMulticurrency(); //Direct BTC transfer. BTC -> BTC Wallet if (RequestedBTCCryptocurrencyTransfer) { Amount = new CryptocurrencyMoney(CryptocurrencyType.BTC, Decimal.Parse(amount)); } Member User = Member.Current; var HtmlResponse = false; var ResultMessage = TransferHelper.TryInvokeTransfer(RadioFrom.SelectedValue, RadioTo.SelectedValue, Amount, User, ref HtmlResponse); if (ResultMessage == U3501.TRANSFEROK) { Response.Redirect("../status.aspx?type=transferok"); } else { //It was a payment processor transfer btnTransfer.Visible = false; //MPesa Sapama? if (RadioFrom.SelectedValue == "MPesaAgent") { Response.Redirect("~/user/deposit.aspx?mpesa=" + Amount.ToClearString()); } PaymentAmountLabel.Text = L1.AMOUNT + ": <b>" + Amount.ToString() + "</b>"; if (RadioFrom.SelectedValue == BtcCryptocurrency.DepositApiProcessor.ToString()) { PaymentFeeLabel.Visible = false; PaymentAmountWithFeeLabel.Visible = false; } else { var gateway = PaymentAccountDetails.GetFirstGateway(RadioFrom.SelectedValue, true); if (gateway == null) { throw new MsgException("No specified gateway installed."); } Amount = gateway.CalculateAmountWithFee(Amount); PaymentFeeLabel.Text = U3500.CASHOUT_FEES + ": <b>" + gateway.StaticFee.ToString() + "</b> + <b>" + gateway.PercentFee + "%</b>"; PaymentAmountWithFeeLabel.Text = L1.AMOUNT + " + " + U3500.CASHOUT_FEES + " = <b>" + Amount.ToString() + "</b>"; PaymentFeeLabel.Visible = true; PaymentAmountWithFeeLabel.Visible = true; } PaymentAmountLabel.Visible = true; transferInputRow.Visible = false; dropdownlistsRow.Visible = false; PaymentButtons.Text = ResultMessage; } } catch (MsgException ex) { ShowErrorMessage(ex.Message); } catch (Exception ex) { ErrorLogger.Log(ex); ShowErrorMessage(ex.Message); } }
protected void Page_Load(object sender, EventArgs e) { AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.MoneyTransferEnabled); user = Member.Current; AppSettings.Reload(); BtcCryptocurrency = CryptocurrencyFactory.Get <BitcoinCryptocurrency>(); EthCryptocurrency = CryptocurrencyFactory.Get <EthereumCryptocurrency>(); XrpCryptocurrency = CryptocurrencyFactory.Get <RippleCryptocurrency>(); TokenCryptocurrency = CryptocurrencyFactory.Get <RippleCryptocurrency>(); DepositButton.Visible = AppSettings.Representatives.RepresentativesHelpDepositEnabled; if (!Page.IsPostBack) { if (BtcCryptocurrency.DepositEnabled) { BTCButton.Visible = !CryptocurrencyApiFactory.GetDepositApi(BtcCryptocurrency).AllowToUsePaymentButtons(); if (TitanFeatures.IsRofriqueWorkMines) { BTCButton.Text = "BTC Deposits"; } else { BTCButton.Text = "BTC"; } } if (TitanFeatures.IsFlotrading) { BalanceButton.CssClass = ""; BTCButton.CssClass = "ViewSelected"; MenuMultiView.ActiveViewIndex = 1; } if (TitanFeatures.IsTrafficThunder) { UserBalancesPlaceHolder.Visible = false; } AppSettings.Reload(); LangAdder.Add(DepositButton, U6010.DEPOSITVIAREPRESENTATIVE); LangAdder.Add(btnTransfer, L1.TRANSFER); LangAdder.Add(DepositViaRepresentativeButton, U6010.SENDTRANSFERMESSAGE); LangAdder.Add(MPesaConfirmButton, L1.CONFIRM); LangAdder.Add(BTCAmountRequiredFieldValidator, U2502.INVALIDMONEYFORMAT); LangAdder.Add(CalculatePointsValueButton, U6007.CALCULATE); //MPesa? if (Request.QueryString["mpesa"] != null) { StandardTransferPlaceHolder.Visible = false; MPesaTransferPlaceHolder2.Visible = true; var gateway = PaymentAccountDetails.GetFirstIncomeGateway <MPesaSapamaAccountDetails>(); MPesaAmount.Text = String.Format(U6005.TODEPOSITVIAMPESA, gateway.Username, gateway.Username, Money.Parse(Request.QueryString["mpesa"]).ToString()); } //Pre-selected tab if (Request.QueryString["button"] != null) { var button = (Button)MenuButtonPlaceHolder.FindControl("Button" + Request.QueryString["button"]); MenuButton_Click(button, null); } RadioFrom.Items.AddRange(GenerateHTMLButtons.DepositBalanceFromItems); if (TitanFeatures.IsRofriqueWorkMines && !CryptocurrencyApiFactory.GetDepositApi(BtcCryptocurrency).AllowToUsePaymentButtons()) { RadioFrom.Items.Add(new ListItem("", "BTC")); } BTCTo.Items.AddRange(GenerateHTMLButtons.BTCToItems); if (BtcCryptocurrency.DepositEnabled) { BTCValueLabel.Text = ClassicBTCValueLabel.Text = string.Format("<p class='alert alert-info'>{0}: <b>{1}</b></p>", U5003.ESTIMATEDBTCVALUE, BtcCryptocurrency.GetValue().ToString()); BTCValueLabel.Visible = ClassicBTCValueLabel.Visible = AppSettings.Site.CurrencyCode != "BTC"; //We don't want to show 1B = 1B BTCPointsFrom.Items.AddRange(GenerateHTMLButtons.BTCFromItems); BTCPointsFrom.SelectedIndex = 0; if (BTCPointsFrom.SelectedValue == "Wallet") { btnDepositBTC.Visible = true; if (BtcCryptocurrency.DepositTarget == DepositTargetBalance.PurchaseBalance) { BTCTo.SelectedValue = "AdBalance"; } else if (BtcCryptocurrency.DepositTarget == DepositTargetBalance.CashBalance) { BTCTo.SelectedValue = "CashBalance"; } else if (BtcCryptocurrency.DepositTarget == DepositTargetBalance.Wallet) { BTCTo.SelectedValue = "BTCWallet"; } } BTCButtonPanel.Visible = CryptocurrencyApiFactory.GetDepositApi(BtcCryptocurrency).AllowToUsePaymentButtons(); ClassicBTCPanel.Visible = !CryptocurrencyApiFactory.GetDepositApi(BtcCryptocurrency).AllowToUsePaymentButtons(); } if (((AppSettings.Payments.CommissionToMainBalanceEnabled && !TitanFeatures.UserCommissionToMainBalanceEnabled) || (TitanFeatures.UserCommissionToMainBalanceEnabled && user.CommissionToMainBalanceEnabled) || TitanFeatures.IsRevolca) && user.CheckAccessCustomizeTradeOwnSystem) { RadioTo.Items.Add(new ListItem("", "Main balance")); } if (!AppSettings.Payments.CashBalanceEnabled) { ListItem cb = RadioTo.Items.FindByValue("Cash balance"); if (cb != null) { RadioTo.Items.Remove(cb); } } if (!AppSettings.Payments.MarketplaceBalanceEnabled) { ListItem cb = RadioTo.Items.FindByValue("Marketplace balance"); if (cb != null) { RadioTo.Items.Remove(cb); } } SetRadioToValues(); SetProcessorValues(); SetupSpecialTransfersProperties(); if (RadioFrom.Items.Count == 0 || RadioTo.Items.Count == 0) { //No transfers available transferInputRow.Visible = false; TransferSameCommissionToMainLiteral.Visible = true; TransferSameCommissionToMainLiteral.Text = U5006.NOTRANSFEROPTIONS; transfertable.Visible = false; } if (TitanFeatures.IsTradeOwnSystem) { //Checking condition to display appropriate message if (!user.CheckAccessCustomizeTradeOwnSystem && user.CommissionToMainBalanceRequiredViewsMessageInt > 0) { CommissionTransferInfoDiv.Visible = true; CommissionTransferInfo.Text = String.Format(U6010.COMMISSIONBALANCETRANSFERINFO, user.CommissionToMainBalanceRequiredViewsMessageInt, AppSettings.RevShare.AdPack.AdPackName); } else if (!user.CheckAccessCustomizeTradeOwnSystem && user.CommissionToMainBalanceRequiredViewsMessageInt == 0) { CommissionTransferInfoDiv.Visible = true; CommissionTransferInfo.Text = String.Format(U6010.COMMISSIONBALANCETRANSFERNOACTIVEADPACKINFO, AppSettings.RevShare.AdPack.AdPackName); } else { CommissionTransferInfoDiv.Visible = false; } } if (BtcCryptocurrency.DepositEnabled && BtcCryptocurrency.DepositMinimum > 0) { AdditionalInfoPlaceHolder.Visible = true; AdditionalInfoLiteral.Text = String.Format(U6012.WARNINGMINBTCDEPOSIT, CryptocurrencyMoney.Parse(BtcCryptocurrency.DepositMinimum.ToString(), CryptocurrencyType.BTC).ToString()); } } SetRadioItemsValues(RadioFrom); SetRadioItemsValues(RadioTo); SetRadioItemsValues(BTCTo); RemoveDuplicatesFromList(); foreach (ListItem item in BTCPointsFrom.Items) { item.Attributes.Add("data-content", "<img src='../Images/OneSite/TransferMoney/GoCoin.png' /> BTC"); } if (!TitanFeatures.IsRofriqueWorkMines) { LangAdder.Add(BalanceButton, U5009.BALANCE); } else { LangAdder.Add(BalanceButton, "Cash Deposits"); } LangAdder.Add(btnDepositBTC, U4200.DEPOSIT); LangAdder.Add(classicbtcDepositBTC, U4200.DEPOSIT); }
public bool TryMakeInvestmentLevelsPayout() { // payoutRequest --> change property to false (it isn't request) var req = new PayoutRequest { Amount = AmountToPayout, IsPaid = true, RequestDate = DateTime.Now, Username = User.Name, IsRequest = false, BalanceType = BalanceType.InvestmentLevels }; //User payment address string paymentAddress = PaymentAccountDetails.GetPaymentProcessorUserAccount(User, TargetPaymentProcessor); if (String.IsNullOrEmpty(paymentAddress)) { throw new MsgException(U5004.YOUMUST); } request = new TransactionRequest(User.Name, paymentAddress, AmountToPayout); Transaction transaction = TransactionFactory.CreateTransaction(request, TargetPaymentProcessor); response = transaction.Commit(); req.PaymentAddress = paymentAddress; req.PaymentProcessor = TargetPaymentProcessor; if (!response.IsSuccess) { if (request != null && response != null) { logPayout("Payout unsuccessful", request, response, req.PaymentProcessor); } return(false); } req.Save(); History.AddInvestmentLevelCashout(User.Name, AmountToPayout); //Add to daily cashout AppSettings.Payments.GlobalCashoutsToday += AmountToPayout; AppSettings.Payments.Save(); //Add outcome to stats (Data2); var stats = new Statistics(StatisticsType.Cashflow); stats.AddToData2(AmountToPayout); stats.Save(); //Add paymentproof PaymentProof.Add(User.Id, AmountToPayout, PaymentType.Instant, PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor)); // Log because payment may have response status SuccessWithWarning // More on this: https://developer.paypal.com/webapps/developer/docs/classic/api/NVPAPIOverview/ logPayout("Payout successful", request, response, req.PaymentProcessor); ErrorLogger.Log(string.Format("{0}: {1}", U3501.AUTOMATICCASHOUTSUCC, response.Note)); return(true); }
protected void SetProcessorValues() { Account.Enabled = true; ChangeAccountButton.Visible = false; AddNewAccount.Visible = false; var userAccountAddress = ""; Money GlobalLimit = PayoutLimit.GetGlobalLimitValue(User); var errorNote = ""; try { //Custom Processor var CustomProcessor = new CustomPayoutProcessor(int.Parse(RadioFrom.SelectedValue)); userAccountAddress = User.GetPaymentAddress(CustomProcessor.Id); Account.Text = userAccountAddress; //Limits string limit = (CustomProcessor.OverrideGlobalLimit ? CustomProcessor.CashoutLimit : GlobalLimit).ToShortString(); Money maxPayout = PayoutManager.GetMaxPossiblePayout(PaymentProcessor.CustomPayoutProcessor, User, out errorNote); if (maxPayout > User.MainBalance) { maxPayout = User.MainBalance; } MinLimitLabel.Text = limit; MaxLimitLabel.Text = maxPayout.ToShortString(); InfoLabel.Text = CustomProcessor.Description; FeesLabel.Text = CustomProcessor.FeesToString(); } catch (Exception) { //Automatic processor var selectedProcessor = RadioFrom.SelectedValue; if (!String.IsNullOrEmpty(selectedProcessor)) { PaymentProcessor targetprocessor = PaymentAccountDetails.GetFromStringType(selectedProcessor); userAccountAddress = User.GetPaymentAddress(targetprocessor); var gateway = PaymentAccountDetails.GetFirstGateway(selectedProcessor); //Limits string limit = (gateway.OverrideGlobalLimit ? gateway.CashoutLimit : GlobalLimit).ToShortString(); Money maxPayout = PayoutManager.GetMaxPossiblePayout(PaymentAccountDetails.GetFromStringType(gateway.AccountType), User, out errorNote); if (maxPayout > User.MainBalance) { maxPayout = User.MainBalance; } MinLimitLabel.Text = limit; MaxLimitLabel.Text = maxPayout.ToShortString(); FeesLabel.Text = NumberUtils.FormatPercents(gateway.WithdrawalFeePercent.ToString()); } } if (!string.IsNullOrWhiteSpace(userAccountAddress)) { Account.Visible = true; Account.Enabled = false; Account.Text = userAccountAddress; ChangeAccountButton.Text = U6007.CHANGE; ChangeAccountButton.Visible = true; } else { Account.Visible = false; AddNewAccount.Text = L1.ADDNEW; AddNewAccount.Visible = true; } }
protected void BuyViaPaymentProcessorButton_Click(object sender, EventArgs e) { try { var selectedPlan = new InvestmentPlatformPlan(int.Parse(PlansDropDownList.SelectedValue)); var targetPrice = selectedPlan.Price; if (AppSettings.InvestmentPlatform.LevelsEnabled) { InvestmentLevelsManager.CanUserDepositOnLevel(selectedPlan, User); } if (selectedPlan.MaxPrice > Money.Zero) { if (AppSettings.InvestmentPlatform.InvestmentPlatformPlansPolicy == PlansPolicy.OneUpgradedPlan) { throw new MsgException(U6012.CANTUPGRADERANGEPLAN); } targetPrice = Money.Parse(RangePriceTextBox.Text); if (!selectedPlan.CheckPlanPrice(targetPrice)) { throw new MsgException(U6012.TYPECORRECTPRICE); } } var bg = new BuyInvestmentPlanButtonGenerator(User, selectedPlan, targetPrice); var buttonsText = string.Empty; if (CurrentMode == InvestmentPlatformMode.Levels) { if (selectedPlan.PaymentProcessor == PaymentProcessor.Null) { throw new MsgException(U6013.NOPAYMENTPROCESSORSCONNECTEDWITHLEVEL); } /* TODO - Add options to pay with cryptocurrency(?) * if(selectedPlan.PaymentProcessor == PaymentProcessor.Coinbase || selectedPlan.PaymentProcessor == PaymentProcessor.CoinPayments) * buttonsText = GenerateHTMLButtons.GetPaymentButton(bg, CryptocurrencyType); */ var type = PaymentAccountDetails.GetGatewayType(selectedPlan.PaymentProcessor.ToString()); buttonsText = GenerateHTMLButtons.GetPaymentButton(bg, type); } else { buttonsText = GenerateHTMLButtons.GetPaymentButtons(bg); } PaymentButtons.Text = buttonsText; PaymentProcessorsButtonPlaceHolder.Visible = true; BuyControlsPlaceHolder.Visible = false; } catch (Exception ex) { ErrorPanel.Visible = true; ErrorTextLiteral.Text = ex.Message; if (ex is MsgException == false) { ErrorLogger.Log(ex); } } }
private string TryMakeInstantPayout(Money fee) { // payoutRequest --> change property to false (it isn't request) PayoutRequest req = new PayoutRequest(); req.Amount = AmountToPayout - fee; req.IsPaid = true; req.RequestDate = DateTime.Now; req.Username = User.Name; req.IsRequest = false; req.BalanceType = BalanceType.MainBalance; //Check if daily limit is not reached if (AppSettings.Payments.GlobalCashoutsToday + AmountToPayout - fee > AppSettings.Payments.GlobalCashoutLimitPerDay) { throw new MsgException(L1.TOOMANYCASHOUTS + " " + AppSettings.Payments.GlobalCashoutLimitPerDay.ToString()); } //User payment address string paymentAddress = PaymentAccountDetails.GetPaymentProcessorUserAccount(User, TargetPaymentProcessor); if (String.IsNullOrEmpty(paymentAddress)) { throw new MsgException(U5004.YOUMUST); } request = new TransactionRequest(User.Name, paymentAddress, AmountToPayout - fee); Transaction transaction = TransactionFactory.CreateTransaction(request, TargetPaymentProcessor); response = transaction.Commit(); req.PaymentAddress = paymentAddress; req.PaymentProcessor = TargetPaymentProcessor; if (!response.IsSuccess) { if (request != null && response != null) { PayoutManager.logPayout("Payout unsuccessful", request, response, req.PaymentProcessor); } throw new MsgException(response.Note); } req.Save(); History.AddCashout(User.Name, AmountToPayout); User.SubtractFromMainBalance(AmountToPayout, "Payout"); User.MoneyCashout += AmountToPayout - fee; User.IsPhoneVerifiedBeforeCashout = false; User.CashoutsProceed++; User.Save(); //Update payout proportions PaymentProportionsManager.MemberPaidOut(AmountToPayout - fee, PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor), User, IsCustomPayoutProcessor); //Add to daily cashout AppSettings.Payments.GlobalCashoutsToday += AmountToPayout - fee; AppSettings.Payments.Save(); //Add outcome to stats (Data2); var stats = new Statistics(StatisticsType.Cashflow); stats.AddToData2(AmountToPayout); stats.Save(); //Add paymentproof PaymentProof.Add(User.Id, AmountToPayout, PaymentType.Instant, PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor)); // Log because payment may have response status SuccessWithWarning // More on this: https://developer.paypal.com/webapps/developer/docs/classic/api/NVPAPIOverview/ logPayout("Payout successful", request, response, req.PaymentProcessor); return(U3501.AUTOMATICCASHOUTSUCC + ": " + response.Note); }
public static Dictionary <string, List <string> > GetAvailableOptions() { Dictionary <string, List <string> > AvailableTransfers = new Dictionary <string, List <string> >(); var TokenCryptocurrency = CryptocurrencyFactory.Get(CryptocurrencyType.ERC20Token); var BtcCryptocurrency = CryptocurrencyFactory.Get(CryptocurrencyType.BTC); if (AppSettings.Payments.TransferMainInAdBalanceEnabled) { TryAdd(AvailableTransfers, "Main balance", "Purchase balance"); } if (((AppSettings.Payments.CommissionToMainBalanceEnabled && !TitanFeatures.UserCommissionToMainBalanceEnabled) || (TitanFeatures.UserCommissionToMainBalanceEnabled && Member.Current.CommissionToMainBalanceEnabled)) && Member.CurrentInCache.CheckAccessCustomizeTradeOwnSystem) { TryAdd(AvailableTransfers, "Commission Balance", "Main balance"); } if (AppSettings.Payments.CommissionToAdBalanceEnabled) { TryAdd(AvailableTransfers, "Commission Balance", "Purchase balance"); } if (TitanFeatures.isAri) { TryAdd(AvailableTransfers, "Main balance", "Cash balance"); TryAdd(AvailableTransfers, "Commission Balance", "Cash balance"); } if (TitanFeatures.IsRevolca) { TryAdd(AvailableTransfers, "Purchase balance", "Main balance"); } foreach (var t in PaymentAccountDetails.PaymentAccountDetailsClasses) { var instance = Activator.CreateInstance(t); if (PaymentAccountDetails.RunStaticMethod(t, "GetFirstIncomeGateway") != null) { string pp = t.GetProperty("AccountType").GetValue(instance, null).ToString(); if (pp == "MPesa") //MPesa only to Cash Balance or Purchase Balance (if Cash Balance disabled) { if (AppSettings.Payments.CashBalanceEnabled) { TryAdd(AvailableTransfers, pp, "Cash balance"); } else { TryAdd(AvailableTransfers, pp, "Purchase balance"); } } else //All other payment processors = no restrictions { if (AppSettings.Payments.TransferFromPaymentProcessorsToAdBalanceEnabled) { TryAdd(AvailableTransfers, pp, "Purchase balance"); } if (AppSettings.TitanFeatures.AdvertTrafficExchangeEnabled) { TryAdd(AvailableTransfers, pp, "Traffic balance"); } if (AppSettings.Payments.CashBalanceEnabled) { TryAdd(AvailableTransfers, pp, "Cash balance"); } if (AppSettings.Payments.MarketplaceBalanceDepositEnabled) { TryAdd(AvailableTransfers, pp, "Marketplace balance"); } if (AppSettings.Points.PointsDepositEnable) { TryAdd(AvailableTransfers, pp, TransferOptionConst.PointsTransfer); } } } } if (AppSettings.TitanFeatures.AdvertTrafficExchangeEnabled) { TryAdd(AvailableTransfers, "Main balance", "Traffic balance"); } if (AppSettings.Payments.CashToAdBalanceEnabled) { TryAdd(AvailableTransfers, "Cash balance", "Purchase balance"); } if (AppSettings.Payments.MainToMarketplaceBalanceEnabled) { TryAdd(AvailableTransfers, "Main balance", "Marketplace balance"); } if (AppSettings.Payments.TransferFromBTCWalletToPurchaseBalanceEnabled) { TryAdd(AvailableTransfers, "BTC Wallet", "Purchase balance"); } if (AppSettings.Payments.TransferFromTokenWalletToPurchaseBalanceEnabled) { TryAdd(AvailableTransfers, TokenCryptocurrency.Code + " Wallet", "Purchase balance"); } if (AppSettings.Payments.TransferFromMainBalanceToTokenWalletEnabled) { TryAdd(AvailableTransfers, "Main balance", TokenCryptocurrency.Code + " Wallet"); } if (BtcCryptocurrency.DepositEnabled && CryptocurrencyApiFactory.Get(BtcCryptocurrency.DepositApiProcessor).AllowToUsePaymentButtons()) { string RadioToName = (BtcCryptocurrency.DepositTarget == DepositTargetBalance.Wallet) ? "BTC Wallet" : BtcCryptocurrency.DepositTarget.ToString(); TryAdd(AvailableTransfers, BtcCryptocurrency.DepositApiProcessor.ToString(), RadioToName); } return(AvailableTransfers); }
protected static string TryInvokeProcessorTransfer(string transferFrom, string transferTo, Money amount, Member user) { var BtcCryptocurrency = CryptocurrencyFactory.Get(CryptocurrencyType.BTC); if (transferFrom == BtcCryptocurrency.DepositApiProcessor.ToString() && amount is CryptocurrencyMoney) { //We have BTC direct transfer var cryptoAmount = (CryptocurrencyMoney)amount; var bg = new DepositToWalletCryptocurrencyButtonGenerator(user, cryptoAmount); return(GenerateHTMLButtons.GetBtcButton(bg)); } if (transferFrom == BtcCryptocurrency.DepositApiProcessor.ToString()) { var bg = new DepositCryptocurrencyButtonGenerator(user, amount); return(GenerateHTMLButtons.GetBtcButton(bg)); } if (amount < AppSettings.Payments.MinimumTransferAmount) { throw new MsgException(U3000.ITSLOWERTHANMINIMUM); } var thegateway = PaymentAccountDetails.GetFirstGateway(transferFrom, true); if (thegateway == null) { throw new MsgException("No specified gateway installed."); } amount = thegateway.CalculateAmountWithFee(amount); if (transferTo == "Traffic balance") { var bg = new TransferToRentalBalanceButtonGenerator(user, amount); bg.Strategy = thegateway.GetStrategy(); return(bg.Generate()); } else if (transferTo == "Purchase balance") { var bg = new TransferToAdvertisingBalanceButtonGenerator(user, amount); bg.Strategy = thegateway.GetStrategy(); return(bg.Generate()); } else if (transferTo == "Cash balance") { var bg = new TransferToCashBalanceButtonGenerator(user, amount); bg.Strategy = thegateway.GetStrategy(); return(bg.Generate()); } else if (transferTo == "Marketplace balance") { var bg = new TransferToMarketplaceBalanceButtonGenerator(user, amount); bg.Strategy = thegateway.GetStrategy(); return(bg.Generate()); } else if (transferTo == TransferOptionConst.PointsTransfer) { var bg = new TransferToPointsBalanceButtonGenerator(user, amount); bg.Strategy = thegateway.GetStrategy(); return(bg.Generate()); } return(String.Empty); }
public string TryMakePayout() { Money withdrawalFee = Money.Zero; if (!IsCustomPayoutProcessor) { var processor = PaymentAccountDetails.GetFirstGateway(TargetPaymentProcessor); withdrawalFee = Money.MultiplyPercent(AmountToPayout, processor.WithdrawalFeePercent); var address = UsersPaymentProcessorsAddress.GetAddress(User.Id, new PaymentProcessorInfo((PaymentProcessor)Enum.Parse(typeof(PaymentProcessor), processor.AccountType))); if (address != null) { if (TargetAccount != address.PaymentAddress) { throw new MsgException("Don't try to use account ID which is different from your current one. To change account ID go to user settings panel."); } if (address.LastChanged.AddDays(processor.DaysToBlockWithdrawalsAfterAccountChangename) > AppSettings.ServerTime) { throw new MsgException(string.Format(U6007.CANTWITHDRAWDAYSLIMIT, (address.LastChanged.AddDays(processor.DaysToBlockWithdrawalsAfterAccountChangename).DayOfYear - AppSettings.ServerTime.DayOfYear))); } } else { User.SetPaymentAddress(processor.Id, TargetAccount); } } else { var blockingDays = new CustomPayoutProcessor(CustomPayoutProcessorId).DaysToBlockWithdrawalsAfterAccounChange; var address = UsersPaymentProcessorsAddress.GetAddress(User.Id, new PaymentProcessorInfo(CustomPayoutProcessorId)); if (address != null) { if (TargetAccount != address.PaymentAddress) { throw new MsgException("Don't try to use account ID which is different from your current one. To change account ID go to user settings panel."); } if (address.LastChanged.AddDays(blockingDays) > AppSettings.ServerTime) { throw new MsgException(string.Format(U6007.CANTWITHDRAWDAYSLIMIT, (address.LastChanged.AddDays(blockingDays).DayOfYear - AppSettings.ServerTime.DayOfYear))); } } else { User.SetPaymentAddress(CustomPayoutProcessorId, TargetAccount); } } ValidatePayout(User, AmountToPayout); //Check the gateway limit (global limit, pp custom limit) CheckBaseLimits(); //CLP ---> extension for private client CLP User = Titan.CLP.CLPManager.CheckCashoutBonus(User, AmountToPayout); if (IsManualPayout()) //Decide if we go with automatic or manual { return(TryMakeManualPayout(withdrawalFee)); } else { return(TryMakeInstantPayout(withdrawalFee)); } return(""); }
protected void Page_Load(object sender, EventArgs e) { AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.MoneyTransferEnabled); user = Member.Current; AppSettings.Reload(); BtcCryptocurrency = CryptocurrencyFactory.Get <BitcoinCryptocurrency>(); EthCryptocurrency = CryptocurrencyFactory.Get <EthereumCryptocurrency>(); XrpCryptocurrency = CryptocurrencyFactory.Get <RippleCryptocurrency>(); TokenCryptocurrency = CryptocurrencyFactory.Get <RippleCryptocurrency>(); PointsButton.Text = AppSettings.PointsName; PointsButton.Visible = ShowPointsView(); PointsToSpinsButton.Visible = AppSettings.TitanFeatures.SlotMachineEnabled; RofriquePlaceHolder.Visible = TitanFeatures.IsRofrique; if (AppSettings.Payments.TransferMode != TransferFundsMode.DenyAll) { TransferToOthersButton.Visible = true; TransferToOthersButton.Text = U3500.TRANSFERTOOTHER; } if (!Page.IsPostBack) { if (TitanFeatures.IsJ5WalterOffersFromHome) { BalanceButton.Visible = false; PointsButton.CssClass = "ViewSelected"; MenuMultiView.ActiveViewIndex = 1; } if (TitanFeatures.isBoazorSite) { BalanceButton.Visible = false; TransferToOthersButton.Visible = false; MenuMultiView.ActiveViewIndex = 1; } if (TitanFeatures.IsTrafficThunder) { UserBalancesPlaceHolder.Visible = false; } AppSettings.Reload(); LangAdder.Add(btnTransfer, L1.TRANSFER); LangAdder.Add(btnTransferPoints, L1.TRANSFER); LangAdder.Add(MPesaConfirmButton, L1.CONFIRM); //MPesa? if (Request.QueryString["mpesa"] != null) { StandardTransferPlaceHolder.Visible = false; MPesaTransferPlaceHolder2.Visible = true; var gateway = PaymentAccountDetails.GetFirstIncomeGateway <MPesaSapamaAccountDetails>(); MPesaAmount.Text = String.Format(U6005.TODEPOSITVIAMPESA, gateway.Username, gateway.Username, Money.Parse(Request.QueryString["mpesa"]).ToString()); } //Pre-selected tab if (Request.QueryString["button"] != null) { var button = (Button)MenuButtonPlaceHolder.FindControl("Button" + Request.QueryString["button"]); MenuButton_Click(button, null); } RadioFrom.Items.AddRange(GenerateHTMLButtons.TransferBalanceFromItems); //Points -> Main Balance (on/off) if (!AppSettings.Misc.IsTransferPointsToMainBalanceEnabled || !AppSettings.Points.PointsEnabled) { PointsTo.Items.RemoveAt(2); } if (!AppSettings.Payments.PointsToAdBalanceEnabled) { PointsTo.Items.Remove("Purchase balance"); } if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowMainBalanceOnly || AppSettings.Payments.TransferMode == TransferFundsMode.AllowMainToPurchaseBalance) { MemberFrom.Items[1].Selected = true; MemberFrom.Items.RemoveAt(0); } else if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowPointsOnly) { MemberFrom.Items.RemoveAt(1); } if (((AppSettings.Payments.CommissionToMainBalanceEnabled && !TitanFeatures.UserCommissionToMainBalanceEnabled) || (TitanFeatures.UserCommissionToMainBalanceEnabled && user.CommissionToMainBalanceEnabled) || TitanFeatures.IsRevolca) && user.CheckAccessCustomizeTradeOwnSystem) { RadioTo.Items.Add(new ListItem("", "Main balance")); TransferSameCommissionToMainLiteral.Visible = true; TransferSameCommissionToMainLiteral.Text = U5004.TRANSFERCOMMISSIONTOMAINFEE + ": <b>" + user.Membership.SameUserCommissionToMainTransferFee.ToString() + "%</b><br />"; if (user.Membership.SameUserCommissionToMainTransferFee == 0) { TransferSameCommissionToMainP.Visible = false; } } if (AppSettings.TitanFeatures.AdvertTrafficExchangeEnabled == false) { ListItem a = PointsTo.Items.FindByValue("Traffic balance"); ListItem b = RadioTo.Items.FindByValue("Traffic balance"); if (a != null) { PointsTo.Items.Remove(a); } if (b != null) { RadioTo.Items.Remove(b); } } if (!AppSettings.Payments.CashBalanceEnabled) { ListItem cb = RadioTo.Items.FindByValue("Cash balance"); if (cb != null) { RadioTo.Items.Remove(cb); } } if (!AppSettings.Payments.MarketplaceBalanceEnabled) { ListItem cb = RadioTo.Items.FindByValue("Marketplace balance"); if (cb != null) { RadioTo.Items.Remove(cb); } } #region TransferFee var pointsFee = user.Membership.OtherUserPointsToPointsTransferFee; var mainToMainFee = user.Membership.OtherUserMainToMainTransferFee; var mainToAdFee = user.Membership.OtherUserMainToAdTransferFee; if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowPointsAndMainBalance) { TransferOthersMainToMainLiteral.Visible = true; TransferOthersMainToMainLiteral.Text = U5004.THEFEE.Replace("%a%", "<b>" + L1.MAINBALANCE + "</b>") .Replace("%n%", "<b>" + mainToMainFee.ToString() + "%</b>"); TransferOthersPointsLiteral.Visible = true; TransferOthersPointsLiteral.Text = U5004.THEFEE.Replace("%a%", "<b>" + AppSettings.PointsName + "</b>") .Replace("%n%", "<b>" + pointsFee.ToString() + "%</b>"); } else if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowMainBalanceOnly) { TransferOthersMainToMainLiteral.Visible = true; TransferOthersMainToMainLiteral.Text = U5004.THEFEE.Replace("%a%", "<b>" + L1.MAINBALANCE + "</b>") .Replace("%n%", "<b>" + mainToMainFee.ToString() + "%</b>"); } else if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowPointsOnly) { TransferOthersPointsLiteral.Visible = true; TransferOthersPointsLiteral.Text = U5004.THEFEE.Replace("%a%", "<b>" + AppSettings.PointsName + "</b>") .Replace("%n%", "<b>" + pointsFee.ToString() + "%</b>"); } else if (AppSettings.Payments.TransferMode == TransferFundsMode.AllowMainToPurchaseBalance) { TransferOthersMainToAdLiteral.Visible = true; TransferOthersMainToAdLiteral.Text = U5004.THEFEE.Replace("%a%", "<b>" + L1.MAINBALANCE + "</b>") .Replace("%n%", "<b>" + mainToAdFee.ToString() + "%</b>"); } #endregion SetRadioToValues(); //CalculatePointsValue(); SetProcessorValues(); SetupSpecialTransfersProperties(); if (RadioFrom.Items.Count == 0 || RadioTo.Items.Count == 0) { //No transfers available transferInputRow.Visible = false; TransferSameCommissionToMainLiteral.Visible = true; TransferSameCommissionToMainLiteral.Text = "<br/><br/>" + U5006.NOTRANSFEROPTIONS; transfertable.Visible = false; } if (TitanFeatures.IsTradeOwnSystem) { //Checking condition to display appropriate message if (!user.CheckAccessCustomizeTradeOwnSystem && user.CommissionToMainBalanceRequiredViewsMessageInt > 0) { CommissionTransferInfoDiv.Visible = true; CommissionTransferInfo.Text = String.Format(U6010.COMMISSIONBALANCETRANSFERINFO, user.CommissionToMainBalanceRequiredViewsMessageInt, AppSettings.RevShare.AdPack.AdPackName); } else if (!user.CheckAccessCustomizeTradeOwnSystem && user.CommissionToMainBalanceRequiredViewsMessageInt == 0) { CommissionTransferInfoDiv.Visible = true; CommissionTransferInfo.Text = String.Format(U6010.COMMISSIONBALANCETRANSFERNOACTIVEADPACKINFO, AppSettings.RevShare.AdPack.AdPackName); } else { CommissionTransferInfoDiv.Visible = false; } } } SetRadioItemsValues(RadioFrom); SetRadioItemsValues(RadioTo); SetRadioItemsValues(PointsTo); RemoveDuplicatesFromList(); PointsFrom.Items[0].Attributes.Add("data-content", "<img src = '../Images/OneSite/TransferMoney/Points.png' /> " + AppSettings.PointsName); if (!TitanFeatures.IsRofriqueWorkMines) { if (TitanFeatures.IsAhmed) { LangAdder.Add(BalanceButton, string.Format("{0}/{1}", U6012.DEPOSITCOINS, L1.TRANSFER)); } else { LangAdder.Add(BalanceButton, L1.TRANSFER); } } else { LangAdder.Add(BalanceButton, "Cash Deposits"); } LangAdder.Add(btnTransferMember, L1.TRANSFER); LangAdder.Add(CalculatePointsValueButton, U6007.CALCULATE); }
public static string GetPaymentAccountName(PaymentAccountDetails account) { return(account.AccountType + ":" + account.Username); }
protected void AdvertisePageLoad() { if (TitanFeatures.IsTrafficThunder) { Response.Redirect(AppSettings.Site.Url); } if (!AppSettings.TitanFeatures.AdvertAdsEnabled) { ptcLink.Visible = false; } if (!AppSettings.TitanFeatures.AdvertBannersEnabled || AppSettings.BannerAdverts.AdvertisingPolicy == BannerPolicy.BannerBidding) { bannerLink.Visible = false; } if (!AppSettings.TitanFeatures.AdvertFacebookEnabled) { facebookLink.Visible = false; } if (!AppSettings.TitanFeatures.AdvertTrafficGridEnabled) { trafficGridLink.Visible = false; } if (!AppSettings.TitanFeatures.AdvertMarketplaceEnabled || !AppSettings.Marketplace.MarketplaceAllowPurchaseFromPaymentProcessors) { marketplaceLink.Visible = false; } if (!AppSettings.InvestmentPlatform.InvestmentPlatformEnabled || !AppSettings.TitanFeatures.InvestmentPlatformCalculatorEnabled) { investmentPlatformCalculatorLink.Visible = false; } div02.Visible = (ptcLink.Visible || bannerLink.Visible || facebookLink.Visible || trafficGridLink.Visible || marketplaceLink.Visible || investmentPlatformCalculatorLink.Visible) && PaymentAccountDetails.AreIncomingPaymentProcessorsAvailable(); }
protected void Page_Load(object sender, EventArgs e) { var targetFeature = PurchaseOption.Features.Upgrade; var purchaseOption = PurchaseOption.Get(targetFeature); if (purchaseOption.PurchaseBalanceEnabled) { UpgradeFromAdBalance.Visible = true; } else { UpgradeFromAdBalance.Visible = false; adBalanceInfo.Visible = false; } if (AppSettings.Payments.CashBalanceEnabled && purchaseOption.CashBalanceEnabled) { UpgradeFromCashBalance.Visible = true; } else { UpgradeFromCashBalance.Visible = false; cashBalanceInfo.Visible = false; } AccessManager.RedirectIfDisabled(AppSettings.TitanFeatures.UpgradeEnabled); User = Member.CurrentInCache; if (!Page.IsPostBack) { //Lang LangAdder.Add(UpgradeFromAdBalance, U6012.PAYVIAPURCHASEBALANCE); LangAdder.Add(UpgradeFromCashBalance, U6005.PAYVIACASHBALANCE); LangAdder.Add(UpgradeViaPaymentProcessor, U6005.PAYVIAPAYMENTPROCESSOR); //Bind the data dor DDL BindDataToDDL(); //Visibility UpgradeViaPaymentProcessorPlaceHolder.Visible = PaymentAccountDetails.AreIncomingPaymentProcessorsAvailable(); } if (TitanFeatures.IsRofriqueWorkMines) { UpgradeFromAdBalancePlaceHolder.Visible = false; UpgradeViaPaymentProcessorPlaceHolder.Visible = false; } HideCashBalanceDepositCommissionColumn = AreAllCashBalanceDepositCommissionsZero(); ddlOptions.Attributes.Add("onchange", "updatePrice();"); autopayHelpArray = new Dictionary <string, bool>(); Label10.Text = AppSettings.Memberships.TenPointsValue.ToClearString(); LabelIle.Text = AppSettings.Memberships.UpgradePointsDiscount.ToString(); //Display warning string WarningMessage = UpgradePageHelper.GetWarningMessage(User); WarningPanel.Visible = !String.IsNullOrEmpty(WarningMessage); WarningLiteral.Text = WarningMessage; AdBalanceLiteral.Text = User.PurchaseBalance.ToString(); CashBalanceLiteral.Text = User.CashBalance.ToString(); if (AppSettings.Points.LevelMembershipPolicyEnabled) { BuyUpgradePlaceHolder.Visible = false; } hiddenProperties = MembershipProperty.GetPropsToHideForClient(); TypesMembershipProperties.Text = AdPackTypeMembershipMapper.Mapper.GetHtmlFromCache(); AdPackPropsPlaceHolder.Visible = AppSettings.TitanFeatures.AdvertAdPacksEnabled; PaymentProcessorsButtonPlaceholder.Visible = false; }
private string TryMakeManualPayout(Money fee) { //Manual, add to payoutrequests PayoutRequest req = new PayoutRequest(); //Calculate fees for CustomPP Money Fees = fee; if (IsCustomPayoutProcessor) { CustomPayoutProcessor CPP = new CustomPayoutProcessor(CustomPayoutProcessorId); Fees = Fees + CPP.MoneyFee; Fees = Fees + (AmountToPayout * (CPP.PercentageFee * new Money(0.01))); if (string.IsNullOrWhiteSpace(TargetAccount)) { throw new MsgException(U4200.ACCOUNTFIELDNOTBLANK); } } req.Amount = AmountToPayout - Fees; req.IsPaid = false; req.RequestDate = DateTime.Now; req.Username = User.Name; req.IsRequest = true; req.BalanceType = BalanceType.MainBalance; if (IsCustomPayoutProcessor) { //CustomPP CustomPayoutProcessor CPP = new CustomPayoutProcessor(CustomPayoutProcessorId); req.PaymentAddress = TargetAccount; req.PaymentProcessor = CPP.Name; //MPesa check if (CPP.Name.ToLower() == "mpesa" && (TargetAccount.Length != 10 || !TargetAccount.StartsWith("07"))) { throw new MsgException("Check your phone number format. The number should be 07******** (10 length)"); } } else { string paymentAddress = PaymentAccountDetails.GetPaymentProcessorUserAccount(User, TargetPaymentProcessor); if (String.IsNullOrEmpty(paymentAddress)) { throw new MsgException(U5004.YOUMUST); } if (TargetPaymentProcessor == "Payeer" && paymentAddress.Contains("@")) { throw new MsgException(U6006.VALIDPAYEER); } req.PaymentAddress = paymentAddress; req.PaymentProcessor = TargetPaymentProcessor; } req.Save(); User.SubtractFromMainBalance(AmountToPayout, "Payout"); User.MoneyCashout += (AmountToPayout - Fees); User.IsPhoneVerifiedBeforeCashout = false; User.CashoutsProceed++; User.Save(); //Update payout proportions if (!IsCustomPayoutProcessor) { PaymentProportionsManager.MemberPaidOut(AmountToPayout - Fees, PaymentAccountDetails.GetFromStringType(TargetPaymentProcessor), User, IsCustomPayoutProcessor); } if (IsAutomaticButAvoveTheLimit) { return(U3501.CASHOUTSUCC + ": " + U3500.CASHOUT_APPROVE.Replace("%n%", TheLimit.ToString())); } else { return(U3501.CASHOUTSUCC + ": " + U3500.CASHOUT_MESSAGE.Replace("%n1%", (AmountToPayout - Fees).ToString()).Replace("%n2%", Fees.ToString())); } }