public void GetProcessedPayment_ShouldWork_WhenSignatureIsValidAndPayIsPerformed()
        {
            var merchantParamenters = "eyJEc19EYXRlIjoiMTkvMDgvMjAxNSIsIkRzX0hvdXIiOiIxMjo0OSIsIkRzX0Ftb3VudCI6IjEyMzQ1IiwiRHNfQ3VycmVuY3kiOiI5NzgiLCJEc19PcmRlciI6Ijk5OTkxMTExMjIyMiIsIkRzX01lcmNoYW50Q29kZSI6IjAxMjM0NTYiLCJEc19UZXJtaW5hbCI6IjIiLCJEc19SZXNwb25zZSI6IjAiLCJEc19NZXJjaGFudERhdGEiOiIiLCJEc19TZWN1cmVQYXltZW50IjoiMSIsIkRzX1RyYW5zYWN0aW9uVHlwZSI6IjAiLCJEc19DYXJkX0NvdW50cnkiOiIiLCJEc19BdXRob3Jpc2F0aW9uQ29kZSI6IjAiLCJEc19Db25zdW1lckxhbmd1YWdlIjoiMCIsIkRzX0NhcmRfVHlwZSI6IkQifQ==";
            string merchantKey = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev";
            string platformSignature = "UpSJaiLH6mMZZkXQAyMgImD4LaJZLInbHaN7zzKbYr4=";

            IPaymentResponseService paymentResponseService = new PaymentResponseService();
            ProcessedPayment result = paymentResponseService.GetProcessedPayment(merchantParamenters, merchantKey, platformSignature);

            Assert.IsTrue(result.IsValidSignature == true);
            Assert.IsTrue(result.IsPaymentPerformed.DefaultIfEmpty(false).Single());
            Assert.IsNotNull(result.PaymentResponse);
            Assert.IsTrue(result.PaymentResponse.Ds_Amount == "12345");
            Assert.IsTrue(result.PaymentResponse.Ds_AuthorisationCode == "0");
            Assert.IsTrue(result.PaymentResponse.Ds_Card_Country == "");
            Assert.IsTrue(result.PaymentResponse.Ds_Card_Type == "D");
            Assert.IsTrue(result.PaymentResponse.Ds_ConsumerLanguage == "0");
            Assert.IsTrue(result.PaymentResponse.Ds_Currency == "978");
            Assert.IsTrue(result.PaymentResponse.Ds_Date == "19/08/2015");
            Assert.IsTrue(result.PaymentResponse.Ds_Hour == "12:49");
            Assert.IsTrue(result.PaymentResponse.Ds_MerchantCode == "0123456");
            Assert.IsTrue(result.PaymentResponse.Ds_MerchantData == "");
            Assert.IsTrue(result.PaymentResponse.Ds_Order == "999911112222");
            Assert.IsTrue(result.PaymentResponse.Ds_Response == "0");
            Assert.IsTrue(result.PaymentResponse.Ds_SecurePayment == "1");
            Assert.IsTrue(result.PaymentResponse.Ds_Terminal == "2");
            Assert.IsTrue(result.PaymentResponse.Ds_TransactionType == "0");
        }
        public void GetProcessedPayment_ShouldWork_WhenSignatureIsValidAndPayIsNotPerformed()
        {
            var    merchantParamenters = "eyJEc19EYXRlIjoiMTkvMDgvMjAxNSIsIkRzX0hvdXIiOiIxMjo0OSIsIkRzX0Ftb3VudCI6IjEyMzQ1IiwiRHNfQ3VycmVuY3kiOiI5NzgiLCJEc19PcmRlciI6Ijk5OTkxMTExMjIyMiIsIkRzX01lcmNoYW50Q29kZSI6IjAxMjM0NTYiLCJEc19UZXJtaW5hbCI6IjIiLCJEc19SZXNwb25zZSI6IjEwMSIsIkRzX01lcmNoYW50RGF0YSI6IiIsIkRzX1NlY3VyZVBheW1lbnQiOiIxIiwiRHNfVHJhbnNhY3Rpb25UeXBlIjoiMCIsIkRzX0NhcmRfQ291bnRyeSI6IiIsIkRzX0F1dGhvcmlzYXRpb25Db2RlIjoiMCIsIkRzX0NvbnN1bWVyTGFuZ3VhZ2UiOiIwIiwiRHNfQ2FyZF9UeXBlIjoiRCJ9";
            string merchantKey         = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev";
            string platformSignature   = "iRNNn9pg2j6LIaLtlm15998hp/li7e2ptwVyfmO5JAY=";

            IPaymentResponseService paymentResponseService = new PaymentResponseService();
            ProcessedPayment        result = paymentResponseService.GetProcessedPayment(merchantParamenters, merchantKey, platformSignature);

            Assert.IsTrue(result.IsValidSignature == true);
            Assert.IsFalse(result.IsPaymentPerformed.DefaultIfEmpty(false).Single());
            Assert.IsNotNull(result.PaymentResponse);
            Assert.IsTrue(result.PaymentResponse.Ds_Amount == 123.45M);
            Assert.IsTrue(result.PaymentResponse.Ds_AuthorisationCode == "0");
            Assert.IsTrue(result.PaymentResponse.Ds_Card_Country == "");
            Assert.IsTrue(result.PaymentResponse.Ds_Card_Type == "D");
            Assert.IsTrue(result.PaymentResponse.Ds_ConsumerLanguage == Language.Defect);
            Assert.IsTrue(result.PaymentResponse.Ds_Currency == Currency.EUR);
            Assert.IsTrue(result.PaymentResponse.Ds_Date == "19/08/2015");
            Assert.IsTrue(result.PaymentResponse.Ds_Hour == "12:49");
            Assert.IsTrue(result.PaymentResponse.Ds_MerchantCode == "0123456");
            Assert.IsTrue(result.PaymentResponse.Ds_MerchantData == "");
            Assert.IsTrue(result.PaymentResponse.Ds_Order == "999911112222");
            Assert.IsTrue(result.PaymentResponse.Ds_Response == "101");
            Assert.IsTrue(result.PaymentResponse.Ds_SecurePayment == "1");
            Assert.IsTrue(result.PaymentResponse.Ds_Terminal == "2");
            Assert.IsTrue(result.PaymentResponse.Ds_TransactionType == Enums.TransactionType.Authorization);
        }
        public void GetProcessedPayment_ShouldWork_WhenSignatureIsValidAndPayIsPerformed()
        {
            var    merchantParamenters = "eyJEc19EYXRlIjoiMTkvMDgvMjAxNSIsIkRzX0hvdXIiOiIxMjo0OSIsIkRzX0Ftb3VudCI6IjEyMzQ1IiwiRHNfQ3VycmVuY3kiOiI5NzgiLCJEc19PcmRlciI6Ijk5OTkxMTExMjIyMiIsIkRzX01lcmNoYW50Q29kZSI6IjAxMjM0NTYiLCJEc19UZXJtaW5hbCI6IjIiLCJEc19SZXNwb25zZSI6IjAiLCJEc19NZXJjaGFudERhdGEiOiIiLCJEc19TZWN1cmVQYXltZW50IjoiMSIsIkRzX1RyYW5zYWN0aW9uVHlwZSI6IjAiLCJEc19DYXJkX0NvdW50cnkiOiIiLCJEc19BdXRob3Jpc2F0aW9uQ29kZSI6IjAiLCJEc19Db25zdW1lckxhbmd1YWdlIjoiMCIsIkRzX0NhcmRfVHlwZSI6IkQifQ==";
            string merchantKey         = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev";
            string platformSignature   = "UpSJaiLH6mMZZkXQAyMgImD4LaJZLInbHaN7zzKbYr4=";

            IPaymentResponseService paymentResponseService = new PaymentResponseService();
            ProcessedPayment        result = paymentResponseService.GetProcessedPayment(merchantParamenters, merchantKey, platformSignature);

            Assert.IsTrue(result.IsValidSignature == true);
            Assert.IsTrue(result.IsPaymentPerformed.DefaultIfEmpty(false).Single());
            Assert.IsNotNull(result.PaymentResponse);
            Assert.IsTrue(result.PaymentResponse.Ds_Amount == 123.45M);
            Assert.IsTrue(result.PaymentResponse.Ds_AuthorisationCode == "0");
            Assert.IsTrue(result.PaymentResponse.Ds_Card_Country == "");
            Assert.IsTrue(result.PaymentResponse.Ds_Card_Type == "D");
            Assert.IsTrue(result.PaymentResponse.Ds_ConsumerLanguage == Language.Defect);
            Assert.IsTrue(result.PaymentResponse.Ds_Currency == Currency.EUR);
            Assert.IsTrue(result.PaymentResponse.Ds_Date == "19/08/2015");
            Assert.IsTrue(result.PaymentResponse.Ds_Hour == "12:49");
            Assert.IsTrue(result.PaymentResponse.Ds_MerchantCode == "0123456");
            Assert.IsTrue(result.PaymentResponse.Ds_MerchantData == "");
            Assert.IsTrue(result.PaymentResponse.Ds_Order == "999911112222");
            Assert.IsTrue(result.PaymentResponse.Ds_Response == "0");
            Assert.IsTrue(result.PaymentResponse.Ds_SecurePayment == "1");
            Assert.IsTrue(result.PaymentResponse.Ds_Terminal == "2");
            Assert.IsTrue(result.PaymentResponse.Ds_TransactionType == Enums.TransactionType.Authorization);
        }
        public void GetProcessedPayment_ShouldWork_WhenSignatureIsValidAndPayIsNotPerformed()
        {
            var merchantParamenters = "eyJEc19EYXRlIjoiMTkvMDgvMjAxNSIsIkRzX0hvdXIiOiIxMjo0OSIsIkRzX0Ftb3VudCI6IjEyMzQ1IiwiRHNfQ3VycmVuY3kiOiI5NzgiLCJEc19PcmRlciI6Ijk5OTkxMTExMjIyMiIsIkRzX01lcmNoYW50Q29kZSI6IjAxMjM0NTYiLCJEc19UZXJtaW5hbCI6IjIiLCJEc19SZXNwb25zZSI6IjEwMSIsIkRzX01lcmNoYW50RGF0YSI6IiIsIkRzX1NlY3VyZVBheW1lbnQiOiIxIiwiRHNfVHJhbnNhY3Rpb25UeXBlIjoiMCIsIkRzX0NhcmRfQ291bnRyeSI6IiIsIkRzX0F1dGhvcmlzYXRpb25Db2RlIjoiMCIsIkRzX0NvbnN1bWVyTGFuZ3VhZ2UiOiIwIiwiRHNfQ2FyZF9UeXBlIjoiRCJ9";
            string merchantKey = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev";
            string platformSignature = "iRNNn9pg2j6LIaLtlm15998hp/li7e2ptwVyfmO5JAY=";

            IPaymentResponseService paymentResponseService = new PaymentResponseService();
            ProcessedPayment result = paymentResponseService.GetProcessedPayment(merchantParamenters, merchantKey, platformSignature);

            Assert.IsTrue(result.IsValidSignature == true);
            Assert.IsFalse(result.IsPaymentPerformed.DefaultIfEmpty(false).Single());
            Assert.IsNotNull(result.PaymentResponse);
            Assert.IsTrue(result.PaymentResponse.Ds_Amount == "12345");
            Assert.IsTrue(result.PaymentResponse.Ds_AuthorisationCode == "0");
            Assert.IsTrue(result.PaymentResponse.Ds_Card_Country == "");
            Assert.IsTrue(result.PaymentResponse.Ds_Card_Type == "D");
            Assert.IsTrue(result.PaymentResponse.Ds_ConsumerLanguage == "0");
            Assert.IsTrue(result.PaymentResponse.Ds_Currency == "978");
            Assert.IsTrue(result.PaymentResponse.Ds_Date == "19/08/2015");
            Assert.IsTrue(result.PaymentResponse.Ds_Hour == "12:49");
            Assert.IsTrue(result.PaymentResponse.Ds_MerchantCode == "0123456");
            Assert.IsTrue(result.PaymentResponse.Ds_MerchantData == "");
            Assert.IsTrue(result.PaymentResponse.Ds_Order == "999911112222");
            Assert.IsTrue(result.PaymentResponse.Ds_Response == "101");
            Assert.IsTrue(result.PaymentResponse.Ds_SecurePayment == "1");
            Assert.IsTrue(result.PaymentResponse.Ds_Terminal == "2");
            Assert.IsTrue(result.PaymentResponse.Ds_TransactionType == "0");
        }
        public void GetProcessedPayment_ShouldWork_WhenSignatureIsNotValid()
        {
            var    merchantParamenters = "eyJEc19EYXRlIjoiMTkvMDgvMjAxNSIsIkRzX0hvdXIiOiIxMjo0OSIsIkRzX0Ftb3VudCI6IjEyMzQ1IiwiRHNfQ3VycmVuY3kiOiI5NzgiLCJEc19PcmRlciI6Ijk5OTkxMTExMjIyMiIsIkRzX01lcmNoYW50Q29kZSI6IjAxMjM0NTYiLCJEc19UZXJtaW5hbCI6IjIiLCJEc19SZXNwb25zZSI6IjAiLCJEc19NZXJjaGFudERhdGEiOiIiLCJEc19TZWN1cmVQYXltZW50IjoiMSIsIkRzX1RyYW5zYWN0aW9uVHlwZSI6IjAiLCJEc19DYXJkX0NvdW50cnkiOiIiLCJEc19BdXRob3Jpc2F0aW9uQ29kZSI6IjAiLCJEc19Db25zdW1lckxhbmd1YWdlIjoiMCIsIkRzX0NhcmRfVHlwZSI6IkQifQ==";
            string merchantKey         = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev";
            string platformSignature   = "xxxxxx";

            IPaymentResponseService paymentResponseService = new PaymentResponseService();
            ProcessedPayment        result = paymentResponseService.GetProcessedPayment(merchantParamenters, merchantKey, platformSignature);

            Assert.IsTrue(result.IsValidSignature == false);
            Assert.IsFalse(result.IsPaymentPerformed.Any());
        }
        public void GetProcessedPayment_ShouldWork_WhenSignatureIsNotValid()
        {
            var merchantParamenters = "eyJEc19EYXRlIjoiMTkvMDgvMjAxNSIsIkRzX0hvdXIiOiIxMjo0OSIsIkRzX0Ftb3VudCI6IjEyMzQ1IiwiRHNfQ3VycmVuY3kiOiI5NzgiLCJEc19PcmRlciI6Ijk5OTkxMTExMjIyMiIsIkRzX01lcmNoYW50Q29kZSI6IjAxMjM0NTYiLCJEc19UZXJtaW5hbCI6IjIiLCJEc19SZXNwb25zZSI6IjAiLCJEc19NZXJjaGFudERhdGEiOiIiLCJEc19TZWN1cmVQYXltZW50IjoiMSIsIkRzX1RyYW5zYWN0aW9uVHlwZSI6IjAiLCJEc19DYXJkX0NvdW50cnkiOiIiLCJEc19BdXRob3Jpc2F0aW9uQ29kZSI6IjAiLCJEc19Db25zdW1lckxhbmd1YWdlIjoiMCIsIkRzX0NhcmRfVHlwZSI6IkQifQ==";
            string merchantKey = "Mk9m98IfEblmPfrpsawt7BmxObt98Jev";
            string platformSignature = "xxxxxx";

            IPaymentResponseService paymentResponseService = new PaymentResponseService();
            ProcessedPayment result = paymentResponseService.GetProcessedPayment(merchantParamenters, merchantKey, platformSignature);

            Assert.IsTrue(result.IsValidSignature == false);
            Assert.IsFalse(result.IsPaymentPerformed.Any());
        }
        // GET: Response
        public ActionResult Index()
        {
            LogToFile(String.Format("Date: {0}", DateTime.Now));

            try
            {
                var paymentResponseService = new PaymentResponseService();

                var merchantParameters = Convert.ToString(Request["Ds_MerchantParameters"]);
                var merchantKey        = ConfigurationManager.AppSettings["MerchantKey"];
                var platformSignature  = Convert.ToString(Request["Ds_Signature"]);

                var processedPayment = paymentResponseService.GetProcessedPayment(merchantParameters, merchantKey, platformSignature);

                LogToFile(String.Format("IsValidSignature: {0}", processedPayment.IsValidSignature));
                LogToFile(String.Format("IsPaymentPerformed: {0}", processedPayment.IsPaymentPerformed.DefaultIfEmpty(false).Single()));
                LogToFile(String.Format("PaymentResponse.Ds_Response: {0}", processedPayment.PaymentResponse.Ds_Response));
                LogToFile(String.Format("PaymentResponse.Ds_Order: {0}", processedPayment.PaymentResponse.Ds_Order));

                if (processedPayment.IsValidSignature)
                {
                    // Signature is correct, the request come from trusted source

                    if (processedPayment.IsPaymentPerformed.DefaultIfEmpty(false).Single())
                    {
                        // Payment accepted: success
                        // Update the order on database, etc
                        LogToFile("PAGO REALIZADO CORRECTAMENTE");
                    }
                    else
                    {
                        // Payment rejected: fail
                        // Update the order on database, etc
                        LogToFile("PAGO NO REALIZADO");
                    }
                }
                else
                {
                    // Signature is not valid, the request come from untrusted source
                }
            }
            catch (Exception ex)
            {
                LogToFile(String.Format("Error: {0}", ex.Message));
            }

            LogToFile("---");



            return(View());
        }
