AI agents: the content index is at /llms.txt. Every page is also available as Markdown — send the request header Accept: text/markdown, or append .md to the page URL.
Xperience Docs

Cookie consent

We use necessary cookies (opens in a new tab) to run our website and improve your experience while browsing. Additional cookies are only used with your consent. You may revoke your consent on the Cookies Policy (opens in a new tab) page or in your browser at any time.

Configure (opens in a new tab)
  • Documentation
    InstallationUsing the Xperience interfaceDeveloping websitesConfiguring XperienceManaging usersSecuring websitesDeploying websitesManaging website contentMultilingual websitesMacro expressionsExternal utilitiesIntegrating 3rd party systemsCustom developmentE-commerce featuresOn-line marketing featuresRelease notes - Xperience 13Xperience terminology glossary
  • Tutorial
    Using the Xperience interfaceDeveloper tutorialBusiness tutorialResource hub for marketers
  • API Examples
    ConfigurationContent managementDevelopmentE-commerceOn-line marketingSocial media
  • Community Questions & Answers (opens in a new tab)
  • Contact support (opens in a new tab)
  1. Home
  2. E-commerce features
  3. Developing on-line stores
  4. Implementing a checkout process
  5. Building the order review step
  6. Connecting to payment gateways

Connecting to payment gateways


Was this page helpful?

Send us feedback Go back to top

When building the checkout process on your e-commerce site, you may want to enable your customers to pay directly via a payment gateway (e.g. PayPal or credit card).

This page demonstrates how to work with API from the CMS.Ecommerce assembly (installed into your project as part of the Kentico.Xperience.Libraries integration package) that deals with payment of orders. However, the specific implementation can differ for each service, and we recommend that you work closely with documentation of the implemented payment gateway provider.

You need to implement payment gateways for the payment methods in the live site application itself and add the related payment methods to Xperience via the administration interface.

Configuring payment methods in Xperience

Set up all payment methods for which you want to implement a payment gateway as manual payment methods.

See Configuring payment methods to learn more about manual payment methods.

When configuring the payment method, leave the Payment gateway URL and Payment gateways provider class fields blank. The live site application decides which payment gateway to use based on the method's code name.

Note: Payment gateways that you implement in your live site application cannot be used from the administration interface of the Xperience application (for example when manually creating or editing orders).

Developing payment gateways

In the controller action of the last checkout process step (usually the order review step), redirect the customer to a controller that takes care of the specific payment gateway.

If you provide multiple payment methods and you need to distinguish their payment gateways, check the cart's payment method code name. For example:

C#
if (shoppingCart.PaymentOption.PaymentOptionName.Equals("PaymentMethodCodeName"))
{
    return RedirectToAction("ActionForPayment", "MyPaymentGateway");
}

Most payment service providers require a specific way of interfacing with their payment service. You need to implement the connection in a way that adheres to the provider's documentation and specification.

The payment gateway then receives a response from the service. Create a new PaymentResultInfo object with information from the response. Use the UpdateOrderStatus method of the OrderInfo object representing the order to save the payment result to the database. For example:

C#
if (response != null)
{
    // Gets the order based on the invoice number from the response
    OrderInfo order = orderInfo.Get(response.InvoiceNo);
    if (order?.OrderSiteID != siteService.CurrentSite.SiteID)
    {
        order = null;
    }

    // Checks whether the paid amount of money matches the order price
    // and whether the payment was approved
    if (order != null && response.Amount == order.OrderTotalPrice && response.Approved)
    {
        // Creates a payment result object that will be viewable in Xperience
        PaymentResultInfo result = new PaymentResultInfo
        {
            PaymentDate = DateTime.Now,
            PaymentDescription = response.Message,
            PaymentIsCompleted = response.Completed,
            PaymentTransactionID = response.TransactionID,
            PaymentStatusValue = response.ResponseCode,
            PaymentMethodName = "PaymentName"
        };

        // Saves the payment result to the database
        order.UpdateOrderStatus(result);
    }
}

The system sets the order status as configured in the payment method.

On this page

  • Configuring payment methods in Xperience
  • Developing payment gateways

Related pages

  • Building the order review step
  • Implementing a checkout process
  • Configuring payment methods
  • Working with payment results
  • Orders
  • Order statuses