コード例 #1
0
        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 + "]");
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }