Active Commerce Developer s Cookbook
|
|
|
- Jemimah Summers
- 10 years ago
- Views:
Transcription
1 Active Commerce Developer s Cookbook Adding a Custom Payment Provider 1. Create the Payment Provider class 2. Register with Unity 3. Add to Payment Options Adding a Custom Tax Calculator 1. Create the Tax Calculator class 2. Register with Unity 3. Add to Tax Calculations Adding a Custom Tax Rate Provider 1. Create the Tax Rate Provider class 2. Register with Unity 3. Update Tax Calculations to use Adding a Custom Address Validator 1. Create the Address Validator class 2. Register with Unity Adding a Product Detail Tab 1. Create a user control 2. Create a sublayout 3. Add sublayout to presentation details Adding an Order Pipeline Processor 1. Create a class 2. Inject the processor into the orderprocessing Pipeline Adding a Custom Order Status 1. Create the order status class 2. Register with Unity 3. Add to Order Statuses Registering Types in Microsoft Unity Active Commerce utilizes the Microsoft Unity container to register implementations of various domain objects, services, and other types used throughout the product. This means that if you want to add new integrations or override other logic in Active Commerce, you can register overrides within Unity, either for your whole installation or for specific sites within Sitecore. 1
2 Active Commerce makes it easy to register your own types. At Sitecore startup, it will scan for any implementations of ITypeRegistration and ISiteTypeRegistration and execute them. ITypeRegistration By implementing ITypeRegistration, you can register types in the Unity container for the entire Sitecore / Active Commerce installation. The SortOrder property can be used to ensure the order in which types are registered. In most cases, it is safe to simply return a 0 value. See examples below on how to register specific types within Unity, or review ActiveCommerce.IoC.RegisterTypes in your reflector of choice. public class RegisterTypes : ITypeRegistration public void Process(Microsoft.Practices.Unity.IUnityContainer container) //register your types here public int SortOrder get return 0; ISiteTypeRegistration By implementing ISiteTypeRegistration, you can register types in Unity for specific sites within your Sitecore / Active Commerce installation. The Sites property can be used to return a collection of site names for which the registrations should apply. You can include the site names directly in your code, or perhaps reference the configured sites (Sitecore.Sites.SiteContextFactory.Sites) for those with a particular attribute configured (SiteInfo.Properties). public class RegisterTypes : ISiteTypeRegistration public string[] Sites get //return string[] array public void Process(Microsoft.Practices.Unity.IUnityContainer container) //register your types here 2
3 public int SortOrder get return 0; Adding a Custom Payment Provider 1. Create the Payment Provider class For an integrated payment provider (Authorize.Net, CyberSource), inherit from ActiveCommerce.Payment.IntegratedPaymentProviderBase. Specify additional features that the provider will support by inheriting IReservable, and/or ICreditable. For an online payment provider (e.g. PayPal), inherit from ActiveCommerce.Payment.OnlinePaymentProviderBase. Specify additional features that the provider will support by inheriting IReservable, and/or ICreditable. Implement the required method(s). Use the values from the method parameters as needed (PaymentSystem, PaymentArgs). Here's an example of our CyberSource plugin: public class PaymentProvider : IntegratedPaymentProviderBase, ICreditable, IReservable protected const string SETTING_AUTHORIZE_ONLY = "authorizeonly"; protected const string DECISION_ACCEPT = "ACCEPT"; protected const string DECISION_ERROR = "ERROR"; protected const string DECISION_REJECT = "REJECT"; public override void Invoke(PaymentSystem paymentsystem, PaymentArgs paymentargs) var cart = paymentargs.shoppingcart as ShoppingCart; if (cart == null) throw new Exception("Cart must be of type ActiveCommerce.Carts.ShoppingCart"); var settings = GetSettings(paymentSystem); var request = new RequestMessage 3
4 merchantid = paymentsystem.username, merchantreferencecode = cart.ordernumber, billto = new BillTo firstname = cart.customerinfo.billingaddress.name, lastname = cart.customerinfo.billingaddress.name2, street1 = cart.customerinfo.billingaddress.address, city = cart.customerinfo.billingaddress.city, state = cart.customerinfo.billingaddress.state, postalcode = cart.customerinfo.billingaddress.zip, country = cart.customerinfo.billingaddress.country.code, = cart.customerinfo. , phonenumber = cart.customerinfo.billingaddress.getphonenumber(), card = new Card accountnumber = cart.creditcardinfo.cardnumber.tostring(), expirationmonth = cart.creditcardinfo.expirationdate.tostring("mm"), expirationyear = cart.creditcardinfo.expirationdate.tostring("yyyy"), cardtype = GetCardTypeId(cart.CreditCardInfo.CardType), purchasetotals = new PurchaseTotals currency = cart.currency.code, grandtotalamount = cart.totals.totalpriceincvat.tostring("0.00") // Uses midpoint away from zero rounding ; // For CyberSource (Them: "To help us troubleshoot any problems that you may encounter, please include the following information about your application.") request.clientlibrary = ".NET WCF"; request.clientlibraryversion = Environment.Version.ToString(); request.clientenvironment = Environment.OSVersion.Platform + Environment.OSVersion.Version.ToString(); // Turn on Authorize request.ccauthservice = new CCAuthService run = "true"; if (settings.includecapture) // Turn on Capture request.cccaptureservice = new CCCaptureService run = "true"; var reply = MakeRequest(request, paymentsystem, false /* CheckPaymentStatus will log error */); 4
5 if (reply.decision!= DECISION_ACCEPT) return; var transactiondata = Context.Entity.Resolve<ITransactionData>(); if (settings.includecapture) PaymentStatus = PaymentStatus.Captured; else var reservationticket = new ReservationTicket InvoiceNumber = cart.ordernumber, Amount = Math.Round(cart.Totals.TotalPriceIncVat, 2, MidpointRounding.AwayFromZero), AuthorizationCode = reply.ccauthreply.authorizationcode, TransactionNumber = reply.requestid ; transactiondata.savepersistentvalue(cart.ordernumber, "ReservationTicket", reservationticket); PaymentStatus = PaymentStatus.Reserved; transactiondata.savecallbackvalues(cart.ordernumber, PaymentStatus.ToString(), reply.requestid, cart.totals.totalpriceincvat.tostring("0.00"), cart.currency.code, reply.decision, //SEFE bug. pass in here, get via PaymentStatus reply.reasoncode, reply.reasoncode, cart.creditcardinfo.cardtype); transactiondata.savepersistentvalue(cart.ordernumber, TransactionConstants.AuthorizationNumber, reply.ccauthreply.authorizationcode); #region IReservable Members public void Capture(PaymentSystem paymentsystem, PaymentArgs paymentargs, ReservationTicket reservationticket, decimal amount) var request = new RequestMessage 5
6 merchantid = paymentsystem.username, merchantreferencecode = reservationticket.invoicenumber, cccaptureservice = new CCCaptureService run = "true", authrequestid = reservationticket.transactionnumber, purchasetotals = new PurchaseTotals currency = paymentargs.shoppingcart.currency.code, grandtotalamount = reservationticket.amount.tostring("0.00") // Uses away from zero rounding ; var reply = MakeRequest(request, paymentsystem); if (reply.decision!= DECISION_ACCEPT) return; var transactiondata = Context.Entity.Resolve<ITransactionData>(); transactiondata.savepersistentvalue(reservationticket.invoicenumber, PaymentConstants.CaptureSuccess); public void CancelReservation(PaymentSystem paymentsystem, PaymentArgs paymentargs, ReservationTicket reservationticket) var request = new RequestMessage merchantid = paymentsystem.username, merchantreferencecode = reservationticket.invoicenumber, voidservice = new VoidService run = "true", voidrequestid = reservationticket.transactionnumber ; var reply = MakeRequest(request, paymentsystem); if (reply.decision!= DECISION_ACCEPT) return; var transactiondata = Context.Entity.Resolve<ITransactionData>(); transactiondata.savepersistentvalue(reservationticket.invoicenumber, PaymentConstants.CancelSuccess); #endregion 6
7 #region ICreditable Members public void Credit(PaymentSystem paymentsystem, PaymentArgs paymentargs, ReservationTicket reservationticket) var request = new RequestMessage merchantid = paymentsystem.username, merchantreferencecode = reservationticket.invoicenumber, cccreditservice = new CCCreditService run = "true", capturerequestid = reservationticket.transactionnumber, purchasetotals = new PurchaseTotals currency = paymentargs.shoppingcart.currency.code, grandtotalamount = reservationticket.amount.tostring("0.00") // Uses away from zero rounding ; var reply = MakeRequest(request, paymentsystem); if (reply.decision!= DECISION_ACCEPT) return; var transactiondata = Context.Entity.Resolve<ITransactionData>(); transactiondata.savepersistentvalue(reservationticket.invoicenumber, PaymentConstants.CreditSuccess); #endregion protected ReplyMessage MakeRequest(RequestMessage request, PaymentSystem paymentsystem, bool logerror = true) try var proc = new TransactionProcessorClient(); proc.channelfactory.credentials.username.username = request.merchantid; proc.channelfactory.credentials.username.password = paymentsystem.password; var reply = proc.runtransaction(request); if (reply.decision!= DECISION_ACCEPT) 7
8 var message = new StringBuilder(); if (reply.ccauthreply!= null &&! String.IsNullOrWhiteSpace(reply.ccAuthReply.reasonCode)) message.appendformat("[auth]:0", reply.ccauthreply.reasoncode); if (reply.cccapturereply!= null &&! String.IsNullOrWhiteSpace(reply.ccCaptureReply.reasonCode)) message.appendformat("[capture]:0", reply.cccapturereply.reasoncode); if (reply.cccreditreply!= null &&! String.IsNullOrWhiteSpace(reply.ccCreditReply.reasonCode)) message.appendformat("[credit]:0", reply.cccreditreply.reasoncode); var transactiondata = Context.Entity.Resolve<ITransactionData>(); transactiondata.savecallbackvalues(request.merchantreferencecode, // OrderNumber PaymentStatus.Failure.ToString(), reply.requestid, reply.purchasetotals!= null? reply.purchasetotals.grandtotalamount : null, reply.purchasetotals!= null? reply.purchasetotals.currency : null, reply.decision, //SEFE bug. pass in here, get via PaymentStatus reply.reasoncode, message.tostring(), request.card!= null? request.card.cardtype : null); PaymentStatus = PaymentStatus.Failure; if (logerror) Log.Error(string.Format( "CyberSource transaction failure: 0\nProvider Message = 1\nProvider Error Code = 2\nTransaction Number = 3", reply.decision, message, reply.reasoncode, reply.requestid), this); 8
9 return reply; catch (Exception e) Log.Error("CyberSource transaction failure", e, this); PaymentStatus = PaymentStatus.Failure; return new ReplyMessage decision = DECISION_ERROR; protected static string GetCardTypeId(string cardtype) switch (cardtype.tolowerinvariant()) case "visa": return "001"; case "mastercard": return "002"; case "american express": return "003"; case "discover": return "004"; case "diners club": return "005"; case "carte blanche": return "006"; case "jcb": return "007"; default: return null; protected Settings GetSettings(PaymentSystem paymentsystem) var settings = new Settings(); var settingsreader = new Sitecore.Ecommerce.Payments.PaymentSettingsReader(paymentSystem); //a little backwards, but we want to configure for authorize only, not for include capture. capture unless auth only explicitly set to "true" var authorizesetting = settingsreader.getsetting(setting_authorize_only); settings.includecapture = authorizesetting == null (! Boolean.TrueString.ToLower().Equals(authorizeSetting.ToLower())); 9
10 return settings; protected struct Settings public bool IncludeCapture; You could also check out the SES ones: Payment%20Providers/120_ aspx 2. Register with Unity Make sure to register it as a named instance (e.g. "CyberSource"). For example, here is the registration for CyberSource plugin: container.registertype(typeof(sitecore.ecommerce.domainmodel.payments.paymentprovider ), typeof(paymentprovider), "CyberSource"); 3. Add to Payment Options In Sitecore, add a new Payment to Webshop Business Settings/Payment Options Set the "Code" field to the same name you registered with Unity (e.g. "CyberSource"), and make sure "Enabled" is checked. Those are the only fields technically required. The rest are there for you to use to make the provider configurable in Sitecore (e.g. Username and Password typically correspond to auth for your 3rd party service). Adding a Custom Tax Calculator Active Commerce comes with 2 tax calculators. One for VAT (ActiveCommerce.Taxes.Vat.VatTaxCalculator), and one for North America (ActiveCommerce.Taxes.NorthAmerica.ShippingAddressTaxCalculator). The following instructions are for creating your own calculator. 1. Create the Tax Calculator class Inherit from ActiveCommerce.Taxes.TaxCalculatorBase or ActiveCommerce.Taxes.ITaxCalculator. TaxCalculatorBase provides access to the Sitecore fields related to this calculator via TaxConfiguration class. There are also base implementations and helpers which may be useful. If you don t need any of this, simply use ITaxCalculator. 10
11 Implement the required properties and methods. TaxConfiguration - This will automatically be set if using the TaxCalculatorBase. If using ITaxCalculator, you must define, but it s up to you d like to use or not. Source - This will be populated with the address of the company (as defined on / Webshop Business Settings/Company Master Data) Billing - This will be populated with the customer billing address Shipping - This will be populated with the customer shipping address Currency - This will be populated with the current currency WillHandle() - return boolean whether this tax calculator will handle calculation for the addresses. If using TaxCalculatorBase, the MatchesLocation helper method is useful here if based on configured location (see step 3). If this will be your only tax calculator, then you could just return true. GetTaxes(IEnumerable<TaxInquiry> order) - return your TaxTotals Here s an example of our VatTaxCalculator: public class VatTaxCalculator : TaxCalculatorBase<TaxConfiguration> public const string JURISDICTION_TYPE = "VAT"; public override TaxTotals GetTaxes(IEnumerable<TaxInquiry> order) var rounder = Sitecore.Ecommerce.Context.Entity.Resolve<ICurrencyRounder>(); order = order.tolist(); return new TaxTotals ProductTax = order.where(x =>!x.isshipping &&!x.ishandling).select(x => new TaxInquiry = x, Product = GetProduct(x.ProductCode) ).Select(x => new TaxInquiry = x.taxinquiry, Product = x.product, Rate = GetRate(x.Product.TaxType) ).Select(x => new TaxLine ProductCode = x.product.code, Type = x.product.taxtype!= null? x.product.taxtype.code : string.empty, TaxedAmount = x.taxinquiry.total, Jurisdictions = new TaxJurisdiction Config.Name, TaxJurisdiction.Types.VAT, x.rate, rounder.round(x.rate * x.taxinquiry.total, Currency) Name = Type = Rate = Tax = 11
12 .ToEnumerable() ), ShippingTax = order.where(x => x.isshipping).select(x => new TaxInquiry = x, Rate = GetRate(Config.ShippingVatType)).Where(x => x.rate > 0).Select(x => new TaxLine Type = Config.ShippingVatType.Code, TaxJurisdiction Config.Name, JURISDICTION_TYPE, x.rate, rounder.round(x.rate * x.taxinquiry.total, Currency) TaxedAmount = x.taxinquiry.total, Jurisdictions = new.toenumerable() ).FirstOrDefault(), HandlingTax = order.where(x => x.ishandling).select(x => new TaxInquiry = x, Rate = GetRate(Config.HandlingVatType)).Where(x => x.rate > 0).Select(x => new TaxLine Type = Config.ShippingVatType.Code, TaxJurisdiction Config.Name, JURISDICTION_TYPE, x.rate, rounder.round(x.rate * x.taxinquiry.total, Currency).ToEnumerable() Name = Type = Rate = Tax = TaxedAmount = x.taxinquiry.total, Jurisdictions = new Type = Name = Rate = Tax = 12
13 ; ).FirstOrDefault() public override bool WillHandle() return MatchesLocation(Shipping); protected virtual Product GetProduct(string productcode) var repository = Sitecore.Ecommerce.Context.Entity.Resolve<IProductRepository>(); var product = repository.get<product>(productcode); return product; protected virtual decimal GetRate(TaxType taxtype) if (taxtype == null!taxtype.values.any()) return 0m; var taxvalue = taxtype.values.firstordefault(x => x.taxconfiguration!= null && x.taxconfiguration.code == Config.Code); if (taxvalue == null) return 0m; return taxvalue.rate; 2. Register with Unity Make sure to register it as a named instance (e.g. "MyTaxCalc"). container.registertype(typeof(itaxcalculator), typeof(foo.bar.mytaxcalculator), "MyTaxCalc") 3. Add to Tax Calculations In Sitecore, under Webshop Business Settings/Tax Calculation, add a new item. Insert from Template, and choose /sitecore/templates/activecommerce/business Catalog/Tax Calculator 13
14 Set the "Tax Calculator" field to the same name you registered with Unity (e.g. "MyTaxCalc"). That is the only field technically required. You can use the Locations field if you d like to restrict the use of this calculator to specific countries/regions (in conjunction with the MatchesLocation helper method). You can also extend this template with your own fields, and create a new TaxConfiguration to access those values. Adding a Custom Tax Rate Provider The built-in North America tax calculator makes use of a Rate Provider. See the Active Commerce Configuration Guide for a list of Rate Provider plugins already offered. The following instructions are for creating your own provider. 1. Create the Tax Rate Provider class Inherit from ActiveCommerce.Taxes.Rates.ISalesTaxRateProvider. Implement the required method(s). Here's an example of our FastTax plugin: public class SalesTaxRateProvider : ISalesTaxRateProvider protected static Cache _cache; protected static object _cachelock = new object(); protected const string TAX_TYPE = "sales"; protected const string UNITED_STATES = "US"; protected const string CANADA = "CA"; protected const string LICENSE_KEY_SETTING = "ActiveCommerce.FastTax.LicenseKey"; protected const string FAST_TAX_CACHE_NAME = "ActiveCommerce.FastTax.Rates"; protected const string FAST_TAX_CACHE_SIZE_SETTING = "ActiveCommerce.FastTax.Cache.Size"; protected string _licensekey; protected Cache Cache get lock (_cachelock) if (_cache == null) _cache = Sitecore.Caching.Cache.GetNamedInstance(FAST_TAX_CACHE_NAME, Sitecore.StringUtil.ParseSizeString(Sitecore.Configuration.Settings.GetSetting (FAST_TAX_CACHE_SIZE_SETTING))); 14
15 return _cache; public SalesTaxRateProvider() _licensekey = Sitecore.Configuration.Settings.GetSetting(LICENSE_KEY_SETTING); #region ISalesTaxRateProvider Members public IEnumerable<TaxRate> GetRates(AddressInfo address) if (address.country == null) throw new Exception("No country on the provided address"); string cachekey = GetCacheKey(address); var cachedrates = Cache.GetEntry(cacheKey, true); if (cachedrates!= null) return cachedrates.data as IEnumerable<TaxRate>; IEnumerable<TaxRate> rates = null; if (address.country.code == UNITED_STATES) rates = GetUnitedStatesTaxRates(address); else if (address.country.code == CANADA) rates = GetCanadianTaxRates(address); else throw new Exception("This rate provider only supports the United States and Canada"); ); if (rates!= null) Cache.Add(cacheKey, rates, GetDataSize(rates), DateTime.UtcNow.AddDays(1) 15
16 return rates; #endregion public IEnumerable<TaxRate> GetUnitedStatesTaxRates(AddressInfo address) var service = new DOTSFastTaxSoapClient(); if (address.zip.isnullorempty()) throw new Exception("U.S. sales tax lookup requires zip code"); TaxInfo taxinfo; if (address.address.isnullorempty() address.city.isnullorempty()) taxinfo = GetTaxInfoForZip(address.Zip); else try taxinfo = GetTaxInfoForAddress(address); catch (FastTaxException exception) Sitecore.Diagnostics.Log.Warn("Exception getting sales tax for address 0, will attempt by zip alone".formatwith(getcachekey(address)), exception, this); taxinfo = GetTaxInfoForZip(address.Zip); return GetRatesForTaxInfo(taxInfo); public IEnumerable<TaxRate> GetCanadianTaxRates(AddressInfo address) var service = new DOTSFastTaxSoapClient(); if (address.state.isnullorempty()) throw new Exception("Canadian sales tax lookup requires province."); 16
17 var taxresponse = service.getcanadiantaxinfobyprovince(address.state, _licensekey); if (taxresponse.error.iserror()) throw new FastTaxException(taxResponse.Error); var rates = new List<TaxRate>(); if (taxresponse.harmonizedsalestax > 0) rates.add(new TaxRate Name = taxresponse.provinceabbreviation, Type = TaxJurisdiction.Types.CANADA_HST, Rate = taxresponse.harmonizedsalestax ); else if (taxresponse.provincesalestax > 0) rates.add(new TaxRate Name = CANADA, Type = TaxJurisdiction.Types.CANADA_GST, Rate = taxresponse.goodssalestax ); rates.add(new TaxRate Name = taxresponse.provinceabbreviation, Type = TaxJurisdiction.Types.CANADA_PST, Rate = taxresponse.provincesalestax, Compounds = Boolean.TrueString.Equals(taxResponse.ApplyGSTFirst, StringComparison.InvariantCultureIgnoreCase) ); return rates.asenumerable(); protected TaxInfo GetTaxInfoForZip(string zipcode) var service = new DOTSFastTaxSoapClient(); var taxresponse = service.gettaxinfobyzip_v2(zipcode, TAX_TYPE, _licensekey); if (taxresponse.error.iserror()) throw new FastTaxException(taxResponse.Error); if (taxresponse.taxinfo == null taxresponse.taxinfo.length == 0) 17
18 throw new FastTaxException(string.Format("Fast Tax returned empty tax info for 0", zipcode)); return taxresponse.taxinfo[0]; protected TaxInfo GetTaxInfoForAddress(AddressInfo address) var service = new DOTSFastTaxSoapClient(); var taxinfo = service.gettaxinfobyaddress(address.address, address.city, address.state, address.zip, TAX_TYPE, _licensekey); if (taxinfo.error.iserror()) throw new FastTaxException(taxInfo.Error); return taxinfo; protected IEnumerable<TaxRate> GetRatesForTaxInfo(TaxInfo taxinfo) var rates = new List<TaxRate>(); if (taxinfo.staterate > 0) rates.add(new TaxRate Name = taxinfo.stateabbreviation, Type = TaxJurisdiction.Types.STATE, Rate = taxinfo.staterate ); if (taxinfo.countyrate > 0) rates.add(new TaxRate Name = taxinfo.county, Type = TaxJurisdiction.Types.COUNTY, Rate = taxinfo.countyrate ); if (taxinfo.countydistrictrate > 0) rates.add(new TaxRate Name = taxinfo.county, Type = TaxJurisdiction.Types.COUNTY_DISTRICT, Rate = taxinfo.countydistrictrate ); 18
19 if (taxinfo.cityrate > 0) rates.add(new TaxRate Name = taxinfo.city, Type = TaxJurisdiction.Types.CITY, Rate = taxinfo.cityrate ); if (taxinfo.citydistrictrate > 0) rates.add(new TaxRate Name = taxinfo.city, Type = TaxJurisdiction.Types.CITY_DISTRICT, Rate = taxinfo.citydistrictrate ); return rates.asenumerable(); public string GetCacheKey(AddressInfo address) return address.country.code + "~" + address.address + "~" + address.city + "~" + address.state + "~" + address.zip; public long GetDataSize(IEnumerable<TaxRate> rates) rates = rates.tolist(); //decimal is 128-bit / 16 bytes return rates.sum(x => x.name.length) + rates.sum(x => x.type.length) + (rates.count()*16); 2. Register with Unity Make sure to register it as a named instance (e.g. "FastTax"). container.registertype(typeof(isalestaxrateprovider), typeof(activecommerce.fasttax.salestaxrateprovider), "FastTax"); 3. Update Tax Calculations to use 19
20 Follow the Active Commerce Configuration Guide - Rate Provider section, except we ll set the Rate Provider field to the name you registered with Unity (e.g. "FastTax"). Adding a Custom Address Validator 1. Create the Address Validator class Inherit from ActiveCommerce.Validation.IAddressValidator. Implement the required method(s). Here's an example of our default SimpleAddressValidator: public class SimpleAddressValidator : IAddressValidator public const string US_ZIP_REGEX public const string CANADA_ZIP_REGEX *\d1[a-z]1\d1$"; public Sitecore.Ecommerce.DomainModel.Addresses.AddressInfo Validate(Sitecore.Ecommerce.DomainModel.Addresses.AddressInfo address) if (String.IsNullOrWhiteSpace(address.Address) String.IsNullOrWhiteSpace(address.City) address.country == null) throw new AddressValidationException("Street, City, and Country are required."); // Perform some basic housekeeping address.address = address.address.trim(); address.address2 = address.address2!= null? address.address2.trim() : null; address.city = address.city.trim(); address.state = address.state.trim(); address.zip = address.zip.trim(); // US validation if (address.country.code.equals("us", StringComparison.InvariantCultureIgnoreCase)) if (!(new Regex(US_ZIP_REGEX)).IsMatch(address.Zip)) throw new AddressValidationException("Not a valid US zip code"); if (String.IsNullOrWhiteSpace(address.State)) throw new AddressValidationException("State is required"); 20
21 // Canada validation if (address.country.code.equals("ca", StringComparison.InvariantCultureIgnoreCase)) if (!(new Regex(CANADA_ZIP_REGEX)).IsMatch(address.Zip)) throw new AddressValidationException("Not a valid Canadadian zip code"); if (String.IsNullOrWhiteSpace(address.State)) throw new AddressValidationException("Province is required"); return address; 2. Register with Unity container.registertype(typeof(activecommerce.validation.iaddressvalidator), typeof(foo.bar.addressvalidator)); Adding a Product Detail Tab 1. Create a user control Inherit from ActiveCommerce.Web.skins.ProductDetails_Base and ActiveCommerce.Web.skins.ITabControl Implement the required properties. TitleKey should return a key corresponding to a value in the Translation Dictionary (Add a new Dictionary entry if necessary) Id should return a unique (DOM) identifier (this will be the id of the tab <div> element) Here is an example: public partial class ProductTab_Info : ProductDetails_Base, ITabControl public string TitleKey get return "Product-Tab-Info"; public string Id 21
22 get return "Info"; Use the following scaffolding for you.ascx code: <% if (Sitecore.Context.PageMode.IsPageEditor) %> <ul class="ui-tabs-nav"> <li class="ui-state-active"><a href="#<%=id %>"><%=Translator.Render((TitleKey)) %></a></li> </ul> <% %> <div id="<%=id %>" class="ui-tabs-panel"> <div class="body"> <!--YOUR TAB CODE HERE--> </div> </div> This ensures your new tab is usable in the Page Editor 2. Create a sublayout Set your user control as the Ascx file 3. Add sublayout to presentation details Add your sublayout to the /sitecore/templates/activecommerce/product/product/ Standard Values presentation details Use sorting to define where your tab appears (look for Product Tab -, these are the default Active Commerce tabs) Adding an Order Pipeline Processor 1. Create a class Inherit from ActiveCommerce.OrderProcessing.IOrderPipelineProcessor Implement the required Process method Use OrderPipelineArgs argument as necessary Cart contains the state of the Shopping Cart when ordered Order contains the order information (if after the CreateOrder step) To abort the order process, set the Status and optionally AddMessage appropriately, and then call AbortPipeline() 2. Inject the processor into the orderprocessing Pipeline An example config file: <configuration xmlns:patch=" <sitecore> <processors> <orderprocessing> 22
23 <processor type="mysite.orderprocessing.someadditionalcheck, MySite.Classes" ActiveCommerce.Kernel']"/> </orderprocessing> </processors> </sitecore> </configuration> Adding a Custom Order Status 1. Create the order status class Inherit from Sitecore.Ecommerce.Orders.Statuses.OrderStatusBase. Implement the required method(s). Here's an example: public class Shipped : Sitecore.Ecommerce.Orders.Statuses.OrderStatusBase protected override void Process<T>(T order) // Do nothing. 2. Register with Unity container.registertype(typeof(sitecore.ecommerce.domainmodel.orders.orderstatu s), typeof(foo.bar.orders.statuses.shipped), "Shipped"); 3. Add to Order Statuses In Sitecore, add a new Order Status to Webshop Business Settings/Order Status Set the "Code" field to the same name you registered with Unity (e.g. "Shipped"). Optionally, assign any next available statuses using the Available List field. 23
E-Commerce Installation and Configuration Guide
E-Commerce Installation and Configuration Guide Rev: 2012-02-17 Sitecore E-Commerce Services 1.2 E-Commerce Installation and Configuration Guide A developer's guide to installing and configuring Sitecore
E-Commerce Installation and Configuration Guide
E-Commerce Installation and Configuration Guide Rev: 2011-05-19 Sitecore E-Commerce Fundamental Edition 1.1 E-Commerce Installation and Configuration Guide A developer's guide to installing and configuring
User s Guide Simple Order API Version 1.14 May 2005
CyberSource Business Center Simple Order API User s Guide Simple Order API Version 1.14 May 2005 CyberSource Contact Information For technical support questions, go to the Home page in the Business Center
Save Actions User Guide
Microsoft Dynamics CRM for Sitecore CMS 6.3-6.5 Save Actions User Guide Rev: 2012-04-26 Microsoft Dynamics CRM for Sitecore CMS 6.3-6.5 Save Actions User Guide A practical guide to using Microsoft Dynamics
Security API Cookbook
Sitecore CMS 6 Security API Cookbook Rev: 2010-08-12 Sitecore CMS 6 Security API Cookbook A Conceptual Overview for CMS Developers Table of Contents Chapter 1 Introduction... 3 Chapter 2 User, Domain,
CyberSource Business Center Simple Order API
CyberSource Business Center Simple Order API User s Guide Simple Order API June 2006 CyberSource Contact Information For technical support questions, go to the Home page in the Business Center to see the
CyberSource Business Center
Title Page CyberSource Business Center User Guide January 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information For technical support
Korean Cyber Payment Services
Title Page Korean Cyber Payment Services Using the Simple Order API April 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information
CyberSource Global Payment Service
Title Page CyberSource Global Payment Service Developer Guide For Bank Transfers, Brazilian Boletos Bancários, and Direct Debits Simple Order API SCMP API March 2015 CyberSource Corporation HQ P.O. Box
Terms and Definitions for CMS Administrators, Architects, and Developers
Sitecore CMS 6 Glossary Rev. 081028 Sitecore CMS 6 Glossary Terms and Definitions for CMS Administrators, Architects, and Developers Table of Contents Chapter 1 Introduction... 3 1.1 Glossary... 4 Page
int_adyen Version 15.1.0
int_adyen Version 15.1.0 LINK Integration Documentation - int_adyen Page 1 Table of Contents 1. General Information... 5 2. Component Overview... 6 2.1. Functional Overview... 6 Short description of the
Certified PHP/MySQL Web Developer Course
Course Duration : 3 Months (120 Hours) Day 1 Introduction to PHP 1.PHP web architecture 2.PHP wamp server installation 3.First PHP program 4.HTML with php 5.Comments and PHP manual usage Day 2 Variables,
Universal Management Portal
Title Page Universal Management Portal User Guide December 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information For general information
Table of Contents. Revision 2.0-2 -
Table of Contents Introduction...3 Payment Processing: How it Works...4 Immediate Transaction Processing...5 Delayed Transaction Processing...7 Delayed Transaction Processing: Phase 1 - Authorization...7
CyberSource and NetSuite Getting Started Guide
CyberSource and NetSuite Getting Started Guide Abstract A comprehensive guide to setting up CyberSource and NetSuite to accept payments Table of Contents This document explains the different steps to set
Microsoft Dynamics CRM Security Provider Module
Microsoft Dynamics CRM Security Provider Module for Sitecore 6.6-8.0 CRM Security Provider Rev: 2015-04-15 Microsoft Dynamics CRM Security Provider Module for Sitecore 6.6-8.0 Developer's Guide A developer's
My Sage Pay User Manual
My Sage Pay User Manual Page 1 of 32 Contents 01. About this guide..4 02. Getting started.4 Online help Accessing My Sage Pay Test Servers Live Servers The Administrator account Creating user accounts
Sitecore E-Commerce Cookbook
Sitecore E-Commerce Cookbook Rev: 2013-07-23 Sitecore E-Commerce Services 2.1 on CMS 7.0 Sitecore E-Commerce Cookbook A marketer's guide to Sitecore E-Commerce Services Sitecore E-Commerce Cookbook Table
MasterCard In tern et Gatew ay Service (MIGS)
Master Card Inter national MasterCard In tern et Gatew ay Service (MIGS) MIGS Payment Client Reference Manual Prepared By: Patrick Hayes Department: Principal Consultant, ebusiness Solutions Date Written:
Furthermore remember to uninstall the old DWI client before replacing it with the new version.
Table shortcuts: ERP to the Web Shop: Products - Related Products - Stock Product groups Product group relations - Segments Segment groups - Price - Variants Variant groups Variant group relation - Variant
Using ilove SharePoint Web Services Workflow Action
Using ilove SharePoint Web Services Workflow Action This guide describes the steps to create a workflow that will add some information to Contacts in CRM. As an example, we will use demonstration site
AliPay International Services
Title Page AliPay International Services Using the Simple Order API September 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information
Hosting Controller 7C Gateway Open API Manual
Hosting Controller 7C Gateway Open API Manual Hosting Controller 7C Gateway Open API 2 Table of Contents Introduction...3 Configuring existing gateways...4 Configuring WorldPay...4 Configuring Authorize.Net...5
Kentico CMS 7.0 E-commerce Guide
Kentico CMS 7.0 E-commerce Guide 2 Kentico CMS 7.0 E-commerce Guide Table of Contents Introduction 8... 8 About this guide... 8 E-commerce features Getting started 11... 11 Overview... 11 Installing the
CyberSource PayPal Services Implementation Guide
CyberSource PayPal Services Implementation Guide Simple Order API SCMP API September 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information
Save Actions User Guide
Microsoft Dynamics CRM for Sitecore 6.6-8.0 Save Actions User Guide Rev: 2015-04-15 Microsoft Dynamics CRM for Sitecore 6.6-8.0 Save Actions User Guide A practical guide to using Microsoft Dynamics CRM
Title Page. Credit Card Services. User Guide. August 2015. CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095
Title Page Credit Card Services User Guide August 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information For technical support questions,
Microsoft Dynamics CRM Campaign Integration - New features
Sitecore CMS Modules Microsoft Dynamics CRM Campaign Integration Rev: 2011-03-29 Sitecore CMS Modules Microsoft Dynamics CRM Campaign Integration - New features Table of Contents Chapter 1 Microsoft Dynamics
Drupal CMS for marketing sites
Drupal CMS for marketing sites Intro Sample sites: End to End flow Folder Structure Project setup Content Folder Data Store (Drupal CMS) Importing/Exporting Content Database Migrations Backend Config Unit
Merchant Web Services API
Merchant Web Services API Advanced Integration Method (AIM) XML Guide February 2013 Authorize.Net Developer Support http://developer.authorize.net Authorize.Net LLC 082007 Ver.2.0 Authorize.Net LLC ( Authorize.Net
API Documentation. Version 2.0
API Documentation Version 2.0 Table of Contents 1. Overview...5 1.1 Test Merchant Account v/s Live Merchant Account...5 1.2 Target Audience...5 1.3 Assistance...6 1.4 Technical Architecture...6 2 Getting
Virtual Terminal User s Guide
Virtual Terminal User s Guide For Professional Use Only Currently only available in English. A usage Professional Uniquement Disponible en Anglais uniquement pour l instant. Last updated: August 2009 PayPal
Setting Up a CyberSource Web Payment Account
Setting Up a CyberSource Web Payment Account Contents Setting Up a CyberSource Web Payment Account... 1 Introduction... 1 Setting Up a CyberSource Account... 2 Get Username and Password... 2 Log in to
Getting Started with CyberSource Advanced
Getting Started with CyberSource Advanced for the Simple Order API July 2013 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information For
System Administrator Training Guide. Reliance Communications, Inc. 603 Mission Street Santa Cruz, CA 95060 888-527-5225 www.schoolmessenger.
System Administrator Training Guide Reliance Communications, Inc. 603 Mission Street Santa Cruz, CA 95060 888-527-5225 www.schoolmessenger.com Contents Contents... 2 Before You Begin... 4 Overview... 4
INTEGRATING MICROSOFT DYNAMICS CRM WITH SIMEGO DS3
INTEGRATING MICROSOFT DYNAMICS CRM WITH SIMEGO DS3 Often the most compelling way to introduce yourself to a software product is to try deliver value as soon as possible. Simego DS3 is designed to get you
Payment Processor Errors A Troubleshooter
Payment Processor Errors A Troubleshooter November 2005 Version 2.4 This manual and accompanying electronic media are proprietary products of Optimal Payments Inc. They are to be used only by licensed
ecommerce Advantage 7.0 User Guide
ecommerce Advantage 7.0 User Guide 2002 Nodus Technologies - All Rights Reserved ECOMMERCE ADVANTAGE 7.0 USER GUIDE 2 Table of Contents TABLE OF CONTENTS...2 INTRODUCTION...5 PRODUCT FEATURES...6 TERMS
Document Services Online Customer Guide
Document Services Online Customer Guide Logging in... 3 Registering an Account... 3 Navigating DSO... 4 Basic Orders... 5 Getting Started... 5 Attaching Files & Print Options... 7 Advanced Print Options
Microsoft RMS Integration Installation guide
Microsoft RMS Integration Installation guide October 2013 Mercury integrates with Microsoft RMS for high-speed authorization of credit, debit, and gift card transactions. Processing is fully integrated
CHARGE Anywhere Universal Shopping Cart
CHARGE Anywhere Universal Shopping Cart Version: v1.0.1 Prepared for: CHARGE Anywhere 4041B Hadley Rd South Plainfield, NJ 07080 Phone: + 1 (800)211-1256 Fax: + 1 (732) 417-4448 I. Introduction... 3 II.
Using. MiSync for MYOB V2.8.1.5 and above
Using MiSync for V2.8.1.5 and above Copyright Printed: 11 November 2014 2014 by Metisc. All rights reserved. Notice This user guide and the software it describes are furbished under a license agreement.
GJC Web Design Virtuemart 3.0/2.0 Postcode Shipping Plugin
GJC Web Design Virtuemart 3.0/2.0 Postcode Shipping Plugin This is the VirtueMart 3.0/2.0 Postcode Shipping Plugin that fully integrates and shows real time shipping quotes based on the customers postcode
Zapper for ecommerce. Magento Plugin Version 1.0.0. Checkout
Zapper for ecommerce Magento Plugin Version 1.0.0 Branden Paine 4/14/2014 Table of Contents Introduction... 1 What is Zapper for ecommerce? Why Use It?... 1 What is Zapper?... 1 Zapper App Features...
Fraud Management Filters
Fraud Management Filters For Professional Use Only Currently only available in English. The PDF version of this guide is no longer maintained. For the latest updates, please refer to the HTML version of
CHARGE Anywhere. Mobile POS. User s Guide
CHARGE Anywhere Palm Treo Mobile POS User s Guide 1 PURPOSE... 4 2 SCOPE... 4 3 DEFINITIONS... 4 3.1 Quick Sale... 4 3.2 Sale... 4 3.3 Auth Only... 4 3.4 Force... 4 3.5 Void... 4 3.6 Retry... 4 3.7 Return...
Process Transaction API
Process Transaction API Document Version 5.9 March 2011 For further information please contact Beanstream customer support at (250) 472-2326 or [email protected]. BEAN # Page 2 of 90 Date Overview...
MySagePay. User Manual. Page 1 of 48
MySagePay User Manual Page 1 of 48 Contents About this guide... 4 Getting started... 5 Online help... 5 Accessing MySagePay... 5 Supported browsers... 5 The Administrator account... 5 Creating user accounts...
Recurring Billing. Using the SCMP API. October 2015. CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095
Title Page Recurring Billing Using the SCMP API October 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information For general information
Building a Custom User Manager
Building a Custom User Manager Coversant, Inc 10/1/2008 Contents Intended Audience... 3 Recommended Reading... 3 Building a Custom User Manager... 3 Threading Considerations... 4 Responsibilities of a
Direct Payment Protocol Errors A Troubleshooter
Direct Payment Protocol Errors A Troubleshooter December 2011 This manual and accompanying electronic media are proprietary products of Optimal Payments plc. They are to be used only by licensed users
GPMD CheckoutSuite for Magento Documentation
GPMD CheckoutSuite for Magento Documentation Version: 1.0.0 Table of Contents Installation Configuration Setting up Goals in Google Analytics Installation IMPORTANT: Before installing any Magento Extension
PayPal Integration Instructions
PayPal Integration Instructions Table of Contents Overview... 1 Option 1: Adding a Shopping Cart Wordpress simple PayPal Shopping Cart... 2 Step 1: Navigate to the Plugins Page... 2 Step 2: Click the Add
How To Build An Online Store On Ecwid
Using Ecwid to Build an Online Store Ecwid provides all you need for a one-stop online shop, including a built-in 'drag and drop' shopping cart, the recording of customer registration details, destination
Administrator's Guide
Active Directory Module AD Module Administrator's Guide Rev. 090923 Active Directory Module Administrator's Guide Installation, configuration and usage of the AD module Table of Contents Chapter 1 Introduction...
Release Notes LS Retail Data Director 3.01.04 August 2011
Release Notes LS Retail Data Director 3.01.04 August 2011 Copyright 2010-2011, LS Retail. All rights reserved. All trademarks belong to their respective holders. Contents 1 Introduction... 1 1.1 What s
EMC Documentum Application Connectors Software Development Kit
EMC Documentum Application Connectors Software Development Kit Version 6.8 Development Guide EMC Corporation Corporate Headquarters: Hopkinton, MA 01748-9103 1-508-435-1000 www.emc.com Legal Notice Copyright
CyberSource Verification Services
Title Page CyberSource Verification Services Using the Simple Order API April 2016 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information
Merchant Web Services API
Merchant Web Services API Customer Information Manager (CIM) XML Guide Authorize.Net Developer Developer Support Support http://developer.authorize.net eloper.a Authorize.Net LLC 082007 Ver.2.0 Authorize.Net
Payvision Payment Processor. Technical Integration
Payvision Payment Processor Technical Integration Rights of use: COMPLYING WITH ALL APPLICABLE COPYRIGHT LAWS IS THE RESPONSABILITY OF THE USER. WITHOUT LIMITING THE RIGHTS UNDER COPYRIGHT, NO PART OF
Getting Started with Telerik Data Access. Contents
Contents Overview... 3 Product Installation... 3 Building a Domain Model... 5 Database-First (Reverse) Mapping... 5 Creating the Project... 6 Creating Entities From the Database Schema... 7 Model-First
MS Enterprise Library 5.0 (Logging Application Block)
International Journal of Scientific and Research Publications, Volume 4, Issue 8, August 2014 1 MS Enterprise Library 5.0 (Logging Application Block) Anubhav Tiwari * R&D Dept., Syscom Corporation Ltd.
Magensa Services. Administrative Account Services API Documentation for Informational Purposes Only. September 2014. Manual Part Number: 99810058-1.
Magensa Services Administrative Account Services API Documentation for Informational Purposes Only September 2014 Manual Part Number: 99810058-1.01 REGISTERED TO ISO 9001:2008 Magensa I 1710 Apollo Court
API Integration Guide
API Integration Guide INTEGRATION GUIDE VERSION 2.2 Table of Contents 1. Overview...5 1.1 Test Merchant Account v/s Live Merchant Account...5 1.2 Target Audience...5 1.3 Assistance...6 1.4 Technical Architecture...6
SPARROW Gateway. Developer API. Version 2.00
SPARROW Gateway Developer API Version 2.00 Released May 2015 Table of Contents SPARROW Gateway... 1 Developer API... 1 Overview... 3 Architecture... 3 Merchant Private Key and Payment Types... 3 Integration...
Virtual Terminal User s Guide
Virtual Terminal User s Guide For Professional Use Only Currently only available in English. A usage Professional Uniquement Disponible en Anglais uniquement pour l instant. Last updated: June 2008 PayPal
ECommerce Online Store Solution
ECommerce Online Store Solution ADVANTAGES Sell your products online and generate immediate income for your business enterprise. Secure Socket Layer (HTTPS) FEATURES General catalog features Mobile device
Hosted Credit Card Forms Implementation Guide
Hosted Credit Card Forms Implementation Guide Merchant implementation instructions to integrate to the Setcom s hosted credit card forms. Covers: fraud screening, Verified by Visa, MasterCard SecureCode
Card-Present Processing Using the Simple Order API
Title Page Card-Present Processing Using the Simple Order API Supplement to Credit Card Services Using the Simple Order API May 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999
ACTIVANT B2B SELLER B2B SELLER NEW FEATURES GUIDE VERSION 5.8
ACTIVANT B2B SELLER B2B SELLER NEW FEATURES GUIDE VERSION 5.8 This manual contains reference information about software products from Activant Solutions Inc. The software described in this manual and the
IBM Tivoli Workload Scheduler Integration Workbench V8.6.: How to customize your automation environment by creating a custom Job Type plug-in
IBM Tivoli Workload Scheduler Integration Workbench V8.6.: How to customize your automation environment by creating a custom Job Type plug-in Author(s): Marco Ganci Abstract This document describes how
Credit Card Overview & Processing Guide entrée Version 3
Credit Card Overview & Processing Guide entrée Version 3 2000-2016 NECS, Inc. All Rights Reserved. I entrée V3 Credit Card Processing Guide Table of Contents Chapter I V3 Credit Card Overview 1 1 Obtain...
Authorize.net for WordPress
Authorize.net for WordPress Authorize.net for WordPress 1 Install and Upgrade 1.1 1.2 Install The Plugin 5 Upgrading the plugin 8 2 General Settings 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 Connecting to Authorize.net
GJC Web Design Virtuemart 2.0 Radius Shipping Plugin
GJC Web Design Virtuemart 2.0 Radius Shipping Plugin This is the VirtueMart 2.0 Radius Shipping Plugin that fully integrates and shows real time shipping quotes based on the distance from the vendor's
Page Editor Recommended Practices for Developers
Page Editor Recommended Practices for Developers Rev: 7 July 2014 Sitecore CMS 7 and later Page Editor Recommended Practices for Developers A Guide to Building for the Page Editor and Improving the Editor
PaybyFinance Magento Plugin
PaybyFinance Magento Plugin Installation Instructions and User Guide Hitachi Capital Contact Name Contact Number E-Mail Address [email protected] PaybyFinance Team
Administrator's Guide
Active Directory Module 1.2 for CMS 7.2-8.0 Administrator's Guide Rev. 141225 Active Directory Module 1.2 for CMS 7.2-8.0 Administrator's Guide How to install, configure, and use the AD module Table of
Custom SIS Integration Type Development. Jim Riecken ([email protected]) Blackboard Learn Product Development
Custom SIS Integration Type Development Jim Riecken ([email protected]) Blackboard Learn Product Development Outline What is the Student Information System (SIS) Integration framework? How does
DPD shipping module documentation. Magento module version 2.0.3
DPD shipping module documentation Magento module version 2.0.3 Table of Contents Introduction...3 Document version history...3 Definitions...3 Short user manual...3 Added functionality...4 Use cases...4
Recurring Billing. Using the Simple Order API. October 2015. CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095
Title Page Recurring Billing Using the Simple Order API October 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information For general
Table of contents. Reverse-engineers a database to Grails domain classes.
Table of contents Reverse-engineers a database to Grails domain classes. 1 Database Reverse Engineering Plugin - Reference Documentation Authors: Burt Beckwith Version: 0.5.1 Table of Contents 1 Introduction
Credit Card Processing
Microsoft Dynamics AX 2009 Credit Card Processing Technical White Paper This white paper is intended for professionals who are involved in the implementation and support of the Credit Card Processing functionality
Gateway Direct Post API
Gateway Direct Post API http://merchantguy.com @MerchantGuy Questions? [email protected] Contents Methodology....3! Direct Post Method (Server to Server FIG. 1...3 Transaction Types.....4! Sale (sale)..4!
Active Directory LDAP Quota and Admin account authentication and management
Active Directory LDAP Quota and Admin account authentication and management Version 4.1 Updated July 2014 GoPrint Systems 2014 GoPrint Systems, Inc, All rights reserved. One Annabel Lane, Suite 105 San
Merchant Web Services API
Merchant Web Services API Automated Recurring Billing (ARB) XML Guide Authorize.Net Developer Support http://developer.authorize.net Authorize.Net LLC 042007 Ver.1.0 Authorize.Net LLC ( Authorize.Net )
USER GUIDE WWPass Security for Windows Logon
USER GUIDE WWPass Security for Windows Logon December 2015 TABLE OF CONTENTS Chapter 1 Welcome... 3 Introducing WWPass Security for Windows Logon... 4 Related Documentation... 4 Presenting Your PassKey
Ecommerce and PayPal Shopping Cart
1 of 5 Ecommerce and PayPal Shopping Cart NOTE: If you do not see the "SETTINGS" tab at the top of your editor and you need to make a change or add shopping cart functionality, please send a request to
Level II and Level III Processing Using the Simple Order API
Title Page and Processing Using the Simple Order API Supplement to Credit Card Services Using the Simple Order API March 2015 Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095
Credit Card Services. Using the Simple Order API. August 2015
Title Page Credit Card Services Using the Simple Order API August 2015 CyberSource Corporation HQ P.O. Box 8999 San Francisco, CA 94128-8999 Phone: 800-530-9095 CyberSource Contact Information For general
PROCESS TRANSACTION API
PROCESS TRANSACTION API Document Version 8.7 May 2015 For further information please contact Digital River customer support at (888) 472-0811 or [email protected]. 1 TABLE OF CONTENTS 2 Lists of tables
Using the vcenter Orchestrator Plug-In for Microsoft Active Directory
Using the vcenter Orchestrator Plug-In for Microsoft Active Directory vcenter Orchestrator 4.1 This document supports the version of each product listed and supports all subsequent versions until the document
Form Protocol and Integration Guideline. Form Protocol and Integration Guideline (Protocol v3.00)
Form Protocol and Integration Guideline (Protocol v3.00) Published Date 30/01/2014 Document Index Version History... 3 LEGAL NOTICE... 3 Welcome to the Sage Pay Form integration method... 4 Overview of
Microsoft Dynamics GP. Project Accounting Billing Guide
Microsoft Dynamics GP Project Accounting Billing Guide Copyright Copyright 2007 Microsoft Corporation. All rights reserved. Complying with all applicable copyright laws is the responsibility of the user.
Microsoft Dynamics NAV Changes (NAV 2013, 2015 and 2016)
Microsoft Dynamics NAV Changes (NAV 2013, 2015 and 2016) This document provides an overview of the changed and new Microsoft Dynamics NAV objects. Sana 9 - The future of B2B e-commerce 2015 Sana Commerce
A Step by Step Guide for Building an Ozeki VoIP SIP Softphone
Lesson 3 A Step by Step Guide for Building an Ozeki VoIP SIP Softphone Abstract 2012. 01. 20. The third lesson of is a detailed step by step guide that will show you everything you need to implement for
User s Guide. Version 2.1
Content Management System User s Guide Version 2.1 Page 1 of 51 OVERVIEW CMS organizes all content in a tree hierarchy similar to folder structure in your computer. The structure is typically predefined
10 Class: Icepay_Result - Handling the error and success page... 20 10.1 Methods... 21 10.2 Example... 22 11 Class: Icepay_Postback - Handling the
API 2 Guide V 1.0.9 Index Index... 1 1 Introduction... 4 1.1 Important changes... 4 1.2 Document revisions... 4 2 Sample Scripts... 5 2.1 Basicmode sample scripts... 5 2.2 Webservice sample scripts...
Prestashop Ship2MyId Module. Configuration Process
Prestashop Ship2MyId Module Configuration Process Ship2MyID Module Version : v1.0.2 Compatibility : PrestaShop v1.5.5.0 - v1.6.0.14 1 P a g e Table of Contents 1. Module Download & Setup on Store... 4
I. Simplifying Payment Processing. II. Authorizing Your Transactions Correctly page 6
Welcome to PaySimple! Congratulations on choosing PaySimple for all your payment processing needs! You will quickly notice that billing and collections is transformed into an effortless process. With PaySimple,
