public static PaymentRequestResult CreateRequestResult(string webServiceResponse, IHttpContextAccessor httpContextAccessor, MessagesOptions messagesOptions) { 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)); } var transporter = new GatewayPost( httpContextAccessor, PaymentPageUrl, new Dictionary <string, string> { { "RefId", refId } }); return(PaymentRequestResult.Succeed(transporter)); }
public static PaymentRequestResult CreateRequestResult( string webServiceResponse, Invoice invoice, IranKishGatewayAccount account, 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, account.Name)); } var transporter = new GatewayPost( httpContextAccessor, PaymentPageUrl, new Dictionary <string, string> { { "merchantid", account.MerchantId }, { "token", token } }); 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)); } var transporter = new GatewayPost( httpContextAccessor, PaymentPageUrl, new Dictionary <string, string> { { "RefId", splitedResult[1] } }); return(PaymentRequestResult.Succeed(transporter, 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(Invoice invoice, IHttpContextAccessor httpContextAccessor, PasargadGatewayOptions options) { var invoiceDate = GetTimeStamp(DateTime.Now); var timeStamp = invoiceDate; var dataToSign = string.Format("#{0}#{1}#{2}#{3}#{4}#{5}#{6}#{7}#", options.MerchantCode, options.TerminalCode, invoice.TrackingNumber, invoiceDate, (long)invoice.Amount, invoice.CallbackUrl, ActionNumber, timeStamp); var signedData = SignData(options.PrivateKey, dataToSign); var transporter = new GatewayPost( httpContextAccessor, PaymentPageUrl, new Dictionary <string, string> { { "merchantCode", options.MerchantCode }, { "terminalCode", options.TerminalCode }, { "invoiceNumber", invoice.TrackingNumber.ToString() }, { "invoiceDate", invoiceDate }, { "amount", invoice.Amount.ToLongString() }, { "redirectAddress", invoice.CallbackUrl }, { "action", ActionNumber }, { "timeStamp", timeStamp }, { "sign", signedData } }); var result = PaymentRequestResult.Succeed(transporter); result.DatabaseAdditionalData.Add("timeStamp", timeStamp); return(result); }
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()); }