public void VerifyGeneratedChecksum() { // Arrange var payGateReturn = new PayGateReturn(); payGateReturn.SetPassPhrase("secret"); Dictionary <string, string> formCollection = new Dictionary <string, string>(); formCollection.Add("PAYGATE_ID", "10011072130"); formCollection.Add("PAY_REQUEST_ID", "26F1EE9D-FB68-D6C2-5D36-ADA8C5F88BC9"); formCollection.Add("TRANSACTION_STATUS", "1"); formCollection.Add("REFERENCE", "PayGate Test"); payGateReturn.FromFormCollection(formCollection); // Act var checksum = payGateReturn.GetCalculatedChecksum(formCollection["PAYGATE_ID"], formCollection["PAY_REQUEST_ID"], formCollection["REFERENCE"]); // Assert Assert.AreEqual("2fae4c5cde9ac8ed70f769c3ff843d72", checksum); }
public ActionResult Return([ModelBinder(typeof(PayGateReturnModelBinder))] PayGateReturn payGateReturnViewModel) { payGateReturnViewModel.SetPassPhrase(payGateSettings.PayGateKey); var calculatedChecksum = payGateReturnViewModel.GetCalculatedChecksum(payGateSettings.PayGateID, Session["PAY_REQUEST_ID"].ToString(), Session["REFERENCE"].ToString()); if (calculatedChecksum != payGateReturnViewModel.CHECKSUM) { // TODO: Add proper error handling. Error model? return(View("Error")); } string message = string.Empty; switch (payGateReturnViewModel.TRANSACTION_STATUS) { case TransactionStatus.NotDone: message = "Transaction not completed. Please try again."; break; case TransactionStatus.Approved: return(View("Success")); case TransactionStatus.Declined: message = "Transaction declined. Please try again."; break; case TransactionStatus.Cancelled: message = "Transaction has been cancelled. Please try again."; break; case TransactionStatus.UserCancelled: message = "Transaction has been cancelled by the user."; break; } ViewBag.Message = message; return(View("Failure")); }
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { try { if (bindingContext == null) { throw new ArgumentNullException(nameof(bindingContext)); } var formCollection = controllerContext.HttpContext.Request.Form; if (formCollection == null || formCollection.Count < 1) { return(null); } var properties = new Dictionary <string, string>(); foreach (string key in formCollection.Keys) { var value = formCollection.Get(key); properties.Add(key: key, value: value); } var model = new PayGateReturn(); model.FromFormCollection(properties); return(model); } catch (Exception ex) { // TODO: Handle exception return(null); } }