public static async Task <SamanCallbackResult> CreateCallbackResultAsync( HttpRequest httpRequest, MessagesOptions messagesOptions, CancellationToken cancellationToken) { var isSuccess = false; string message = null; StringValues referenceId = ""; StringValues transactionId = ""; var securePan = await httpRequest.TryGetParamAsync("SecurePan", cancellationToken).ConfigureAwaitFalse(); var cid = await httpRequest.TryGetParamAsync("CID", cancellationToken).ConfigureAwaitFalse(); var traceNo = await httpRequest.TryGetParamAsync("TraceNo", cancellationToken).ConfigureAwaitFalse(); var rrn = await httpRequest.TryGetParamAsync("RRN", cancellationToken).ConfigureAwaitFalse(); var state = await httpRequest.TryGetParamAsync("state", cancellationToken).ConfigureAwaitFalse(); if (!state.Exists || state.Value.IsNullOrEmpty()) { message = messagesOptions.InvalidDataReceivedFromGateway; } else { var referenceIdResult = await httpRequest.TryGetParamAsync("ResNum", cancellationToken).ConfigureAwaitFalse(); if (referenceIdResult.Exists) { referenceId = referenceIdResult.Value; } var transactionIdResult = await httpRequest.TryGetParamAsync("RefNum", cancellationToken).ConfigureAwaitFalse(); if (transactionIdResult.Exists) { transactionId = transactionIdResult.Value; } isSuccess = state.Value.Equals("OK", StringComparison.OrdinalIgnoreCase); if (!isSuccess) { message = SamanStateTranslator.Translate(state.Value, messagesOptions); } } return(new SamanCallbackResult { IsSucceed = isSuccess, ReferenceId = referenceId, TransactionId = transactionId, SecurePan = securePan.Value, Cid = cid.Value, TraceNo = traceNo.Value, Rrn = rrn.Value, Message = message }); }
public override async Task <VerifyResult> VerifyAsync(GatewayVerifyPaymentContext verifyPaymentContext) { if (verifyPaymentContext == null) { throw new ArgumentNullException(nameof(verifyPaymentContext)); } string state = verifyPaymentContext.RequestParameters.GetAs <string>("state"); if (state.IsNullOrWhiteSpace()) { return(new VerifyResult(Gateway.Saman, string.Empty, string.Empty, VerifyResultStatus.Failed, "Invalid data is received from the gateway.")); } string referenceId = verifyPaymentContext.RequestParameters.GetAs <string>("ResNum"); string transactionId = verifyPaymentContext.RequestParameters.GetAs <string>("RefNum"); IGatewayResultTranslator resultTranslator = new SamanStateTranslator(); var translatedMessage = resultTranslator.Translate(state); var isSuccess = state.Equals("OK", StringComparison.InvariantCultureIgnoreCase); var status = isSuccess ? VerifyResultStatus.Success : VerifyResultStatus.Failed; if (!isSuccess) { return(new VerifyResult(Gateway.Saman, referenceId, transactionId, status, translatedMessage)); } string verifyXml = CreateVerifyXml(SamanConfiguration.MerchantId, transactionId); var result = await WebHelper.SendXmlWebRequestAsync(WebServiceUrl, verifyXml); result = XmlHelper.GetNodeValueFromXml(result, "result"); // This result is actually: TotalAmount // it must be equals to TotalAmount in database. int integerResult = Convert.ToInt32(result); isSuccess = integerResult > 0 && integerResult == verifyPaymentContext.Amount; status = isSuccess ? VerifyResultStatus.Success : VerifyResultStatus.Failed; resultTranslator = new SamanResultTranslator(); translatedMessage = resultTranslator.Translate(integerResult); return(new VerifyResult(Gateway.Saman, referenceId, transactionId, status, translatedMessage)); }
public static async Task <SamanCallbackResult> CreateCallbackResultAsync( HttpRequest httpRequest, MessagesOptions messagesOptions, CancellationToken cancellationToken) { var isSuccess = false; PaymentVerifyResult verifyResult = null; StringValues referenceId; StringValues transactionId; var state = await httpRequest.TryGetParamAsync("state", cancellationToken).ConfigureAwaitFalse(); if (!state.Exists || state.Value.IsNullOrEmpty()) { verifyResult = PaymentVerifyResult.Failed(messagesOptions.InvalidDataReceivedFromGateway); } else { var referenceIdResult = await httpRequest.TryGetParamAsync("ResNum", cancellationToken).ConfigureAwaitFalse(); if (referenceIdResult.Exists) { referenceId = referenceIdResult.Value; } var transactionIdResult = await httpRequest.TryGetParamAsync("RefNum", cancellationToken).ConfigureAwaitFalse(); if (transactionIdResult.Exists) { transactionId = transactionIdResult.Value; } isSuccess = state.Value.Equals("OK", StringComparison.OrdinalIgnoreCase); if (!isSuccess) { var message = SamanStateTranslator.Translate(state.Value, messagesOptions); verifyResult = PaymentVerifyResult.Failed(message); } } return(new SamanCallbackResult { IsSucceed = isSuccess, ReferenceId = referenceId, TransactionId = transactionId, Result = verifyResult }); }
public static SamanCallbackResult CreateCallbackResult(HttpRequest httpRequest, MessagesOptions messagesOptions) { var isSuccess = false; PaymentVerifyResult verifyResult = null; StringValues referenceId; StringValues transactionId; httpRequest.TryGetParam("state", out var state); if (state.IsNullOrEmpty()) { verifyResult = PaymentVerifyResult.Failed(messagesOptions.InvalidDataReceivedFromGateway); } else { httpRequest.TryGetParam("ResNum", out referenceId); httpRequest.TryGetParam("RefNum", out transactionId); isSuccess = state.Equals("OK", StringComparison.OrdinalIgnoreCase); if (!isSuccess) { var message = SamanStateTranslator.Translate(state, messagesOptions); verifyResult = PaymentVerifyResult.Failed(message); } } return(new SamanCallbackResult { IsSucceed = isSuccess, ReferenceId = referenceId, TransactionId = transactionId, Result = verifyResult }); }