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()); }
// 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()); }
// 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(); }
// 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)); }