public static PaymentRequestResult CreateRequestResult( string webServiceResponse, Invoice invoice, IranKishGatewayAccount account, HttpContext httpContext, 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 transporterDescriptor = GatewayTransporterDescriptor.CreatePost( PaymentPageUrl, new Dictionary <string, string> { { "merchantid", account.MerchantId }, { "token", token } }); 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, 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 async Task <PaymentRequestResult> CreateRequestResult( HttpResponseMessage responseMessage, HttpContext httpContext, YekPayGatewayAccount account, YekPayGatewayOptions gatewayOptions, MessagesOptions optionsMessages) { var message = await responseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject <YekPayResponseModel>(message); if (response == null) { return(PaymentRequestResult.Failed(optionsMessages.InvalidDataReceivedFromGateway, account.Name)); } if (response.Code != SuccessCode) { var failureMessage = response.Description ?? optionsMessages.UnexpectedErrorText; return(PaymentRequestResult.Failed(failureMessage, account.Name)); } var paymentPageUrl = gatewayOptions.PaymentPageUrl + response.Authority; var result = PaymentRequestResult.SucceedWithRedirect(account.Name, httpContext, paymentPageUrl); result.DatabaseAdditionalData.Add(AuthorityAdditionalDataKey, response.Authority); return(result); }
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, account.Name)); } var paymentPageUrl = $"{PaymentPageUrl}/Index?token={result.Token}"; return(PaymentRequestResult.Succeed(new GatewayRedirect(httpContextAccessor, paymentPageUrl), account.Name)); }
public void CreateSimplePaymentRequestWithCardHolderData() { PaymentRequestRequest paymentRequest = new PaymentRequestRequest() { Terminal = GatewayConstants.terminal, ShopOrderId = "payment-req-" + Guid.NewGuid().ToString(), Amount = Amount.Get(42.34, Currency.EUR), CustomerInfo = { CardHolder = new CardHolderData { Name = "Test Cardholder", Email = "*****@*****.**", HomePhone = "00011122", WorkPhone = "00011133", MobilePhone = "00011144" } } }; PaymentRequestResult result = _api.CreatePaymentRequest(paymentRequest); Assert.AreEqual(Result.Success, result.Result); Assert.IsNotEmpty(result.PaymentRequestId); //System.Diagnostics.Process.Start(result.Url); }
public void DoNotSendBothTaxAmountAndTaxPercent() { PaymentRequestRequest paymentRequest = new PaymentRequestRequest() { Terminal = GatewayConstants.terminal, ShopOrderId = "payment-req-" + Guid.NewGuid().ToString(), Amount = Amount.Get(5056.93, Currency.EUR), Type = AuthType.payment, // Orderlines OrderLines = { new PaymentOrderLine() { Description = "The Item Desc", ItemId = "itemId1", Quantity = 10, TaxPercent = 10, UnitCode = "unitCode", UnitPrice = 500, Discount = 0.00, GoodsType = GoodsType.Item, }, } }; // And make the actual invocation. PaymentRequestResult result = _api.CreatePaymentRequest(paymentRequest); Assert.AreEqual(null, result.ResultMerchantMessage); Assert.AreEqual(Result.Success, result.Result); Assert.IsNotEmpty(result.Url); Assert.IsNotEmpty(result.DynamicJavascriptUrl); Assert.IsNotEmpty(result.PaymentRequestId); }
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, HttpContext httpContext, MellatGatewayOptions gatewayOptions, 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)); } return(PaymentRequestResult.SucceedWithPost( account.Name, httpContext, gatewayOptions.PaymentPageUrl, new Dictionary <string, string> { { "RefId", refId } })); }
public async Task <PaymentRequestResult> PaymentRequestAsync(PaymentRequestConfig requestConfig) { var zp = GetService(); var paymentRequestRequest = GetPaymentRequestRequest(requestConfig); var response = await zp.PaymentRequestAsync(paymentRequestRequest); await zp.CloseAsync(); CheckStatus(response); var authority = response.Body.Authority; var paymentId = await zarinPalPaymentRepository.InsertAsync(requestConfig.Amount, authority); var paymentUrl = paymentUrlBase + authority; var result = new PaymentRequestResult() { PaymentId = paymentId, PaymentURL = paymentUrl }; return(result); }
public static async Task <PaymentRequestResult> CreateRequestResult( HttpResponseMessage responseMessage, HttpContext httpContext, ZibalGatewayAccount account, ZibalGatewayOptions gatewayOptions, MessagesOptions messagesOptions) { var message = await responseMessage.Content.ReadAsStringAsync(); var response = JsonConvert.DeserializeObject <ZibalResponseModel>(message); if (response == null) { return(PaymentRequestResult.Failed(messagesOptions.InvalidDataReceivedFromGateway, account.Name)); } if (response.Result != SuccessCode) { var failureMessage = ZibalTranslator.TranslateResult(response.Result) ?? response.Message ?? messagesOptions.PaymentFailed; return(PaymentRequestResult.Failed(failureMessage, account.Name, response.Result.ToString())); } var paymentPageUrl = string.IsNullOrEmpty(response.PayLink) ? GetPaymentPageUrl(gatewayOptions.PaymentPageUrl, response.TrackId) : response.PayLink; var result = PaymentRequestResult.SucceedWithRedirect(account.Name, httpContext, paymentPageUrl); result.DatabaseAdditionalData.Add(TrackIdAdditionalDataKey, response.TrackId.ToString()); return(result); }
public static PaymentRequestResult CreateRequestResult( string response, AsanPardakhtGatewayAccount account, HttpContext httpContext, AsanPardakhtGatewayOptions gatewayOptions, MessagesOptions messagesOptions) { var result = XmlHelper.GetNodeValueFromXml(response, "RequestOperationResult", "http://tempuri.org/"); var splitedResult = result.Split(','); var isSucceed = splitedResult.Length == 2 && splitedResult[0] == "0"; if (!isSucceed) { var message = AsanPardakhtResultTranslator.TranslateRequest(splitedResult[0], messagesOptions); return(PaymentRequestResult.Failed(message, account.Name)); } return(PaymentRequestResult.SucceedWithPost( account.Name, httpContext, gatewayOptions.PaymentPageUrl, new Dictionary <string, string> { { "RefId", splitedResult[1] } })); }
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)); }
public static PaymentRequestResult CreateRequestResult(string webServiceResponse, IHttpContextAccessor httpContextAccessor, 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)); } var paymentPageUrl = $"{PaymentPageUrl}?Token={token}"; var result = new PaymentRequestResult { IsSucceed = true, GatewayTransporter = new GatewayRedirect(httpContextAccessor, paymentPageUrl) }; result.DatabaseAdditionalData.Add("token", token); return(result); }
public static PaymentRequestResult CreateRequestResult( string webServiceResponse, HttpContext httpContext, ParsianGatewayAccount account, ParsianGatewayOptions gatewayOptions, 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 = $"{gatewayOptions.PaymentPageUrl}?Token={token}"; var result = PaymentRequestResult.SucceedWithRedirect(account.Name, httpContext, paymentPageUrl); result.DatabaseAdditionalData.Add("token", token); return(result); }
[Test] // Not really a unit test, just a Klarna calling example public static void Main() { String orderId = "Example_Klarna_" + new Random().Next(); CustomerAddress address = new CustomerAddress { Address = "Sæffleberggate 56,1 mf", City = "Varde", Country = "DK", Firstname = "Testperson-dk", Lastname = "Approved", Region = "DK", PostalCode = "6800" }; PaymentRequestRequest request = new PaymentRequestRequest { ShopOrderId = orderId, Terminal = "AltaPay Klarna DK", Amount = Amount.Get(5.5, Currency.DKK), Type = AuthType.payment, CustomerInfo = new CustomerInfo { Email = "*****@*****.**", Username = "******", CustomerPhone = "20123456", BankName = "My Bank", BankPhone = "+45 12-34 5678", BillingAddress = address, ShippingAddress = address } }; request.OrderLines = new List <PaymentOrderLine> { new PaymentOrderLine { Description = "description 1", ItemId = "id 01", Quantity = 1, UnitPrice = 1.1, GoodsType = GoodsType.Item }, new PaymentOrderLine { Description = "description 2", ItemId = "id 02", Quantity = 2, UnitPrice = 2.2, GoodsType = GoodsType.Item } }; PaymentRequestResult result = _api.CreatePaymentRequest(request); // Access the url below and use the social security number 0801363945 in the page form to complete the Klarna order System.Console.WriteLine(result.Url); }
/// <summary> /// Example for performing simple create payment request with Agreement. /// </summary> public void CreateSimplePaymentRequestWithAgreement() { //dedicated terminal on the gateway string terminal = "AltaPay Dev Terminal"; //Instantiation of the payment request class //this class is used for forwarding all the data needed for create payment request //For simple payment request required properties to be set are gateway terminal, shop order ID //and amount along with currency PaymentRequestRequest paymentRequest = new PaymentRequestRequest { Terminal = terminal, ShopOrderId = "AGREEMENTS_UI_csharp_example_payment-req-" + Guid.NewGuid().ToString(), Amount = Amount.Get(777.77, Currency.EUR), //set the properties for redirection URLs //where user should be redirected after submitting payment on the gateway Config = new PaymentRequestConfig { CallbackFormUrl = "http://demoshop.pensio.com/Form", CallbackOkUrl = "http://demoshop.pensio.com/Ok", CallbackFailUrl = "http://demoshop.pensio.com/Fail", CallbackRedirectUrl = "http://demoshop.pensio.com/Redirect", CallbackNotificationUrl = "http://demoshop.pensio.com/Notification", CallbackOpenUrl = "http://demoshop.pensio.com/Open", CallbackVerifyOrderUrl = "http://demoshop.pensio.com/VerifyOrder" }, AgreementConfig = new AgreementConfig { AgreementType = AgreementType.unscheduled, AgreementUnscheduledType = AgreementUnscheduledType.incremental } }; //execute create payment method PaymentRequestResult paymentRequestResult = _api.CreatePaymentRequest(paymentRequest); //Result property contains information if the request was successful or not if (paymentRequestResult.Result == Result.Success) { //URL to the payment form page to redirect user string paymentFormURL = paymentRequestResult.Url; //Payment request ID returned from the gateway string paymentRequestId = paymentRequestResult.PaymentRequestId; } else { //error messages contain information about what went wrong string errorMerchantMessage = paymentRequestResult.ResultMerchantMessage; string errorMessage = paymentRequestResult.ResultMessage; } }
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(string response, HttpContext httpContext, PayIrGatewayAccount account, PayIrGatewayOptions gatewayOptions) { var result = JsonConvert.DeserializeObject <PayIrRequestResponseModel>(response); if (!result.IsSucceed) { return(PaymentRequestResult.Failed(result.ErrorMessage, account.Name)); } var paymentPageUrl = $"{gatewayOptions.PaymentPageUrl}{result.Token}"; return(PaymentRequestResult.SucceedWithRedirect(account.Name, httpContext, paymentPageUrl)); }
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)); }
/// <summary> /// /// </summary> /// <param name="input"></param> /// <returns></returns> public static PaymentRequestResult ToPaymentResult(this MellatPaymentResult input) { var result = new PaymentRequestResult { PaymentPageUrl = PaymentPageUrl, Message = input.Message, Token = input.RefId }; if (input.Success) { result.Status = PaymentRequestStatus.Succeeded; } return(result); }
private static async Task <PaymentRequestResult> CreateMobilePaymentRequest( Invoice invoice, HttpContext httpContext, SamanGatewayAccount account, HttpClient httpClient, SamanGatewayOptions gatewayOptions, MessagesOptions messagesOptions, CancellationToken cancellationToken) { var data = new SamanMobilePaymentTokenRequest { TerminalId = account.MerchantId, ResNum = invoice.TrackingNumber.ToString(), Amount = invoice.Amount, RedirectUrl = invoice.CallbackUrl, Action = "Token" }; var responseMessage = await httpClient.PostJsonAsync(gatewayOptions.MobileApiTokenUrl, data, cancellationToken); var response = await responseMessage.Content.ReadAsStringAsync(); var tokenResponse = JsonConvert.DeserializeObject <SamanMobilePaymentTokenResponse>(response); if (tokenResponse == null) { var message = $"{messagesOptions.InvalidDataReceivedFromGateway} Serialized token response is null."; return(PaymentRequestResult.Failed(message, account.Name)); } if (tokenResponse.Status == -1) { return(PaymentRequestResult.Failed(tokenResponse.GetError(), account.Name)); } var result = PaymentRequestResult.SucceedWithPost( account.Name, httpContext, gatewayOptions.MobilePaymentPageUrl, new Dictionary <string, string> { { "Token", tokenResponse.Token } }); result.DatabaseAdditionalData.Add(MobileGatewayKey, true.ToString()); return(result); }
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)); }
private static async Task <PaymentRequestResult> CreateWebPaymentRequest( Invoice invoice, HttpContext httpContext, SamanGatewayAccount account, HttpClient httpClient, SamanGatewayOptions gatewayOptions, MessagesOptions messagesOptions, CancellationToken cancellationToken) { var data = CreateTokenRequest(invoice, account); var responseMessage = await httpClient.PostXmlAsync(gatewayOptions.WebApiTokenUrl, data, cancellationToken); var response = await responseMessage.Content.ReadAsStringAsync(); var token = XmlHelper.GetNodeValueFromXml(response, "result"); string message = null; var isSucceed = true; if (token.IsNullOrEmpty()) { message = $"{messagesOptions.InvalidDataReceivedFromGateway} Token is null or empty."; isSucceed = false; } else if (long.TryParse(token, out var longToken) && longToken < 0) { message = SamanResultTranslator.Translate(longToken, messagesOptions); isSucceed = false; } if (!isSucceed) { return(PaymentRequestResult.Failed(message, account.Name)); } return(PaymentRequestResult.SucceedWithPost( account.Name, httpContext, gatewayOptions.WebPaymentPageUrl, new Dictionary <string, string> { { "Token", token }, { "RedirectURL", invoice.CallbackUrl } })); }
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 PaymentRequestResult CreateRequestResult( Invoice invoice, HttpContext httpContext, PasargadGatewayAccount account, IPasargadCrypto crypto, PasargadGatewayOptions gatewayOptions) { 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 = crypto.Encrypt(account.PrivateKey, dataToSign); var result = PaymentRequestResult.SucceedWithPost( account.Name, httpContext, gatewayOptions.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 } }); result.DatabaseAdditionalData.Add("timeStamp", timeStamp); return(result); }
public static PaymentRequestResult CreateRequestResult( string webServiceResponse, Invoice invoice, HttpContext httpContext, MellatGatewayOptions gatewayOptions, 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 form = new Dictionary <string, string> { { "RefId", refId } }; var additionalData = invoice.GetMellatAdditionalData(); if (!string.IsNullOrWhiteSpace(additionalData?.MobileNumber)) { form.Add("MobileNo", additionalData.MobileNumber); } return(PaymentRequestResult.SucceedWithPost( account.Name, httpContext, gatewayOptions.PaymentPageUrl, form)); }
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 void CreateSimplePaymentRequest() { PaymentRequestRequest paymentRequest = new PaymentRequestRequest() { Terminal = GatewayConstants.terminal, ShopOrderId = "payment-req-" + Guid.NewGuid().ToString(), Amount = Amount.Get(42.34, Currency.EUR), }; PaymentRequestResult result = _api.CreatePaymentRequest(paymentRequest); Assert.AreEqual(null, result.ResultMerchantMessage); Assert.AreEqual(Result.Success, result.Result); Assert.IsNotEmpty(result.Url); Assert.IsNotEmpty(result.DynamicJavascriptUrl); Assert.IsNotEmpty(result.PaymentRequestId); //System.Diagnostics.Process.Start(result.Url); }
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)); }