protected void Play_Click(object sender, EventArgs e) { if ( txtbxAmount.Text == "" ) { string l_strMessageToUser = "******"; string l_strGoBackUrl = "~/Play.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + l_strGoBackUrl, true); return; } // take the amount decimal l_amountRequested = decimal.Parse(txtbxAmount.Text); // find the current wallet amount string l_strUsername = Context.User.Identity.Name; Account l_accountFound = Account.FindByUsername(l_strUsername); if ( l_accountFound == null ) { string l_strMessageToUser = "******"; string l_strGoBackUrl = "~/Play.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + l_strGoBackUrl, true); return; } Wallet l_wallet = Wallet.FindByAccountId(l_accountFound.Id); if ( l_wallet.Amount<l_amountRequested) { string l_strMessageToUser = "******"; string l_strGoBackUrl = "~/Play.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + l_strGoBackUrl, true); return; } // ok. Enough Money. // Let us win or loose now Random l_random = new Random(DateTime.Now.Second); bool l_boolWin = l_random.Next() % 2 == 1; Transaction l_transaction = new Transaction(); l_transaction.AccountId = l_accountFound.Id; l_transaction.Amount = l_amountRequested; if ( !l_boolWin ) { l_transaction.Amount = -l_transaction.Amount; } l_transaction.DateOfTransaction = DateTime.Now; l_transaction.TypeOfTransaction = "play"; l_transaction = Transaction.Create(l_transaction); if ( l_transaction != null && l_transaction.Id >= 1 ) { string l_strLooseOrWinMessage = "You won!"; if (!l_boolWin) { l_strLooseOrWinMessage = "Sorry. You missed that one. Why don't you try again?"; } string l_strMessageToUser = "******" + l_transaction.Id + ", " + l_strLooseOrWinMessage; string l_strGoBackUrl = "~/Play.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + l_strGoBackUrl, true); return; } else { string l_strMessageToUser = "******"; string l_strGoBackUrl = "~/Play.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + l_strGoBackUrl, true); return; } } // Play_Click
} // GetOrderNumber () //------------------------- protected void Purchase_Click(Object o, EventArgs e) { StoreDataInSession(); // Find Account string l_strUsername = Context.User.Identity.Name; Account l_accountFound = Account.FindByUsername(l_strUsername); if (l_accountFound == null) { String l_messageToUser = "******"; String l_strGoBackUrl = "Default.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + HttpUtility.UrlEncode(l_strGoBackUrl), true); return; } if ( hdnfldPaymentMethod.Value == "bank") { // create the transaction Transaction l_transaction = new Transaction(); l_transaction.Amount = decimal.Parse(txtbxAmount.Text); l_transaction.DateOfTransaction = new DateTime(int.Parse(lstbxDateOfDepositYear.SelectedValue), int.Parse(lstbxDateOfDepositMonth.SelectedValue), int.Parse(lstbxDateOfDepositDayOfMonth.SelectedValue), DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTimeKind.Local); l_transaction.AccountId = l_accountFound.Id; l_transaction.TypeOfTransaction = "deposit"; l_transaction.BankDeposit = 1; l_transaction = Transaction.Create(l_transaction); //-------------------------------------------------- ResetSessionVars(); String l_messageToUser = "******"; String l_strGoBackUrl = "Default.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + HttpUtility.UrlEncode(l_strGoBackUrl), true); return; } // Create Checkout Event and send it over to FraudPointer Server Event l_eventCreated = CreateAndSendCheckoutEvent(l_accountFound); // ask for Interim Fraud Assessment FraudAssessment l_fa = _client.CreateFraudAssessment(GetOrCreateAssessmentSession(), true); if (l_fa.Result == "Accept" || l_fa.Result == "Review" && _reviewMapping == "Accept") { // We will try to charge customers credit card bool l_chargeResult = chckbxSuccessCharging.Checked; if (l_chargeResult) { // create the transaction Transaction l_transaction = new Transaction(); l_transaction.Amount = decimal.Parse(txtbxAmount.Text); l_transaction.DateOfTransaction = new DateTime(int.Parse(lstbxDateOfDepositYear.SelectedValue), int.Parse(lstbxDateOfDepositMonth.SelectedValue), int.Parse(lstbxDateOfDepositDayOfMonth.SelectedValue), DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second, DateTimeKind.Local); l_transaction.AccountId = l_accountFound.Id; l_transaction.TypeOfTransaction = "deposit"; l_transaction = Transaction.Create(l_transaction); //-------------------------------------------------- // success charging credit card CreateAndSendSuccessfulPaymentEvent(); l_fa = _client.CreateFraudAssessment(GetOrCreateAssessmentSession(), false); ResetSessionVars(); String l_messageToUser = "******"; String l_strGoBackUrl = "Default.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + HttpUtility.UrlEncode(l_strGoBackUrl), true); return; } else { // charging the card failed. CreateAndSendFailedPaymentEvent(); // increase the number of failed payments int l_numberOfFailedPaymentAttempts = GetNumberOfFailedPaymentAttempts(); l_numberOfFailedPaymentAttempts = l_numberOfFailedPaymentAttempts + 1; Context.Session["number_of_failed_payment_attempts"] = l_numberOfFailedPaymentAttempts; if (l_numberOfFailedPaymentAttempts > 3) { ResetSessionVars(); Response.Redirect("~/Default.aspx", true); return; } else { Response.Redirect("~/Checkout.aspx?payment_method=" + hdnfldPaymentMethod.Value, true); return; } } } else if (l_fa.Result == "Review" && _reviewMapping == "Review") { _client.CreateFraudAssessment(GetOrCreateAssessmentSession(), false); ResetSessionVars(); string l_strMessageToUser = "******"; string l_strGoBackUrl = "Default.aspx"; Response.Redirect("~/MessageToUser.aspx?message_to_user="******"&go_back_url=" + HttpUtility.UrlEncode(l_strGoBackUrl), true); return; } else { // this is a Reject case _client.CreateFraudAssessment(GetOrCreateAssessmentSession(), false); ResetSessionVars(); string l_strMessageToUser = "******"; Response.Redirect("~/MessageToUser.aspx?message_to_user=" + HttpUtility.UrlEncode(l_strMessageToUser), true); return; } } // Purchase_Click ()
public int BankDeposit { get; set; } // 0 means CC, 1 means Bank, -1 means nothing public static Transaction Create (Transaction i_transaction) { SqlConnection l_sqlConnection = null; SqlCommand l_sqlCommand = null; string l_strSqlForInsert = "insert into transactions (AccountId, Amount, DateOfTransaction, TypeOfTransaction, BankDeposit) " + " values ( @AccountId, @Amount, @DateOfTransaction, @TypeOfTransaction, @BankDeposit)"; SqlDataReader l_sqlDataReader = null; try { l_sqlConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[Common.DbName].ConnectionString); l_sqlConnection.Open(); l_sqlCommand = new SqlCommand(l_strSqlForInsert, l_sqlConnection); SqlParameter l_paramAccountId = new SqlParameter("AccountId", SqlDbType.Int); l_paramAccountId.Value = i_transaction.AccountId; l_sqlCommand.Parameters.Add(l_paramAccountId); SqlParameter l_paramAmount = new SqlParameter("Amount", SqlDbType.Decimal); l_paramAmount.Value = i_transaction.Amount; l_sqlCommand.Parameters.Add(l_paramAmount); SqlParameter l_paramDateOfTransaction = new SqlParameter("DateOfTransaction", SqlDbType.DateTime); l_paramDateOfTransaction.Value = i_transaction.DateOfTransaction; l_sqlCommand.Parameters.Add(l_paramDateOfTransaction); SqlParameter l_paramTypeOfTransaction = new SqlParameter("TypeOfTransaction", SqlDbType.VarChar); l_paramTypeOfTransaction.Value = i_transaction.TypeOfTransaction; l_sqlCommand.Parameters.Add(l_paramTypeOfTransaction); SqlParameter l_paramBankDeposit = new SqlParameter("BankDeposit", SqlDbType.Int); l_paramBankDeposit.Value = i_transaction.BankDeposit; l_sqlCommand.Parameters.Add(l_paramBankDeposit); l_sqlCommand.ExecuteNonQuery(); l_sqlCommand.Dispose(); // let us get the last id inserted string l_strScopeIdentity = "select max(id) as new_id from transactions where AccountId = " + i_transaction.AccountId; l_sqlCommand = new SqlCommand(l_strScopeIdentity, l_sqlConnection); int l_iNewId = 0; l_sqlDataReader = l_sqlCommand.ExecuteReader(); if ( l_sqlDataReader.Read() ) { l_iNewId = (int) l_sqlDataReader["new_id"]; } i_transaction.Id = l_iNewId; return i_transaction; } catch (Exception ex) { throw new Exception("Cannot create account, ex: " + ex); } finally { if ( l_sqlDataReader != null ) { l_sqlDataReader.Close(); } if (l_sqlCommand != null) { l_sqlCommand.Dispose(); } if (l_sqlConnection != null) { if (l_sqlConnection.State == ConnectionState.Open) { l_sqlConnection.Close(); } l_sqlConnection.Dispose(); } } } // Create ()