Web SDK: Almacenar credenciales de pago modularmente

A continuación, describimos el proceso paso a paso para habilitar las funcionalidades de inscripción de campos seguros en su sistema:

Paso 1: incluya la biblioteca en su proyecto.

Para utilizar la inscripción con campos seguros debe incluir nuestro SDK en su página antes de cerrar su tag <body>.

<script src="https://sdk.deuna.io/v1/static/js/main.min.js"></script>

Paso 2: Inicialice los campos seguros con la clave pública

En tu aplicación de JavaScript, crea una instancia de clase Deuna proporcionando un la información mostrada en el code snippet

const instanceDeuna = deunaSDK.init(
    publicApiKey: "....",
    orderToken: "<order.token>",
    env: "<staging o production>",
    onEventDispatch: (event: obj) => { console.log(event) }
)

Paso 3: Inicie el proceso de pago

Para hacerlo, utiliza el modularPaymentCredentialsStorage y proporcionar los parámetros de configuración necesarios.

Los parámetros esenciales son los country, que determina el país para el que está configurado el proceso de pago, y checkoutSessionId, que hace referencia a la sesión de pago del pago actual. El siguiente bloque de código presenta un ejemplo de la configuración de parámetros.

La siguiente tabla enumera todos los parámetros requeridos y sus descripciones.

ParámetroDescripción
countryEste parámetro determina el país para el que se está configurando el proceso de pago. Debe establecerse en uno de los siguientes códigos de país: CO, BR, CL, PE, EC o MX.
checkoutSessionIdSe refiere a la sesión de checkout del pago actual.
Example: '88f6f491-032a-4b08-b549-f8f221bfc7da'
  const modularPaymentCredentialsStorage = deuna.modularPaymentCredentialsStorage({
    country,
    checkoutSessionId,
  })

Paso 4: Monte los Modular Payment Credentials

Después de definir los parámetros, definirá, configurará y montará los Secure Fields. Para cada Secure Field, debe definir el name y options al crearlo con el modularPaymentCredentialsStorage.create.

La siguiente tabla presenta todas las configuraciones disponibles:

ParámetrosDescripción
nameLos nombres disponibles para los nombres de campo son cvv, pan o expiration .
options.placeholderMarcador de posición predeterminado para el campo.
options.stylesEstilos CSS adicionales para el campo actual.
options.labelEtiqueta visible del campo.
options.showErrorDefine si se mostrarán los errores. Las opciones disponibles son true y false.
options.onChangeUna función auxiliar que se puede configurar y se ejecutará cuando cambie el contenido del campo. Indica si los campos tienen errores.
options.onBlurUna función auxiliar que se puede configurar y se ejecutará al desenfocar desde la entrada.
options.onFocusUna función auxiliar que se puede configurar y se ejecutará cuando se enfoque en la entrada.

Una vez que hayas configurado el parámetro, renderizarás el Secure Field creado con el render seleccionando un elemento HTML usando un selector de CSS válido (#, ., [data-*]).

El siguiente bloque de código presenta un ejemplo de la configuración de parámetros para tres campos seguros y, a medida que se montan, los campos se presentan al usuario.

  const secureNumber = modularPaymentCredentialsStorage.create({
    /**
     * Fields name, can be 'cvv' | 'card_number' | 'expiration_date'
     */
    name: 'card_number',
    // All options are optional
    options: {
      placeholder: '4242 4242 4242 4242',
      /**
       * you can edit card form styles
       * only you should write css then it will be injected into the iframe
       * example 
       * `@import url('https://fonts.googleapis.com/css2?family=Luckiest+Guy&display=swap');
       *  .Deuna-text-field__content.focus label.Deuna-text-field__label {
       *    color: orange;
       *    font-family: 'Poppins' !important;
       *   }`
       */
      styles: ``,
      label: 'Card Number',
      showError: true,
      // Indicates if the fields has error
      onChange: ({ error }) => {
        if (error) {
          console.log('error_pan')
        } else {
          console.log('not_error_pan')
        }
      },
      // Trigger when blurring from input
      onBlur() {
        console.log('blur_pan')
      },
      // Trigger when focussing on input
      onFocus: () => {
        console.log('focus_pan')
      }
    },
  })

  // Render into desired element
  secureNumber.render('#pan')

  const secureExpiration = modularPaymentCredentialsStorage.create({
    /**
     * Fields name, can be 'cvv' | 'card_number' | 'expiration_date'
     */
    name: 'expiration_date',
    // All options are optional
    options: {
      placeholder: 'MM / YYYY',
      /**
       * you can edit card form styles
       * only you should write css then it will be injected into the iframe
       * example 
       * `@import url('https://fonts.googleapis.com/css2?family=Luckiest+Guy&display=swap');
       *  .Deuna-text-field__content.focus label.Deuna-text-field__label {
       *    color: orange;
       *    font-family: 'Poppins' !important;
       *   }`
       */
      styles: ``,
      label: 'Card Expiration Date',
      showError: true,
      // Indicates if the fields has error
      onChange: ({ error }) => {
        if (error) {
          console.log('error_expiration')
        } else {
          console.log('not_error_expiration')
        }
      },
      // Trigger when blurring from input
      onBlur() {
        console.log('blur_expiration')
      },
      // Trigger when focussing on input
      onFocus: () => {
        console.log('focus_expiration')
      }
    },
  })

  // Render into desired element
  secureExpiration.render('#expiration_date')


  const secureCvv = modularPaymentCredentialsStorage.create({
    /**
     * Fields name, can be 'cvv' | 'card_number' | 'expiration_date'
     */
    name: 'cvv',
    // All options are optional
    options: {
      placeholder: 'CVV',
     /**
       * you can edit card form styles
       * only you should write css then it will be injected into the iframe
       * example 
       * `@import url('https://fonts.googleapis.com/css2?family=Luckiest+Guy&display=swap');
       *  .Deuna-text-field__content.focus label.Deuna-text-field__label {
       *    color: orange;
       *    font-family: 'Arial' !important;
       *   }`
       */
      styles: ``,
      label: 'CVV',
      showError: true,
      // Indicates if the fields has error
      onChange: ({ error }) => {
        if (error) {
          console.log('error_cvv')
        } else {
          console.log('not_error_cvv')
        }
      },
      // Trigger when blurring from input
      onBlur() {
        console.log('blur_cvv')
      },
      // Trigger when focussing on input
      onFocus: () => {
        console.log('focus_cvv')
      }
    },
  })

  // Render into desired element
  secureCvv.render('#cvv')

Una vez montados, se mostrarán los tres campos seguros.

Paso 5: Crear un token abovedado

Para inscribirse, cree un Vaulted Token.

// Create Vaulted Token
// This will trigger an error if there are missing data
// You can catch it using a try/catch
const vaultedToken = await modularPaymentCredentialsStorage.generateVaultedToken({
  // Required: You can create an input to get this formation
  cardHolderName: 'Esteban Posada',
  customer: {
    document: {
      document_number: '1037888999',
      document_type: 'CC',
    },
  },
})

Si necesita la respuesta completa, puede utilizar modularPaymentCredentialsStorage.generateVaultedTokenWithInformation.

const vaultedTokenWithInformation = await modularPaymentCredentialsStorage.generateVaultedTokenWithInformation({
  // Required: You can create an input to get this formation
  cardHolderName: 'Esteban Posada',
  customer: {
    document: {
      document_number: '1037888999',
      document_type: 'CC',
    },
  },
})

Pasos adicionales

Además de los ejemplos de código proporcionados, puede acceder a la App Demo para obtener una implementación completa de DEUNA Modular Payment Credentials Storage.