public void MockSetcomPurchaseRequest() { PurchaseTransactionRequest purchaseTransactionRequest = new PurchaseTransactionRequest(); // Action based on service calls // CO_ID and OUTLET from DB - are set in the PerformPaymentTransaction method, trackID is derived during paymentTransaction process // Internal use fields purchaseTransactionRequest.MemberInGameID = 1; purchaseTransactionRequest.transactionDateTime = DateTime.Now; // Mandatory SETCOM fields purchaseTransactionRequest.CCNumber = "4444333322221111"; purchaseTransactionRequest.CCCVV = "111"; purchaseTransactionRequest.ExYear = "2020"; purchaseTransactionRequest.ExMonth = "11"; purchaseTransactionRequest.CCName = "Test Buyer VS1"; purchaseTransactionRequest.CC_Amount = "270.00"; purchaseTransactionRequest.CO_ID = ""; // Populated during PerformPaymentTransaction, data from db payment config purchaseTransactionRequest.OUTLET = ""; // Populated during PerformPaymentTransaction, data from db payment config purchaseTransactionRequest.Reference = ""; // Unique merchant tracking ID, set during PerformPaymentTransaction // Consistent key field - Optional SETCOM field - hashed transaction key for transactional safety purchaseTransactionRequest.Consistent = ""; // Populated during PerformPaymentTransaction, data from db payment config // Optional SETCOM fields purchaseTransactionRequest.MobileNumber = "0823456789"; purchaseTransactionRequest.buyer_id = purchaseTransactionRequest.MemberInGameID.ToString(); purchaseTransactionRequest.bill_first_name = "test"; purchaseTransactionRequest.bill_last_name = "user"; purchaseTransactionRequest.bill_phone = "08234567890"; purchaseTransactionRequest.bill_street1 = "street1"; purchaseTransactionRequest.bill_street2 = "street2"; purchaseTransactionRequest.bill_state = "Gauteng"; purchaseTransactionRequest.bill_zip = "1234"; purchaseTransactionRequest.bill_city = "Johannesburg"; purchaseTransactionRequest.bill_country = "South Africa"; purchaseTransactionRequest.bill_title = "Mr"; purchaseTransactionRequest.EmailAddress = "*****@*****.**"; purchaseTransactionRequest.ip_address = "172.152.43.1"; PurchaseTransactionResponse ptRes = this.PerformPaymentTransaction(purchaseTransactionRequest); Console.WriteLine("outcome [" + ptRes.outcome + "]"); Console.WriteLine("response indicator [" + ptRes.responseIndicator + "]"); Console.WriteLine("tx date [" + ptRes.transactionDate + "]"); Console.WriteLine("tx time [" + ptRes.transactionTime + "]"); Console.WriteLine("tx order ID [" + ptRes.transactionOrderID + "]"); Console.WriteLine("merchant ref [" + ptRes.merchantReference + "]"); Console.WriteLine("tx amount [" + ptRes.transactionAmount + "]"); }
public bool pay(PaymentsModel model, int membershipSubscriptionStatus, string username, string ipAddress, String custIp) { Member member = memberDao.findMember(username); double amount = subscriptionTypeDao.findAmount(membershipSubscriptionStatus) - Convert.ToDouble(member.MemberSubscriptionType.amount); SetcomPaymentTransactionManager PayMan = new SetcomPaymentTransactionManager(); PurchaseTransactionRequest purchaseTransactionRequest = new PurchaseTransactionRequest(); purchaseTransactionRequest.CCNumber = model.CardNumber; purchaseTransactionRequest.CCCVV = model.CVCNumber; purchaseTransactionRequest.ExYear = (model.ExpiryDateY.Trim().Length > 2) ? model.ExpiryDateY : "20" + model.ExpiryDateY; purchaseTransactionRequest.ExMonth = model.ExpiryDateM; purchaseTransactionRequest.CCName = HttpUtility.UrlEncode(model.NameOnCard); purchaseTransactionRequest.MemberInGameID = null; purchaseTransactionRequest.buyer_id = ""; purchaseTransactionRequest.bill_first_name = HttpUtility.UrlEncode(member.FirstName); purchaseTransactionRequest.bill_last_name = HttpUtility.UrlEncode(member.LastName); purchaseTransactionRequest.bill_street1 = ""; purchaseTransactionRequest.bill_street2 = ""; purchaseTransactionRequest.bill_city = ""; purchaseTransactionRequest.bill_state = ""; purchaseTransactionRequest.bill_country = ""; purchaseTransactionRequest.bill_zip = ""; purchaseTransactionRequest.EmailAddress = HttpUtility.UrlEncode(member.EmailAddress); purchaseTransactionRequest.CC_Amount = amount.ToString(); purchaseTransactionRequest.ip_address = custIp; purchaseTransactionRequest.transactionDateTime = DateTime.Now; PurchaseTransactionResponse ptRes = PayMan.PerformPaymentTransaction(purchaseTransactionRequest); if (ptRes.outcome.ToUpper() == "APPROVED") { member.MemberSubscriptionTypeID = membershipSubscriptionStatus; memberDao.save(member); this.sendUpgradeEmail(member.FirstName + ' ' + member.LastName, member.EmailAddress); return(true); } log.Info("PaymentService: error processing payment: " + ptRes.outcome + ", " + ptRes.responseIndicator); return(false); }
private bool VerifyAndPersistPaymentResponse(PurchaseTransactionRequest purchaseTransactionRequest, PurchaseTransactionResponse purchaseTransactionResponse) { PaymentTransaction paymentTransaction = db.PaymentTransactions.Where(x => x.TrackID == purchaseTransactionResponse.merchantReference).First(); // Do validation on merchant reference. if (purchaseTransactionResponse.merchantReference == purchaseTransactionRequest.Reference) { paymentTransaction.Result = purchaseTransactionResponse.outcome; paymentTransaction.ResponseCode = purchaseTransactionResponse.responseIndicator; paymentTransaction.AuthCode = (purchaseTransactionResponse.outcome.ToUpper() == "APPROVED") ? purchaseTransactionResponse.responseIndicator : ""; paymentTransaction.TranID = purchaseTransactionResponse.transactionOrderID; paymentTransaction.TransactionResponseDateTime = DateTime.Now; if (purchaseTransactionResponse.outcome.ToUpper() == "APPROVED") { paymentTransaction.PaymentStatus = "PAID"; } } try { db.SaveChanges(); } catch (System.Data.Entity.Validation.DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } return(false); } return(true); }
public string Purchase(FormCollection form) { int GameID = Convert.ToInt32((form["GameID"])); AspNetUser user = db.AspNetUsers.Where(x => x.UserName == User.Identity.Name).First(); Member member = db.Members.Where(m => m.ASPUserId == user.Id).First(); MemberInGame mib = db.MemberInGames.Where(c => c.MemberID == member.MemberID && c.GameID == GameID).First(); trackingTransactionManager.PausePaymentTrackingTransaction(GameID, member.MemberID); //Address billingAddress = db.Addresses.Where(a => a.MemberID == member.MemberID && a.AddressType.ToLower() == "billing").First(); pig = mib.Game.ProductInGames.FirstOrDefault(); /* Setcom Purchase */ SetcomPaymentTransactionManager PayMan = new SetcomPaymentTransactionManager(); PurchaseTransactionRequest purchaseTransactionRequest = new PurchaseTransactionRequest(); purchaseTransactionRequest.CCNumber = form["PaymentsModel.CardNumber"]; //"4444444444444444"; purchaseTransactionRequest.CCCVV = form["PaymentsModel.CVCNumber"]; purchaseTransactionRequest.ExYear = (form["PaymentsModel.ExpiryDateY"].ToString().Trim().Length > 2) ? form["PaymentsModel.ExpiryDateY"] : "20" + form["PaymentsModel.ExpiryDateY"]; purchaseTransactionRequest.ExMonth = form["PaymentsModel.ExpiryDateM"]; purchaseTransactionRequest.CCName = form["PaymentsModel.NameOnCard"]; purchaseTransactionRequest.MemberInGameID = mib.MemberInGameID; purchaseTransactionRequest.EmailAddress = mib.Member.EmailAddress; purchaseTransactionRequest.CC_Amount = pig.PriceInGame.ToString(); purchaseTransactionRequest.ip_address = Request.ServerVariables["REMOTE_ADDR"]; purchaseTransactionRequest.transactionDateTime = DateTime.Now; /* Additional Non-mandatory fields */ purchaseTransactionRequest.bill_first_name = mib.Member.FirstName; purchaseTransactionRequest.bill_last_name = mib.Member.LastName; purchaseTransactionRequest.bill_street1 = ""; purchaseTransactionRequest.bill_street2 = ""; purchaseTransactionRequest.bill_city = ""; purchaseTransactionRequest.bill_state = ""; purchaseTransactionRequest.bill_country = mib.Member.Country.CountryName;; purchaseTransactionRequest.bill_zip = ""; purchaseTransactionRequest.bill_phone = ""; purchaseTransactionRequest.bill_title = ""; PurchaseTransactionResponse ptRes = PayMan.PerformPaymentTransaction(purchaseTransactionRequest); ptRes.outcome = ptRes.outcome.ToUpper(); if (ptRes.outcome.ToUpper() != "APPROVED") // Setcom change ends here { trackingTransactionManager.ResumePaymentTrackingTransaction(GameID, member.MemberID); ptRes.timeRemaining = trackingTransactionManager.GetTimeRemaining(GameID, member.MemberID).ToString(); } else { trackingTransactionManager.CompletePaymentTrackingTransaction(GameID, member.MemberID); //Update paymentIndicator mib.PaymentIndicator = true; try { db.SaveChanges(); } catch (System.Data.Entity.Validation.DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { System.Diagnostics.Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } } // get winner address Address deliveryAddress = db.Addresses.FirstOrDefault(x => x.MemberID == member.MemberID && x.AddressType.ToLower() == "postal"); // get quantity won - divide quantity from pig by number of winners ??? really??? ok then..... Game qtyGame = db.Games.Find(GameID); int winQuantity = 1; //pig.Quantity / qtyGame.NumberOfWinners; // send winner email this.sendWinnermail(member.FirstName + ' ' + member.LastName, member.EmailAddress, deliveryAddress, winQuantity); } JsonResult json = new JsonResult { Data = ptRes }; string son = new JavaScriptSerializer().Serialize(json.Data); return(son); }