public ActionResult IPNHandler()
		{
			Debug.WriteLine("PayUMea Standard IPN: {0}".FormatWith(Request.ContentLength));

			var provider = _paymentService.LoadPaymentMethodBySystemName("Payments.PayUMeaStandard", true);
			var processor = provider != null ? provider.Value as PayUMeaStandardProvider : null;
			if (processor == null)
				throw new SmartException(_localizationService.GetResource("Plugins.Payments.PayUMeaStandard.NoModuleLoading"));


			var ueasyPaymentSettings = _services.Settings.LoadSetting<PayUMeaStandardPaymentSettings>();
			var runPayUcomms = new RunPayUComms(ueasyPaymentSettings.Username, ueasyPaymentSettings.Password, ueasyPaymentSettings.ApiUrl, ueasyPaymentSettings.SafeKey, "ONE_ZERO");
			var transactionRequest1 = new GetTransactionRequest
			{
				PayUReference = Request.QueryString["payUReference"]
			};
			var transaction = runPayUcomms.GetTransaction(transactionRequest1);
			var orderByNumber = _orderService.GetOrderByNumber(Request.QueryString["orderId"]);
			switch (transaction.TransactionState)
			{
				case "RESERVE":
					orderByNumber.AuthorizationTransactionId = Request.QueryString["payUReference"];
					_orderService.UpdateOrder(orderByNumber);
					_orderProcessingService.MarkAsAuthorized(orderByNumber);
					break;
				case "RESERVE_CANCEL":
					orderByNumber.AuthorizationTransactionId = Request.QueryString["payUReference"];
					_orderService.UpdateOrder(orderByNumber);
					_orderProcessingService.CancelOrder(orderByNumber, true);
					break;
				case "PAYMENT":
					orderByNumber.AuthorizationTransactionId = Request.QueryString["payUReference"];
					_orderService.UpdateOrder(orderByNumber);
					_orderProcessingService.MarkOrderAsPaid(orderByNumber);
					break;
				case "FINALIZE":
					orderByNumber.AuthorizationTransactionId = Request.QueryString["payUReference"];
					_orderService.UpdateOrder(orderByNumber);
					_orderProcessingService.MarkOrderAsPaid(orderByNumber);
					break;
			}
			return Content("");
		}
        public GetTransactionResult GetTransaction(GetTransactionRequest request)
        {
            try
            {
                var result = _client.getTransaction(_api, _safeKey, new additionalInfo
                    {
                        payUReference = request.PayUReference
                    });
                return new GetTransactionResult
                {
                    IsTransactionSuccessfull = result.successful,
                    TransactionState = result.transactionStateSpecified ? result.transactionState.ToString() : "Unknown",
                    DisplayMessage = result.displayMessage,
                    ErrorMessage = result.resultMessage,
                    PayUReference = result.payUReference,
                    RequestTrace = result.requestTrace,
                    ResultCode = result.resultCode
                };
            }
            catch (Exception ex)
            {

                return new GetTransactionResult
                {
                    IsTransactionSuccessfull = false,
                    DisplayMessage = "An Error Occurred while processing your transaction",
                    ErrorMessage = ex.Message
                };
            }
        }