Exemple #1
0
        // Returns PaymentTransactionID for this transaction.
        private CashCloudPurchaseTransactionRequest PersistPaymentRequest(CashCloudPurchaseTransactionRequest purchaseTransactionRequest)
        {
            PaymentTransaction paymentTransaction = new PaymentTransaction();

            paymentTransaction.Action                     = purchaseTransactionRequest.action;
            paymentTransaction.Address                    = purchaseTransactionRequest.address;
            paymentTransaction.Amount                     = Convert.ToDecimal(purchaseTransactionRequest.amount);
            paymentTransaction.City                       = purchaseTransactionRequest.city;
            paymentTransaction.ClientIP                   = purchaseTransactionRequest.customerip;
            paymentTransaction.CountryCode                = purchaseTransactionRequest.countryCode;
            paymentTransaction.CurrencyCode               = purchaseTransactionRequest.currencyCode;
            paymentTransaction.email                      = purchaseTransactionRequest.Email;
            paymentTransaction.Member                     = purchaseTransactionRequest.member;
            paymentTransaction.MemberInGameID             = purchaseTransactionRequest.MemberInGameID;
            paymentTransaction.MerchantIP                 = purchaseTransactionRequest.merchantip;
            paymentTransaction.StateCode                  = purchaseTransactionRequest.stateCode;
            paymentTransaction.TrackID                    = purchaseTransactionRequest.trackid;
            paymentTransaction.TransactionRequestDateTime = purchaseTransactionRequest.transactionDateTime;
            paymentTransaction.UDF1                       = purchaseTransactionRequest.udf1;
            paymentTransaction.UDF2                       = purchaseTransactionRequest.udf2;
            paymentTransaction.UDF3                       = purchaseTransactionRequest.udf3;
            paymentTransaction.UDF4                       = purchaseTransactionRequest.udf4;
            paymentTransaction.UDF5                       = purchaseTransactionRequest.udf5;
            paymentTransaction.Zip           = purchaseTransactionRequest.zip;
            paymentTransaction.PaymentStatus = "UNPAID";

            db.PaymentTransactions.Add(paymentTransaction);

            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);
                    }
                }
            }
            purchaseTransactionRequest.paymentTransactionID = paymentTransaction.PaymentTransactionID;
            return(purchaseTransactionRequest);
        }
Exemple #2
0
        /*   private string GetTrackingID(PurchaseTransactionRequest purchaseTransactionRequest)
         * {
         *     // Tracking ID - 50 char - generated by hash(email address + transaction date + transaction time + amount)
         *     string hashTrackingID="";
         *     string trackingID = purchaseTransactionRequest.Email + purchaseTransactionRequest.transactionDateTime + purchaseTransactionRequest.amount;
         *
         *     hashTrackingID = Hashing.GetMd5Hash(trackingID);
         *     if (hashTrackingID.Length >  49)
         *     {
         *         hashTrackingID = hashTrackingID.Substring(0, 49);
         *     }
         *
         *     Console.WriteLine("The MD5 hash of " + trackingID + " is: " + hashTrackingID + ".");
         *
         *     return hashTrackingID;
         * } */

        private string GetTrackingID(CashCloudPurchaseTransactionRequest purchaseTransactionRequest)
        {
            // Tracking ID - 25 char - generated by hash(email address + transaction date + transaction time + amount)
            string hashTrackingID = "";
            string trackingID     = purchaseTransactionRequest.Email + purchaseTransactionRequest.transactionDateTime + purchaseTransactionRequest.amount;

            hashTrackingID = Hashing.GetMd5Hash(trackingID);
            if (hashTrackingID.Length > 24)
            {
                hashTrackingID = hashTrackingID.Substring(0, 24);
            }

            Console.WriteLine("The MD5 hash of " + trackingID + " is: " + hashTrackingID + ".");

            return(hashTrackingID);
        }
