New
Web Payments SDK

Customize the Card Entry Form

The Web Payments SDK lets you customize the style of the card entry and gift card entry forms. This topic shows you what style choices you have, how to set them, and what the resulting form looks like. You can see several customization ideas by viewing the Design Showcase sample on GitHub.

The steps in this topic add code to the application you created from the quickstart project sample. If you have not created an application using the quickstart, you need to do so before completing the following steps. You can find a complete example of the customized card in GitHub.

The five visual elements of the Card payment method are represented as selectors that you specify in a card option styling object. You can set colors, fonts, and border options as shown in the following image: web-payments : customize : callout

Configure a customized Card payment method Permalink Get a link to this section

The following steps produce the dark mode card previously shown.

Step 1: Add a dark mode style to the page Permalink Get a link to this section

  1. Add a reference to the dark-mode css class to the body of the page:

     <body class="dark-mode">
       <form id="payment-form">
         <div id="card-container"></div>
       </form>
     </body>
    
  2. Add a <link> tag below the current <link href="app.css" rel="stylesheet" /> in the header to add the dark-mode.css:

     <link href="dark-mode.css" rel="stylesheet" />
    

Step 2: Define a custom style Permalink Get a link to this section

Declare style customizing options in the CardOptions object. The style field value is of the type CardClassSelectors.

const darkModeCardStyle = {
  '.input-container': {
    borderColor: '#2D2D2D',
    borderRadius: '6px',
  },
  '.input-container.is-focus': {
    borderColor: '#006AFF',
  },
  '.input-container.is-error': {
    borderColor: '#ff1600',
  },
  '.message-text': {
    color: '#999999',
  },
  '.message-icon': {
    color: '#999999',
  },
  '.message-text.is-error': {
    color: '#ff1600',
  },
  '.message-icon.is-error': {
    color: '#ff1600',
  },
  input: {
    backgroundColor: '#2D2D2D',
    color: '#FFFFFF',
    fontFamily: 'helvetica neue, sans-serif',
  },
  'input::placeholder': {
    color: '#999999',
  },
  'input.is-error': {
    color: '#ff1600',
  },
  '@media screen and (max-width: 600px)': {
     'input': {
        'fontSize': '12px',
     }
  }     
};

Step 3: Initialize the Card payment method with a custom style Permalink Get a link to this section

Add the style parameter to the payments.card function call:

async function initializeCard(payments) {
  const card = await payments.card({
    style: darkModeCardStyle,
  });
  await card.attach('#card-container');

  return card;
}   

Dynamic layout Permalink Get a link to this section

Your application and the buyer's actions determine whether the form is shown as a single line or a two line form. If your application has styled the <div> that the form is attached to as fixed width of less than 480 pixels, the form is rendered as two lines. If the <div> is declared with minimum and maximum widths that let the buyer resize the page, then the form reacts to a wider <div> container by rendering as a single line.

Related topics Permalink Get a link to this section