public void Copy(PayPalStandardPaymentSettings settings, bool fromSettings) { if (fromSettings) { UseSandbox = settings.UseSandbox; BusinessEmail = settings.BusinessEmail; PdtToken = settings.PdtToken; PdtValidateOrderTotal = settings.PdtValidateOrderTotal; AdditionalFee = settings.AdditionalFee; AdditionalFeePercentage = settings.AdditionalFeePercentage; PassProductNamesAndTotals = settings.PassProductNamesAndTotals; EnableIpn = settings.EnableIpn; IpnUrl = settings.IpnUrl; } else { settings.UseSandbox = UseSandbox; settings.BusinessEmail = BusinessEmail; settings.PdtToken = PdtToken; settings.PdtValidateOrderTotal = PdtValidateOrderTotal; settings.AdditionalFee = AdditionalFee; settings.AdditionalFeePercentage = AdditionalFeePercentage; settings.PassProductNamesAndTotals = PassProductNamesAndTotals; settings.EnableIpn = EnableIpn; settings.IpnUrl = IpnUrl; } }
/// <summary> /// Gets PDT details /// </summary> /// <param name="tx">TX</param> /// <param name="values">Values</param> /// <param name="response">Response</param> /// <returns>Result</returns> public bool GetPDTDetails(string tx, PayPalStandardPaymentSettings settings, out Dictionary<string, string> values, out string response) { var req = (HttpWebRequest)WebRequest.Create(PayPalHelper.GetPaypalUrl(settings)); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; string formContent = string.Format("cmd=_notify-synch&at={0}&tx={1}", settings.PdtToken, tx); req.ContentLength = formContent.Length; using (var sw = new StreamWriter(req.GetRequestStream(), Encoding.ASCII)) sw.Write(formContent); response = null; using (var sr = new StreamReader(req.GetResponse().GetResponseStream())) response = HttpUtility.UrlDecode(sr.ReadToEnd()); values = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); bool firstLine = true, success = false; foreach (string l in response.Split('\n')) { string line = l.Trim(); if (firstLine) { success = line.Equals("SUCCESS", StringComparison.OrdinalIgnoreCase); firstLine = false; } else { int equalPox = line.IndexOf('='); if (equalPox >= 0) values.Add(line.Substring(0, equalPox), line.Substring(equalPox + 1)); } } return success; }