Exemple #3
0
        private bool VerifyAndPersistPaymentResponse(CashCloudPurchaseTransactionRequest purchaseTransactionRequest, CashCloudPurchaseTransactionResponse purchaseTransactionResponse)
        {
            PaymentTransaction paymentTransaction = db.PaymentTransactions.Find(purchaseTransactionRequest.paymentTransactionID);

            // Do validation on trackID.
            if (purchaseTransactionResponse.trackid == purchaseTransactionRequest.trackid)
            {
                paymentTransaction.Result       = purchaseTransactionResponse.result;
                paymentTransaction.ResponseCode = purchaseTransactionResponse.responsecode;
                paymentTransaction.AuthCode     = purchaseTransactionResponse.authcode;
                paymentTransaction.TranID       = purchaseTransactionResponse.tranid;
                paymentTransaction.TransactionResponseDateTime = DateTime.Now;
                if (paymentTransaction.ResponseCode.Trim() == "000" || paymentTransaction.ResponseCode.Trim() == "001")
                {
                    paymentTransaction.PaymentStatus = "PAID";
                }
            }

            /* Remo-2014-10-03-Payment Bug "Payment crashes when register as "Silver"status":: Resolution - This cannot happen here, must happen outside of payment processing. handled in GamesController.
             * if (paymentTransaction.PaymentStatus == "PAID")
             * {
             *  MemberInGame memberInGame = db.MemberInGames.Find(paymentTransaction.MemberInGameID);
             *  memberInGame.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);
                    }
                }
                return(false);
            }
            return(true);
        }
Exemple #4
0
        public void MockPurchaseRequest()
        {
            CashCloudPurchaseTransactionRequest purchaseTransactionRequest = new CashCloudPurchaseTransactionRequest();

            // Action should be derived.
            purchaseTransactionRequest.action = "1";
            // user and pass should be from DB - should also be set in the PerformPaymentTransaction method, trackID is derived during paymentTransaction process
            //purchaseTransactionRequest.terminalid = "CMVAUL1";
            //purchaseTransactionRequest.password = "******";
            //purchaseTransactionRequest.trackid = "soft1256";

            purchaseTransactionRequest.card                = "4444444444444444";
            purchaseTransactionRequest.cvv2                = "115";
            purchaseTransactionRequest.expYear             = "2012";
            purchaseTransactionRequest.expMonth            = "12";
            purchaseTransactionRequest.member              = "Test User";
            purchaseTransactionRequest.MemberInGameID      = 1;
            purchaseTransactionRequest.currencyCode        = "USD";
            purchaseTransactionRequest.address             = "Ebene";
            purchaseTransactionRequest.city                = "MOKA";
            purchaseTransactionRequest.stateCode           = "MOKA";
            purchaseTransactionRequest.zip                 = "152458";
            purchaseTransactionRequest.countryCode         = "Mauritius";
            purchaseTransactionRequest.Email               = "*****@*****.**";
            purchaseTransactionRequest.amount              = "0.00";
            purchaseTransactionRequest.merchantip          = "172.152.43.1";
            purchaseTransactionRequest.customerip          = "43.78.33.1";
            purchaseTransactionRequest.transactionDateTime = DateTime.Now;


            CashCloudPurchaseTransactionResponse ptRes = this.PerformPaymentTransaction(purchaseTransactionRequest);

            Console.WriteLine("authcode [" + ptRes.authcode + "]");
            Console.WriteLine("responsecode [" + ptRes.responsecode + "]");
            Console.WriteLine("result [" + ptRes.result + "]");
            Console.WriteLine("terminalid [" + ptRes.terminalid + "]");
            Console.WriteLine("trackid [" + ptRes.trackid + "]");
            Console.WriteLine("tranid [" + ptRes.tranid + "]");
            Console.WriteLine("udf1 [" + ptRes.udf1 + "]");
            Console.WriteLine("udf2 [" + ptRes.udf2 + "]");
            Console.WriteLine("udf3 [" + ptRes.udf3 + "]");
            Console.WriteLine("udf4 [" + ptRes.udf4 + "]");
            Console.WriteLine("udf5 [" + ptRes.udf5 + "]");
        }
Exemple #5
0
        public CashCloudPurchaseTransactionResponse PerformPaymentTransaction(CashCloudPurchaseTransactionRequest requestTx)
        {
            // Get URL from Config
            PaymentConfiguration paymentConfiguration = this.GetPaymentConfiguration();

            requestTx.terminalid = paymentConfiguration.TerminalID;
            requestTx.password   = paymentConfiguration.MerchantPassword;
            requestTx.trackid    = this.GetTrackingID(requestTx);

            // Persist request transaction
            requestTx = this.PersistPaymentRequest(requestTx);

            // Do Payment
            CashCloudPurchase transactionProcessor = new CashCloudPurchase();
            CashCloudPurchaseTransactionResponse purchaseTransactionResponse;

            purchaseTransactionResponse = transactionProcessor.DoPayment(requestTx, paymentConfiguration.PaymentGatewayURL);

            // persist response
            bool updateSuccessful = this.VerifyAndPersistPaymentResponse(requestTx, purchaseTransactionResponse);

            return(purchaseTransactionResponse);
        }