public PaymentRequest CreatePaymentRequest(OrderInfo orderInfo) { var paymentProvider = PaymentProvider.GetPaymentProvider(orderInfo.PaymentInfo.Id, orderInfo.StoreInfo.Alias); var returnUrl = paymentProvider.SuccessUrl(); var cancelUrl = paymentProvider.ErrorUrl(); var reportUrl = paymentProvider.ReportUrl(); var accountId = paymentProvider.GetSetting("accountId"); var siteId = paymentProvider.GetSetting("siteId"); var siteSecureId = paymentProvider.GetSetting("siteSecureId"); var testURL = paymentProvider.GetSetting("testURL"); var liveUrl = paymentProvider.GetSetting("url"); #region fill transactionrequest object var transactionRequest = new TransactionRequest { AccountId = long.Parse(accountId), SiteId = long.Parse(siteId), SiteSecureId = long.Parse(siteSecureId), NotificationUrl = reportUrl, CancelUrl = cancelUrl, RedirectUrl = returnUrl, Locale = orderInfo.StoreInfo.CultureInfo.TwoLetterISOLanguageName + "_" + orderInfo.CustomerInfo.CountryCode, IPAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"], ForwardedIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"], FirstName = OrderHelper.CustomerInformationValue(orderInfo, "customerFirstName"), LastName = OrderHelper.CustomerInformationValue(orderInfo, "customerLastName"), Country = OrderHelper.CustomerInformationValue(orderInfo, "customerCountry"), Email = OrderHelper.CustomerInformationValue(orderInfo, "customerEmail") }; var amount = orderInfo.ChargedAmountInCents; transactionRequest.TransactionId = orderInfo.UniqueOrderId.ToString(); transactionRequest.Currency = orderInfo.StoreInfo.Store.CurrencyCultureSymbol; transactionRequest.Amount = amount; transactionRequest.Decription = orderInfo.OrderNumber; transactionRequest.Gateway = orderInfo.PaymentInfo.MethodId; var stringToHash = amount + transactionRequest.Currency + transactionRequest.AccountId + transactionRequest.SiteId + transactionRequest.TransactionId; transactionRequest.Signature = GetMd5Sum(stringToHash); #endregion var apiURL = paymentProvider.TestMode ? testURL : liveUrl; var httpWebRequest = (HttpWebRequest)WebRequest.Create(apiURL); httpWebRequest.Method = "POST"; httpWebRequest.ContentLength = Encoding.UTF8.GetByteCount(transactionRequest.GetXml()); httpWebRequest.ContentType = "application/x-www-form-urlencoded"; Log.Instance.LogDebug("MultiSafePay GetAllPaymentMethods transactionRequest GetXml: " + HttpUtility.HtmlEncode(transactionRequest.GetXml())); var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()); streamWriter.Write(transactionRequest.GetXml()); streamWriter.Close(); var httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); var streamReader = new StreamReader(httpWebResponse.GetResponseStream()); //<?xml version="1.0" encoding="UTF-8" ?> //<redirecttransaction result="ok"> // <transaction> // <id>4084044</id> // <payment_url>https://user.multisafepay.com/pay/?trans...</payment_url> // </transaction> //</redirecttransaction> var xmlDoc = XDocument.Parse(streamReader.ReadToEnd()); Log.Instance.LogDebug("MultiSafePay xmlDoc: " + xmlDoc); if (xmlDoc.Root == null) { return(null); } var transaction = xmlDoc.Root.Element("transaction"); if (transaction == null) { Log.Instance.LogError("MultiSafePay transaction == null"); return(null); } var paymentUrl = transaction.Element("payment_url"); if (paymentUrl == null) { Log.Instance.LogError("MultiSafePay paymentUrl == null"); return(null); } orderInfo.PaymentInfo.Url = paymentUrl.Value; PaymentProviderHelper.SetTransactionId(orderInfo, orderInfo.UniqueOrderId.ToString()); return(new PaymentRequest()); }
public PaymentRequest CreatePaymentRequest(OrderInfo orderInfo) { var paymentProvider = PaymentProvider.GetPaymentProvider(orderInfo.PaymentInfo.Id, orderInfo.StoreInfo.Alias); var returnUrl = paymentProvider.SuccessUrl(); var cancelUrl = paymentProvider.ErrorUrl(); var reportUrl = paymentProvider.ReportUrl(); var accountId = paymentProvider.GetSetting("accountId"); var siteId = paymentProvider.GetSetting("siteId"); var siteSecureId = paymentProvider.GetSetting("siteSecureId"); var testURL = paymentProvider.GetSetting("testURL"); var liveUrl = paymentProvider.GetSetting("url"); #region fill transactionrequest object var transactionRequest = new TransactionRequest { AccountId = long.Parse(accountId), SiteId = long.Parse(siteId), SiteSecureId = long.Parse(siteSecureId), NotificationUrl = reportUrl, CancelUrl = cancelUrl, RedirectUrl = returnUrl, Locale = orderInfo.StoreInfo.CultureInfo.TwoLetterISOLanguageName + "_" + orderInfo.CustomerInfo.CountryCode, IPAddress = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"], ForwardedIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"], FirstName = OrderHelper.CustomerInformationValue(orderInfo, "customerFirstName"), LastName = OrderHelper.CustomerInformationValue(orderInfo, "customerLastName"), Country = OrderHelper.CustomerInformationValue(orderInfo, "customerCountry"), Email = OrderHelper.CustomerInformationValue(orderInfo, "customerEmail") }; var amount = orderInfo.ChargedAmountInCents; transactionRequest.TransactionId = orderInfo.UniqueOrderId.ToString(); transactionRequest.Currency = orderInfo.StoreInfo.Store.CurrencyCultureSymbol; transactionRequest.Amount = amount; transactionRequest.Decription = orderInfo.OrderNumber; transactionRequest.Gateway = orderInfo.PaymentInfo.MethodId; var stringToHash = amount + transactionRequest.Currency + transactionRequest.AccountId + transactionRequest.SiteId + transactionRequest.TransactionId; transactionRequest.Signature = GetMd5Sum(stringToHash); #endregion var apiURL = paymentProvider.TestMode ? testURL : liveUrl; var httpWebRequest = (HttpWebRequest) WebRequest.Create(apiURL); httpWebRequest.Method = "POST"; httpWebRequest.ContentLength = Encoding.UTF8.GetByteCount(transactionRequest.GetXml()); httpWebRequest.ContentType = "application/x-www-form-urlencoded"; Log.Instance.LogDebug("MultiSafePay GetAllPaymentMethods transactionRequest GetXml: " + HttpUtility.HtmlEncode(transactionRequest.GetXml())); var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()); streamWriter.Write(transactionRequest.GetXml()); streamWriter.Close(); var httpWebResponse = (HttpWebResponse) httpWebRequest.GetResponse(); var streamReader = new StreamReader(httpWebResponse.GetResponseStream()); //<?xml version="1.0" encoding="UTF-8" ?> //<redirecttransaction result="ok"> // <transaction> // <id>4084044</id> // <payment_url>https://user.multisafepay.com/pay/?trans...</payment_url> // </transaction> //</redirecttransaction> var xmlDoc = XDocument.Parse(streamReader.ReadToEnd()); Log.Instance.LogDebug("MultiSafePay xmlDoc: " + xmlDoc); if (xmlDoc.Root == null) { return null; } var transaction = xmlDoc.Root.Element("transaction"); if (transaction == null) { Log.Instance.LogError("MultiSafePay transaction == null"); return null; } var paymentUrl = transaction.Element("payment_url"); if (paymentUrl == null) { Log.Instance.LogError("MultiSafePay paymentUrl == null"); return null; } orderInfo.PaymentInfo.Url = paymentUrl.Value; PaymentProviderHelper.SetTransactionId(orderInfo, orderInfo.UniqueOrderId.ToString()); return new PaymentRequest(); }