示例#8
0
        // GET: Response
        public ActionResult Index()
        {
            LogToFile(String.Format("Date: {0}", DateTime.Now));

            try
            {
                var paymentResponseService = new PaymentResponseService();

                var merchantParameters = Convert.ToString(Request["Ds_MerchantParameters"]);
                var merchantKey = ConfigurationManager.AppSettings["MerchantKey"];
                var platformSignature = Convert.ToString(Request["Ds_Signature"]);

                var processedPayment = paymentResponseService.GetProcessedPayment(merchantParameters, merchantKey, platformSignature);

                LogToFile(String.Format("IsValidSignature: {0}", processedPayment.IsValidSignature));
                LogToFile(String.Format("IsPaymentPerformed: {0}", processedPayment.IsPaymentPerformed.DefaultIfEmpty(false).Single()));
                LogToFile(String.Format("PaymentResponse.Ds_Response: {0}", processedPayment.PaymentResponse.Ds_Response));
                LogToFile(String.Format("PaymentResponse.Ds_Order: {0}", processedPayment.PaymentResponse.Ds_Order));

                if (processedPayment.IsValidSignature)
                {
                    // Signature is correct, the request come from trusted source

                    if (processedPayment.IsPaymentPerformed.DefaultIfEmpty(false).Single())
                    {
                        // Payment accepted: success
                        // Update the order on database, etc
                        LogToFile("PAGO REALIZADO CORRECTAMENTE");
                    }
                    else
                    {
                        // Payment rejected: fail
                        // Update the order on database, etc
                        LogToFile("PAGO NO REALIZADO");
                    }
                }
                else
                {
                    // Signature is not valid, the request come from untrusted source
                }
            }
            catch (Exception ex)
            {
                LogToFile(String.Format("Error: {0}", ex.Message));
            }

            LogToFile("---");

            return View();
        }
