public static PaymentRequestResult CreateRequestResult( string webServiceResponse, IHttpContextAccessor httpContextAccessor, MessagesOptions messagesOptions, GatewayAccount account) { var result = XmlHelper.GetNodeValueFromXml(webServiceResponse, "return"); var arrayResult = result.Split(','); var resCode = arrayResult[0]; var refId = arrayResult.Length > 1 ? arrayResult[1] : string.Empty; var isSucceed = resCode == OkResult; if (!isSucceed) { var message = resCode == DuplicateOrderNumberResult ? messagesOptions.DuplicateTrackingNumber : MellatGatewayResultTranslator.Translate(resCode, messagesOptions); return(PaymentRequestResult.Failed(message, account.Name)); } var transporter = new GatewayPost( httpContextAccessor, PaymentPageUrl, new Dictionary <string, string> { { "RefId", refId } }); return(PaymentRequestResult.Succeed(transporter, account.Name)); }
public static PaymentRequestResult CreateRequestResult( string response, Invoice invoice, AsanPardakhtGatewayAccount account, IHttpContextAccessor httpContextAccessor, MessagesOptions messagesOptions) { var result = XmlHelper.GetNodeValueFromXml(response, "RequestOperationResult", "http://tempuri.org/"); var splitedResult = result.Split(','); var isSucceed = splitedResult.Length == 2 && splitedResult[0] == "0"; string message = null; if (!isSucceed) { message = AsanPardakhtResultTranslator.TranslateRequest(splitedResult[0], messagesOptions); return(PaymentRequestResult.Failed(message, account.Name)); } var transporter = new GatewayPost( httpContextAccessor, PaymentPageUrl, new Dictionary <string, string> { { "RefId", splitedResult[1] } }); return(PaymentRequestResult.Succeed(transporter, account.Name)); }
public static PaymentRequestResult CreateRequestResult( string webServiceResponse, Invoice invoice, IranKishGatewayOptions options, IHttpContextAccessor httpContextAccessor, MessagesOptions messagesOptions) { var result = XmlHelper.GetNodeValueFromXml(webServiceResponse, "result", "http://schemas.datacontract.org/2004/07/Token"); var message = XmlHelper.GetNodeValueFromXml(webServiceResponse, "message", "http://schemas.datacontract.org/2004/07/Token"); var token = XmlHelper.GetNodeValueFromXml(webServiceResponse, "token", "http://schemas.datacontract.org/2004/07/Token"); var isSucceed = result.Equals("true", StringComparison.OrdinalIgnoreCase) && !token.IsNullOrEmpty(); if (!isSucceed) { if (message.IsNullOrEmpty()) { message = messagesOptions.InvalidDataReceivedFromGateway; } return(PaymentRequestResult.Failed(message)); } var transporter = new GatewayPost( httpContextAccessor, PaymentPageUrl, new Dictionary <string, string> { { "merchantid", options.MerchantId }, { "token", token } }); return(PaymentRequestResult.Succeed(transporter)); }
public static PaymentRequestResult CreateRequestResult(MelliApiRequestResult result, IHttpContextAccessor httpContextAccessor, MelliGatewayAccount account, MessagesOptions messagesOptions) { if (result == null) { return(PaymentRequestResult.Failed(messagesOptions.UnexpectedErrorText)); } var isSucceed = result.ResCode == SuccessCode; if (!isSucceed) { string message; if (result.ResCode == DuplicateTrackingNumberCode) { message = messagesOptions.DuplicateTrackingNumber; } else { message = !result.Description.IsNullOrEmpty() ? result.Description : MelliRequestResultTranslator.Translate(result.ResCode, messagesOptions); } return(PaymentRequestResult.Failed(message)); } var paymentPageUrl = $"{PaymentPageUrl}/Index?token={result.Token}"; return(PaymentRequestResult.Succeed(new GatewayRedirect(httpContextAccessor, paymentPageUrl), account.Name)); }
public static PaymentRequestResult CreateRequestResult(string webServiceResponse, HttpContext httpContext, ParsianGatewayAccount account, MessagesOptions messagesOptions) { var token = XmlHelper.GetNodeValueFromXml(webServiceResponse, "Token", "https://pec.Shaparak.ir/NewIPGServices/Sale/SaleService"); var status = XmlHelper.GetNodeValueFromXml(webServiceResponse, "Status", "https://pec.Shaparak.ir/NewIPGServices/Sale/SaleService"); var message = XmlHelper.GetNodeValueFromXml(webServiceResponse, "Message", "https://pec.Shaparak.ir/NewIPGServices/Sale/SaleService"); var isSucceed = !status.IsNullOrEmpty() && status == "0" && !token.IsNullOrEmpty(); if (!isSucceed) { if (message == null) { message = messagesOptions.PaymentFailed; } return(PaymentRequestResult.Failed(message, account.Name)); } var paymentPageUrl = $"{PaymentPageUrl}?Token={token}"; var transporterDescriptor = GatewayTransporterDescriptor.CreateRedirect(paymentPageUrl); var transporter = new DefaultGatewayTransporter(httpContext, transporterDescriptor); var result = PaymentRequestResult.Succeed(transporter, account.Name); result.DatabaseAdditionalData.Add("token", token); return(result); }
public static PaymentRequestResult CreateRequestResult(string response, HttpContext httpContext, ZarinPalGatewayAccount account, MessagesOptions messagesOptions) { var status = XmlHelper.GetNodeValueFromXml(response, "Status", "http://zarinpal.com/"); var authority = XmlHelper.GetNodeValueFromXml(response, "Authority", "http://zarinpal.com/"); var isSucceed = string.Equals(status, NumericOkResult, StringComparison.InvariantCultureIgnoreCase); if (!isSucceed) { var message = ZarinPalStatusTranslator.Translate(status, messagesOptions); return(PaymentRequestResult.Failed(message, account.Name)); } var paymentPageUrl = GetWebPageUrl(account.IsSandbox) + authority; var transporterDescriptor = GatewayTransporterDescriptor.CreateRedirect(paymentPageUrl); var transporter = new DefaultGatewayTransporter(httpContext, transporterDescriptor); return(PaymentRequestResult.Succeed(transporter, account.Name)); }
/// <inheritdoc /> public override async Task <IPaymentRequestResult> RequestAsync(Invoice invoice, CancellationToken cancellationToken = default) { var httpContext = _httpContextAccessor.HttpContext; var account = await GetAccountAsync(invoice).ConfigureAwaitFalse(); var url = $"{httpContext.Request.Scheme}" + "://" + $"{httpContext.Request.Host.ToUriComponent()}" + $"{_options.Value.GatewayPath}"; var transporterDescriptor = GatewayTransporterDescriptor.CreatePost( url, new Dictionary <string, string> { { "CommandType", "request" }, { "trackingNumber", invoice.TrackingNumber.ToString() }, { "amount", ((long)invoice.Amount).ToString() }, { "redirectUrl", invoice.CallbackUrl } }); var transporter = new DefaultGatewayTransporter(httpContext, transporterDescriptor); return(PaymentRequestResult.Succeed(transporter, account.Name)); }
public static PaymentRequestResult CreateRequestResult(string response, IHttpContextAccessor httpContextAccessor, PayIrGatewayAccount account) { var result = JsonConvert.DeserializeObject <PayIrRequestResponseModel>(response); if (!result.IsSucceed) { return(PaymentRequestResult.Failed(result.ErrorMessage, account.Name)); } var paymentPageUrl = $"{PaymentPageUrl}{result.Token}"; return(PaymentRequestResult.Succeed(new GatewayRedirect(httpContextAccessor, paymentPageUrl), account.Name)); }
public static PaymentRequestResult CreateRequestResult(Invoice invoice, IHttpContextAccessor httpContextAccessor, SamanGatewayAccount account) { var transporter = new GatewayPost( httpContextAccessor, PaymentPageUrl, new Dictionary <string, string> { { "Amount", invoice.Amount.ToLongString() }, { "MID", account.MerchantId }, { "ResNum", invoice.TrackingNumber.ToString() }, { "RedirectURL", invoice.CallbackUrl } }); return(PaymentRequestResult.Succeed(transporter, account.Name)); }
public static PaymentRequestResult CreateRequestResult(string response, HttpContext httpContext, PayIrGatewayAccount account) { var result = JsonConvert.DeserializeObject <PayIrRequestResponseModel>(response); if (!result.IsSucceed) { return(PaymentRequestResult.Failed(result.ErrorMessage, account.Name)); } var paymentPageUrl = $"{PaymentPageUrl}{result.Token}"; var transporterDescriptor = GatewayTransporterDescriptor.CreateRedirect(paymentPageUrl); var transporter = new DefaultGatewayTransporter(httpContext, transporterDescriptor); return(PaymentRequestResult.Succeed(transporter, account.Name)); }
public static async Task <PaymentRequestResult> CreateRequestResult( HttpResponseMessage responseMessage, IHttpContextAccessor httpContextAccessor, IdPayGatewayAccount account) { var response = await responseMessage.Content.ReadAsStringAsync().ConfigureAwaitFalse(); if (!responseMessage.IsSuccessStatusCode) { var errorModel = JsonConvert.DeserializeObject <IdPayErrorModel>(response); return(PaymentRequestResult.Failed(errorModel.ToString(), account.Name)); } var result = JsonConvert.DeserializeObject <IdPayRequestResultModel>(response); return(PaymentRequestResult.Succeed(new GatewayRedirect(httpContextAccessor, result.Link), account.Name)); }
public static async Task <PaymentRequestResult> CreateRequestResult( HttpResponseMessage responseMessage, HttpContext httpContext, SepehrGatewayAccount account, MessagesOptions messages) { if (!responseMessage.IsSuccessStatusCode) { return(PaymentRequestResult.Failed($"Operation failed. Http Status: {responseMessage.StatusCode}", account.Name)); } var response = await responseMessage.Content.ReadAsStringAsync().ConfigureAwaitFalse(); var result = JsonConvert.DeserializeObject <TokenResponseModel>(response); if (result == null) { return(PaymentRequestResult.Failed(messages.InvalidDataReceivedFromGateway, account.Name)); } if (result.Status != 0) { var message = SepehrGatewayResultTranslator.Translate(result.Status.ToString(), messages); return(PaymentRequestResult.Failed(message, account.Name)); } if (result.AccessToken.IsNullOrWhiteSpace()) { return(PaymentRequestResult.Failed(messages.InvalidDataReceivedFromGateway, account.Name)); } var transporterDescriptor = GatewayTransporterDescriptor.CreatePost( PaymentPageUrl, new Dictionary <string, string> { { "TerminalID", account.TerminalId.ToString() }, { "token", result.AccessToken } }); var transporter = new DefaultGatewayTransporter(httpContext, transporterDescriptor); return(PaymentRequestResult.Succeed(transporter, account.Name)); }
public static PaymentRequestResult CreateRequestResult(Invoice invoice, HttpContext httpContext, PasargadGatewayAccount account) { var invoiceDate = GetTimeStamp(DateTime.Now); var timeStamp = invoiceDate; var dataToSign = string.Format("#{0}#{1}#{2}#{3}#{4}#{5}#{6}#{7}#", account.MerchantCode, account.TerminalCode, invoice.TrackingNumber, invoiceDate, (long)invoice.Amount, invoice.CallbackUrl, ActionNumber, timeStamp); var signedData = SignData(account.PrivateKey, dataToSign); var transporterDescriptor = GatewayTransporterDescriptor.CreatePost( PaymentPageUrl, new Dictionary <string, string> { { "merchantCode", account.MerchantCode }, { "terminalCode", account.TerminalCode }, { "invoiceNumber", invoice.TrackingNumber.ToString() }, { "invoiceDate", invoiceDate }, { "amount", invoice.Amount.ToLongString() }, { "redirectAddress", invoice.CallbackUrl }, { "action", ActionNumber }, { "timeStamp", timeStamp }, { "sign", signedData } }); var transporter = new DefaultGatewayTransporter(httpContext, transporterDescriptor); var result = PaymentRequestResult.Succeed(transporter, account.Name); result.DatabaseAdditionalData.Add("timeStamp", timeStamp); return(result); }
public static PaymentRequestResult CreateRequestResult( string response, IHttpContextAccessor httpContextAccessor, ZarinPalGatewayAccount account) { var status = XmlHelper.GetNodeValueFromXml(response, "Status", "http://zarinpal.com/"); var authority = XmlHelper.GetNodeValueFromXml(response, "Authority", "http://zarinpal.com/"); var isSucceed = string.Equals(status, OkResult, StringComparison.InvariantCultureIgnoreCase); if (!isSucceed) { var message = $"Error {status}"; return(PaymentRequestResult.Failed(message, account.Name)); } var paymentPageUrl = GetWebPageUrl(account.IsSandbox) + authority; return(PaymentRequestResult.Succeed(new GatewayRedirect(httpContextAccessor, paymentPageUrl), account.Name)); }
public virtual Task <IPaymentRequestResult> RequestAsync(Invoice invoice, CancellationToken cancellationToken = default) { var request = _httpContextAccessor.HttpContext.Request; var url = $"{request.Scheme}" + "://" + $"{request.Host.ToUriComponent()}" + $"{_options.Value.GatewayPath}"; var transporter = new GatewayPost( _httpContextAccessor, url, new Dictionary <string, string> { { "CommandType", "request" }, { "trackingNumber", invoice.TrackingNumber.ToString() }, { "amount", ((long)invoice.Amount).ToString() }, { "redirectUrl", invoice.CallbackUrl } }); return(PaymentRequestResult.Succeed(transporter).ToInterfaceAsync()); }
public static async Task <PaymentRequestResult> CreateRequestResult( HttpResponseMessage responseMessage, HttpContext httpContext, IdPayGatewayAccount account) { var response = await responseMessage.Content.ReadAsStringAsync().ConfigureAwaitFalse(); if (!responseMessage.IsSuccessStatusCode) { var errorModel = JsonConvert.DeserializeObject <IdPayErrorModel>(response); return(PaymentRequestResult.Failed(errorModel.ToString(), account.Name)); } var result = JsonConvert.DeserializeObject <IdPayRequestResultModel>(response); var transporterDescriptor = GatewayTransporterDescriptor.CreateRedirect(result.Link); var transporter = new DefaultGatewayTransporter(httpContext, transporterDescriptor); return(PaymentRequestResult.Succeed(transporter, account.Name)); }