public static MerchantTribe.Web.Geography.Country TranslateCountry(string connectionString, string countryBvin) { MerchantTribe.Web.Geography.Country result = new MerchantTribe.Web.Geography.Country(); data.BV53Entities db = new data.BV53Entities(connectionString); var old = db.bvc_Country.Where(y => y.bvin == countryBvin).FirstOrDefault(); if (old == null) { return(MerchantTribe.Web.Geography.Country.FindByISOCode("US")); } result = MerchantTribe.Web.Geography.Country.FindByISOCode(old.ISOCode); return(result); }
com.paypal.soap.api.CountryCodeType ConvertCountryName(string name) { com.paypal.soap.api.CountryCodeType result = CountryCodeType.US; MerchantTribe.Web.Geography.Country country = MerchantTribe.Web.Geography.Country.FindByName(name); if (country == null) { return(result); } if (Enum.IsDefined(typeof(com.paypal.soap.api.CountryCodeType), country.IsoCode)) { result = (com.paypal.soap.api.CountryCodeType)Enum.Parse(typeof(com.paypal.soap.api.CountryCodeType), country.IsoCode, true); } return(result); }
public bool CopyTo(AddressDTO destinationAddress, string connString) { bool result = true; try { destinationAddress.NickName = this.NickName; destinationAddress.FirstName = this.FirstName; destinationAddress.MiddleInitial = this.MiddleInitial; destinationAddress.LastName = this.LastName; destinationAddress.Company = this.Company; destinationAddress.Line1 = this.Line1; destinationAddress.Line2 = this.Line2; destinationAddress.Line3 = this.Line3; destinationAddress.City = this.City; destinationAddress.PostalCode = this.PostalCode; MerchantTribe.Web.Geography.Country newCountry = GeographyHelper.TranslateCountry(connString, this.CountryBvin); destinationAddress.CountryBvin = newCountry.Bvin; destinationAddress.CountryName = newCountry.DisplayName; string RegionAbbreviation = GeographyHelper.TranslateRegionBvinToAbbreviation(connString, this.RegionBvin); destinationAddress.RegionBvin = RegionAbbreviation; destinationAddress.RegionName = RegionAbbreviation; destinationAddress.Phone = this.Phone; destinationAddress.Fax = this.Fax; destinationAddress.WebSiteUrl = this.WebSiteUrl; destinationAddress.CountyBvin = this.CountyBvin; destinationAddress.CountyName = this.CountyName; //destinationAddress.Residential = this.Residential; } catch { result = false; } return(result); }
public override bool Execute(OrderTaskContext context) { if (context.Inputs["Mode"] != null) { if (context.Inputs["Mode"].Value == "PaypalExpress") { if (context.MTApp.CurrentRequestContext.RoutingContext.HttpContext != null) { PayPalAPI ppAPI = Utilities.PaypalExpressUtilities.GetPaypalAPI(context.MTApp.CurrentStore); try { string cartReturnUrl = string.Empty; string cartCancelUrl = string.Empty; if (context.MTApp.CurrentRequestContext != null) { cartReturnUrl = context.MTApp.CurrentRequestContext.CurrentStore.RootUrlSecure() + "paypalexpresscheckout"; cartCancelUrl = context.MTApp.CurrentRequestContext.CurrentStore.RootUrlSecure() + "checkout"; } EventLog.LogEvent("PayPal Express Checkout", "CartCancelUrl=" + cartCancelUrl, EventLogSeverity.Information); EventLog.LogEvent("PayPal Express Checkout", "CartReturnUrl=" + cartReturnUrl, EventLogSeverity.Information); SetExpressCheckoutResponseType expressResponse; PaymentActionCodeType mode = PaymentActionCodeType.Authorization; if (context.MTApp.CurrentRequestContext.CurrentStore.Settings.PayPal.ExpressAuthorizeOnly) { mode = PaymentActionCodeType.Order; } else { mode = PaymentActionCodeType.Sale; } // Accelerated boarding if (context.MTApp.CurrentRequestContext.CurrentStore.Settings.PayPal.UserName.Trim().Length < 1) { mode = PaymentActionCodeType.Sale; } bool addressSupplied = false; if (context.Inputs["AddressSupplied"] != null) { if (context.Inputs["AddressSupplied"].Value == "1") { addressSupplied = true; context.Order.CustomProperties.Add("bvsoftware", "PaypalAddressOverride", "1"); } } string amountToPayPal = context.Order.TotalOrderBeforeDiscounts.ToString("N", System.Globalization.CultureInfo.CreateSpecificCulture("en-US")); if (addressSupplied) { Contacts.Address address = context.Order.ShippingAddress; MerchantTribe.Web.Geography.Country country = MerchantTribe.Web.Geography.Country.FindByBvin(address.CountryBvin); if (country != null) { expressResponse = ppAPI.SetExpressCheckout( amountToPayPal, cartReturnUrl, cartCancelUrl, mode, PayPalAPI.GetCurrencyCodeType(context.MTApp.CurrentRequestContext.CurrentStore.Settings.PayPal.Currency), address.FirstName + " " + address.LastName, country.IsoCode, address.Line1, address.Line2, address.City, address.RegionBvin, address.PostalCode, address.Phone, context.Order.OrderNumber + System.Guid.NewGuid().ToString()); if (expressResponse == null) { EventLog.LogEvent("PayPal Express Checkout", "Express Response Was Null!", EventLogSeverity.Error); } } else { EventLog.LogEvent("StartPaypalExpressCheckout", "Country with bvin " + address.CountryBvin + " was not found.", EventLogSeverity.Error); return(false); } } else { expressResponse = ppAPI.SetExpressCheckout(amountToPayPal, cartReturnUrl, cartCancelUrl, mode, PayPalAPI.GetCurrencyCodeType(context.MTApp.CurrentRequestContext.CurrentStore.Settings.PayPal.Currency), context.Order.OrderNumber + System.Guid.NewGuid().ToString()); if (expressResponse == null) { EventLog.LogEvent("PayPal Express Checkout", "Express Response2 Was Null!", EventLogSeverity.Error); } } if (expressResponse.Ack == AckCodeType.Success || expressResponse.Ack == AckCodeType.SuccessWithWarning) { context.Order.ThirdPartyOrderId = expressResponse.Token; // Recording of this info is handled on the paypal express // checkout page instead of here. //Orders.OrderPaymentManager payManager = new Orders.OrderPaymentManager(context.Order); //payManager.PayPalExpressAddInfo(context.Order.TotalGrand, expressResponse.Token); EventLog.LogEvent("PayPal Express Checkout", "Response SUCCESS", EventLogSeverity.Information); Orders.OrderNote note = new Orders.OrderNote(); note.IsPublic = false; note.Note = "Paypal Order Accepted With Paypal Order Number: " + expressResponse.Token; context.Order.Notes.Add(note); if (context.MTApp.OrderServices.Orders.Update(context.Order)) { if (string.Compare(context.MTApp.CurrentRequestContext.CurrentStore.Settings.PayPal.Mode, "Live", true) == 0) { context.MTApp.CurrentRequestContext.RoutingContext.HttpContext.Response.Redirect("https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=" + expressResponse.Token, true); } else { context.MTApp.CurrentRequestContext.RoutingContext.HttpContext.Response.Redirect("https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=" + expressResponse.Token, true); } } return(true); } else { foreach (ErrorType ppError in expressResponse.Errors) { context.Errors.Add(new WorkflowMessage(ppError.ErrorCode, ppError.ShortMessage, true)); //create a note to save the paypal error info onto the order Orders.OrderNote note = new Orders.OrderNote(); note.IsPublic = false; note.Note = "Paypal error number: " + ppError.ErrorCode + " Paypal Error: '" + ppError.ShortMessage + "' Message: '" + ppError.LongMessage; context.Order.Notes.Add(note); EventLog.LogEvent("Paypal error number: " + ppError.ErrorCode, "Paypal Error: '" + ppError.ShortMessage + "' Message: '" + ppError.LongMessage + "' " + " Values passed to SetExpressCheckout: Total=" + string.Format("{0:c}", context.Order.TotalOrderBeforeDiscounts) + " Cart Return Url: " + cartReturnUrl + " Cart Cancel Url: " + cartCancelUrl, EventLogSeverity.Error); } context.Errors.Add(new WorkflowMessage("Paypal checkout error", Content.SiteTerms.GetTerm(Content.SiteTermIds.PaypalCheckoutCustomerError), true)); return(false); } } catch (Exception ex) { EventLog.LogEvent("Paypal Express Checkout", "Exception occurred during call to Paypal: " + ex.ToString(), EventLogSeverity.Error); context.Errors.Add(new WorkflowMessage("Paypal checkout error", Content.SiteTerms.GetTerm(Content.SiteTermIds.PaypalCheckoutCustomerError), true)); return(false); } finally { ppAPI = null; } } } else { return(true); } } else { return(true); } return(false); }
public string ToHtmlString() { StringBuilder sb = new StringBuilder(); if (NickName.Trim().Length > 0) { sb.Append("<em>" + NickName + "</em><br />"); } if (LastName.Length > 0 || FirstName.Length > 0) { sb.Append(FirstName); if (MiddleInitial.Trim().Length > 0) { sb.Append(" " + MiddleInitial); } sb.Append(" " + LastName + "<br />"); if (Company.Trim().Length > 0) { sb.Append(Company + "<br />"); } } if (Line1.Length > 0) { sb.Append(Line1 + "<br />"); } if (Line2.Trim().Length > 0) { sb.Append(Line2 + "<br />"); } if (Line3.Trim().Length > 0) { sb.Append(Line3 + "<br />"); } MerchantTribe.Web.Geography.Country c = MerchantTribe.Web.Geography.Country.FindByBvin(CountryBvin); MerchantTribe.Web.Geography.Region r = c.Regions.Where(y => y.Abbreviation == RegionBvin).FirstOrDefault(); if (r != null) { sb.Append(City + ", " + r.Abbreviation + " " + _PostalCode + "<br />"); } else { if (RegionName.Trim().Length > 0) { sb.Append(City + ", " + RegionName + " " + _PostalCode + "<br />"); } else { sb.Append(City + ", " + _PostalCode + "<br />"); } } if (c != null) { sb.Append(c.DisplayName + "<br />"); } if (Phone.Trim().Length > 0) { sb.Append(Phone + "<br />"); } if (Fax.Trim().Length > 0) { sb.Append("Fax: " + Fax + "<br />"); } if (WebSiteUrl.Trim().Length > 0) { sb.Append(WebSiteUrl + "<br />"); } return(sb.ToString()); }
public override void ProcessTransaction(Transaction t) { bool result = false; try { string url = LiveUrl; if (Settings.DeveloperMode) { url = DeveloperUrl; } // Build Data String // Card Number and Expiration string expDate = t.Card.ExpirationMonthPadded + t.Card.ExpirationYearTwoDigits; // Set Parameters StringBuilder sb = new StringBuilder(); string postData = string.Empty; sb.Append("x_version=3.1"); sb.Append("&x_login="******"&x_tran_key="); sb.Append(SafeWriteString(Settings.TransactionKey.Trim())); sb.Append("&x_Amount="); sb.Append(SafeWriteString(t.Amount.ToString())); sb.Append("&x_Cust_ID="); sb.Append(SafeWriteString(t.Customer.Email)); sb.Append("&x_Description="); sb.Append(SafeWriteString(t.MerchantDescription)); sb.Append("&x_invoice_num="); sb.Append(SafeWriteString(t.MerchantInvoiceNumber)); sb.Append("&x_Email_Customer="); sb.Append(SafeWriteBool(Settings.SendEmailToCustomer)); sb.Append("&x_delim_data="); sb.Append(SafeWriteBool(true)); sb.Append("&x_ADC_URL="); sb.Append(SafeWriteBool(false)); sb.Append("&x_delim_char="); sb.Append(SafeWriteString(",")); sb.Append("&x_relay_response="); sb.Append(SafeWriteBool(false)); sb.Append("&x_Email="); sb.Append(SafeWriteString(t.Customer.Email)); // Main Address sb.Append("&x_First_Name="); sb.Append(SafeWriteString(t.Customer.FirstName)); sb.Append("&x_Last_Name="); sb.Append(SafeWriteString(t.Customer.LastName)); sb.Append("&x_Company="); sb.Append(SafeWriteString(t.Customer.Company)); sb.Append("&x_Address="); sb.Append(SafeWriteString(t.Customer.Street)); sb.Append("&x_City="); sb.Append(SafeWriteString(t.Customer.City)); sb.Append("&x_Country="); MerchantTribe.Web.Geography.Country country = MerchantTribe.Web.Geography.Country.FindByName(t.Customer.Country); if (country != null) { sb.Append(SafeWriteString(country.IsoNumeric)); } else { sb.Append(SafeWriteString(t.Customer.Country)); } // TODO: Add code to make sure we've got the correct state format if (t.Customer.Region != string.Empty) { sb.Append("&x_State="); sb.Append(SafeWriteString(t.Customer.Region)); } sb.Append("&x_Zip="); sb.Append(SafeWriteString(t.Customer.PostalCode)); sb.Append("&x_Phone="); sb.Append(SafeWriteString(t.Customer.Phone)); // Ship To Address sb.Append("&x_Ship_To_First_Name="); sb.Append(SafeWriteString(t.Customer.ShipFirstName)); sb.Append("&x_Ship_To_Last_Name="); sb.Append(SafeWriteString(t.Customer.ShipLastName)); sb.Append("&x_Ship_To_Company="); sb.Append(SafeWriteString(t.Customer.ShipCompany)); sb.Append("&x_Ship_To_Address="); sb.Append(SafeWriteString(t.Customer.ShipStreet)); sb.Append("&x_Ship_To_City="); sb.Append(SafeWriteString(t.Customer.ShipCity)); // TODO: Convert country codes to ISO Codes or // find a way to guarantee that we're getting an iso code sb.Append("&x_Ship_To_Country="); MerchantTribe.Web.Geography.Country shipcountry = MerchantTribe.Web.Geography.Country.FindByName(t.Customer.ShipCountry); if (country != null) { sb.Append(SafeWriteString(shipcountry.IsoNumeric)); } else { sb.Append(SafeWriteString(t.Customer.ShipCountry)); } // TODO: Add code to make sure we've got the correct state format if (t.Customer.ShipRegion != string.Empty) { sb.Append("&x_Ship_To_State="); sb.Append(SafeWriteString(t.Customer.ShipRegion)); } sb.Append("&x_Ship_To_Zip="); sb.Append(SafeWriteString(t.Customer.ShipPostalCode)); sb.Append("&x_Ship_To_Phone="); sb.Append(SafeWriteString(t.Customer.ShipPhone)); sb.Append("&x_Method="); sb.Append(SafeWriteString("CC")); // Add Test Mode Flag if needed if (Settings.TestMode) { sb.Append(SafeWriteString("&x_test_request=TRUE")); } switch (t.Action) { case ActionType.CreditCardCharge: // Charge sb.Append("&x_Type="); sb.Append(SafeWriteString("AUTH_CAPTURE")); sb.Append("&x_customer_ip="); sb.Append(SafeWriteString(t.Customer.IpAddress)); break; case ActionType.CreditCardHold: // Authorize sb.Append("&x_Type="); sb.Append(SafeWriteString("AUTH_ONLY")); sb.Append("&x_customer_ip="); sb.Append(SafeWriteString(t.Customer.IpAddress)); break; case ActionType.CreditCardCapture: // Capture, Post Authorize sb.Append("&x_Type="); sb.Append(SafeWriteString("PRIOR_AUTH_CAPTURE")); sb.Append("&x_trans_id="); sb.Append(SafeWriteString(t.PreviousTransactionNumber)); break; case ActionType.CreditCardVoid: // Void sb.Append("&x_Type="); sb.Append(SafeWriteString("VOID")); sb.Append("&x_trans_id="); sb.Append(SafeWriteString(t.PreviousTransactionNumber)); break; case ActionType.CreditCardRefund: // Refund, Credit sb.Append("&x_Type="); sb.Append(SafeWriteString("CREDIT")); sb.Append("&x_trans_id="); sb.Append(SafeWriteString(t.PreviousTransactionNumber)); break; } // Add Card Number, CVV Code and Expiration Date sb.Append("&x_Card_Num="); sb.Append(SafeWriteString(t.Card.CardNumber)); if (t.Card.SecurityCode.Length > 0) { sb.Append("&x_Card_Code="); sb.Append(SafeWriteString(t.Card.SecurityCode)); } sb.Append("&x_Exp_Date="); sb.Append(SafeWriteString(expDate)); // Dump string builder to string to send to Authorize.Net postData = sb.ToString(); string responseString = NetworkUtilities.SendRequestByPost(url, postData); // Split response string string[] output = responseString.Split(','); int counter = 0; System.Collections.Hashtable vars = new System.Collections.Hashtable(); // Move strings into hash table for easy reference foreach (string var in output) { vars.Add(counter, var); counter += 1; } if (vars.Count < 7) { result = false; } else { string responseCode = (string)vars[0]; string responseDescription = (string)vars[3]; string responseAuthCode = (string)vars[4]; string responseAVSCode = (string)vars[5]; t.Result.AvsCode = ParseAvsCode(responseAVSCode); string responseReferenceCode = (string)vars[6]; string responseSecurityCode = string.Empty; if (vars.Count > 38) { responseSecurityCode = (string)vars[38]; } t.Result.CvvCode = ParseSecurityCode(responseSecurityCode); // Trim off Extra Quotes on response codes responseCode = responseCode.Trim('"'); // Save result information to payment data object t.Result.ResponseCode = responseCode; t.Result.ResponseCodeDescription = responseDescription; t.Result.ReferenceNumber = responseReferenceCode; switch (responseCode) { case "1": // Approved result = true; break; case "2": // Declined result = false; t.Result.Messages.Add(new Message("Declined: " + responseDescription, responseCode, MessageType.Warning)); break; case "3": // UNKNOWN result = false; t.Result.Messages.Add(new Message("Authorize.Net Error: " + responseDescription, responseCode, MessageType.Error)); break; } } } catch (Exception ex) { result = false; t.Result.Messages.Add(new Message("Unknown Payment Error: " + ex.Message, "BVP_AN_1001", MessageType.Error)); t.Result.Messages.Add(new Message("Stack Trace " + ex.StackTrace, "STACKTRACE", MessageType.Error)); } t.Result.Succeeded = result; }