public string GetXmlToSend(Models.OrderRecord rec, Models.CreditCardInfo cCardInfo) { //var currency = "MYR"; var total = ((rec.TotalPriceWithPromo > 0 ? rec.TotalPriceWithPromo : rec.TotalPrice) + rec.Delivery); var currency = rec.Campaign.CurrencyRecord.Code; if (!string.IsNullOrWhiteSpace(rec.selectedCurrency)) { currency = rec.selectedCurrency; total = _priceConversation.ConvertPrice(total, rec.Campaign.CurrencyRecord, currency).Value; } var xmlToSend = "<card-transaction xmlns=\"http://ws.plimus.com\">" + "<card-transaction-type>AUTH_CAPTURE</card-transaction-type>" + "<recurring-transaction>ECOMMERCE</recurring-transaction>" + "<soft-descriptor>DescTest</soft-descriptor>" + "<amount>" + total.ToString("0.00") + "</amount>" + "<currency>" + currency + "</currency>" + "<card-holder-info>" + "<first-name>" + rec.FirstName + "</first-name>" + "<last-name>" + rec.LastName + "</last-name>" + "</card-holder-info>" + "<credit-card>" + "<encrypted-card-number>" + cCardInfo.CardNumber + "</encrypted-card-number>" + "<encrypted-security-code>" + cCardInfo.SecurityCode + "</encrypted-security-code>" + "<expiration-month>" + cCardInfo.ExpirationMonth + "</expiration-month>" + "<expiration-year>" + cCardInfo.ExpirationYear + "</expiration-year>" + "<card-last-four-digits>" + cCardInfo.CardLastFour + "</card-last-four-digits>" + "</credit-card>" + "</card-transaction>"; return(xmlToSend); }
public BlueSnapReponseCardTransaction createPayment(Models.OrderRecord record, Models.CreditCardInfo CriditCardInfo) { var culture = (_multiCountryService.GetCountry().CountryCultures.FirstOrDefault() != null) ? _multiCountryService.GetCountry().CountryCultures.FirstOrDefault().CultureRecord.Culture : "en-MY"; // "en-MY"; var setting = _paymentSetting.Table.FirstOrDefault(aa => aa.Culture == culture); if (setting == null) { setting = _paymentSetting.Table.FirstOrDefault(aa => aa.Culture == "en-MY"); } try { //Sanbox Address https://sandbox.bluesnap.com/services/2/transactions //live Address https://ws.bluesnap.com/services/2/transactions System.Net.WebRequest request = WebRequest.Create("https://ws.bluesnap.com/services/2/transactions"); string authInfo = string.Format("{0}:{1}", setting.BlueSnapKey, setting.BlueSnapPass); authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)); request.Headers["Authorization"] = "Basic " + authInfo; request.ContentType = "application/xml"; request.Method = "POST"; byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(GetXmlToSend(record, CriditCardInfo)); string result = System.Convert.ToBase64String(buffer); Stream reqstr = request.GetRequestStream(); reqstr.Write(buffer, 0, buffer.Length); reqstr.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); if (response.StatusCode != HttpStatusCode.OK) { return(null); } byte[] b = null; using (Stream stream = response.GetResponseStream()) using (MemoryStream ms = new MemoryStream()) { int count = 0; do { byte[] buf = new byte[1024]; count = stream.Read(buf, 0, 1024); ms.Write(buf, 0, count); } while (stream.CanRead && count > 0); b = ms.ToArray(); } var repo = Encoding.Default.GetString(b); //var xDoc = XDocument.Load(response.GetResponseStream()); var obj = XDocument.Parse(repo); //xDoc.LoadXml(repo); //dynamic root = new ExpandoObject(); //XmlToDynamic.Parse(root, xDoc.Elements().First()); BlueSnapReponseCardTransaction B = new BlueSnapReponseCardTransaction(); foreach (var node in obj.Root.Elements().ToArray()) { switch (node.Name.LocalName.ToLower()) { case "card-transaction-type": B.cardTransactionType = node.Value; break; case "transaction-id": B.transactionId = node.Value; break; case "recurring-transaction": B.recurringTransaction = node.Value; break; case "soft-descriptor": break; case "amount": B.amount = node.Value; break; case "currency": B.currency = node.Value; break; case "first-name": B.cardHolderInfoFirstName = node.Value; break; case "last-name": B.cardHolderInfoLastName = node.Value; break; case "card-last-four-digits": B.creditCardCardLastFourDigits = node.Value; break; case "card-type": B.cardTransactionType = node.Value; break; case "card-sub-type": B.creditCardCardSubType = node.Value; break; case "processing-status": B.processingInfoProcessingStatus = node.Value; break; case "processing-info": B.processingInfoProcessingStatus = node.Elements().FirstOrDefault(aa => aa.Name.LocalName.ToLower() == "processing-status").Value; break; default: break; } } return(B); } catch (HttpException ex) { return(new BlueSnapReponseCardTransaction() { ErrorMessage = "Something wrong!" }); } catch (Exception ex2) { return(new BlueSnapReponseCardTransaction() { ErrorMessage = "Something wrong!" }); } }