示例#9
0
        // GET: Response
        public ActionResult Index()
        {
            var model = new ResponseViewModel();

            LogToFile(String.Format("Date: {0}", DateTime.Now));

            try
            {
                var secrets = _configuration.GetSection("Secrets");

                var paymentResponseService = new PaymentResponseService();

                var merchantParameters = Convert.ToString(this.Request.Query["Ds_MerchantParameters"]);
                var merchantKey        = secrets["key"];
                var platformSignature  = Convert.ToString(this.Request.Query["Ds_Signature"]);

                var processedPayment = paymentResponseService.GetProcessedPayment(merchantParameters, merchantKey, platformSignature);

                LogToFile(String.Format("IsValidSignature: {0}", processedPayment.IsValidSignature));
                LogToFile(String.Format("IsPaymentPerformed: {0}", processedPayment.IsPaymentPerformed.DefaultIfEmpty(false).Single()));
                merchantParameters = merchantParameters.Replace('-', '+').Replace('_', '/');
                var json = WebUtility.UrlDecode(Base64.DecodeUtf8From64(merchantParameters));
                LogToFile(json);
                LogToFile(String.Format("PaymentResponse.Ds_Response: {0}", processedPayment.PaymentResponse.Ds_Response));
                LogToFile(String.Format("PaymentResponse.Ds_Order: {0}", processedPayment.PaymentResponse.Ds_Order));


                if (processedPayment.IsValidSignature)
                {
                    // Signature is correct, the request come from trusted source

                    if (processedPayment.IsPaymentPerformed.DefaultIfEmpty(false).Single())
                    {
                        // Payment accepted: success
                        // Update the order on database, etc
                        LogToFile("PAGO REALIZADO CORRECTAMENTE");
                    }
                    else
                    {
                        // Payment rejected: fail
                        // Update the order on database, etc
                        LogToFile("PAGO NO REALIZADO");
                    }
                }
                else
                {
                    // Signature is not valid, the request come from untrusted source
                }
                LogToFile("---");

                model = new ResponseViewModel()
                {
                    AuthorisationCode = processedPayment.PaymentResponse.Ds_AuthorisationCode,
                    Date       = DateTime.Parse($"{processedPayment.PaymentResponse.Ds_Date} {processedPayment.PaymentResponse.Ds_Hour}"),
                    Amount     = processedPayment.PaymentResponse.Ds_Amount,
                    CardNumber = processedPayment.PaymentResponse.Ds_Card_Number,
                    ExpiryDate = processedPayment.PaymentResponse.Ds_ExpiryDate
                };
            }
            catch (Exception ex)
            {
                LogToFile(String.Format("Error: {0}", ex.Message));
            }
            return(View(model));
        }