React Native

Los métodos y parámetros del SDK de React Native.

Referencia del SDK de React Native de Tonder (paquete @tonder.io/rn-sdk). El SDK usa un Provider, hooks y componentes para gestionar el estado y renderizar la UI. Requiere RN 0.70+ y React 16.8+.

TonderProvider

Componente envolvente que inicializa el SDK y provee su contexto. Debe colocarse en la raíz de tu flujo de checkout.

ParámetroTipoDescripción
configObjectObjeto de configuración del SDK.
config.typeSDKTypeTipo de SDK: SDKType.INLINE (Full), SDKType.LITE (Lite) o SDKType.ENROLLMENT (guardado de tarjetas).
config.modeStringModo: 'development', 'production' o 'sandbox'.
config.apiKeyStringTu llave pública de Tonder.
config.returnURLStringURL opcional para completar la redirección 3DS.
import { TonderProvider, SDKType, Environment } from '@tonder.io/rn-sdk';

function App() {
  return (
    <TonderProvider
      config={{
        type: SDKType.INLINE,
        mode: Environment.stage,
        apiKey: 'your-api-key',
      }}
    >
      <YourApp />
    </TonderProvider>
  );
}

TonderPayment

Renderiza la UI de pago completa y prediseñada. Se usa cuando SDKType es INLINE (Full). No recibe props.

import { TonderPayment } from '@tonder.io/rn-sdk';

export default function FullPaymentScreen() {
  return (
    <SafeAreaView>
      <TonderPayment />
    </SafeAreaView>
  );
}

TonderPayment incluye su propio botón de pago. Si prefieres usar el tuyo, el modo INLINE también expone payment() a través del hook:

const { create, payment } = useTonder<SDKType.INLINE>();

const handlePayment = async () => {
  const { response, error } = await payment();
  if (error) {
    console.error('Error payment: ', error);
    return;
  }
  console.log('Response payment: ', response);
};

Lite (UI personalizada)

Para construir tu propia UI, configura SDKType.LITE en el TonderProvider y usa el hook useTonder para acceder a los métodos de pago y gestión de tarjetas, junto con los componentes de entrada seguros del SDK.

Componentes de entrada seguros

Para integraciones SDKType.LITE, el SDK provee componentes individuales y seguros para construir tu propia UI. Cada uno acepta props de estilo.

ComponenteDescripción
CardHolderInputEntrada segura para el nombre del titular de la tarjeta.
CardNumberInputEntrada segura para el número de tarjeta.
CardCVVInputEntrada segura para el CVV/CVC.
CardExpirationDateInputEntrada segura para la fecha de expiración completa.
CardExpirationMonthInputEntrada segura para el mes de expiración.
CardExpirationYearInputEntrada segura para el año de expiración.
import {
  CardHolderInput,
  CardNumberInput,
  CardExpirationMonthInput,
  CardExpirationYearInput,
  CardCVVInput
} from '@tonder.io/rn-sdk';

<CardHolderInput style={customStyles.input} />
<CardNumberInput style={customStyles.input} />
<CardExpirationMonthInput style={customStyles.input} />
<CardExpirationYearInput style={customStyles.input} />
<CardCVVInput style={customStyles.input} />

CVV de una tarjeta guardada

Cuando el comprador paga con una tarjeta ya guardada y el emisor pide reingresar el CVV, pasa el cardId de esa tarjeta para que el campo actualice el CVV de esa tarjeta y no el de una nueva:

<CardCVVInput
  cardId="saved-card-skyflow-id"
  placeholder="Enter CVV"
/>

Tres restricciones:

  • Solo se muestra cuando hay una tarjeta seleccionada.
  • Solo puede haber un CardCVVInput con cardId a la vez.
  • Es mutuamente excluyente con el formulario completo de tarjeta nueva.

Hook useTonder

Hook de React que da acceso a los métodos del SDK. Se usa en los modos LITE y ENROLLMENT, y también en INLINE cuando quieres disparar el pago desde tu propio botón.

import { useTonder, SDKType } from '@tonder.io/rn-sdk';

// Para el modo LITE (formularios de pago personalizados)
const { create, payment, saveCustomerCard, getCustomerCards, ... } = useTonder<SDKType.LITE>();

// Para el modo ENROLLMENT (guardado de tarjetas)
const { create, saveCustomerCard, getCardSummary, reset } = useTonder<SDKType.ENROLLMENT>();

Métodos comunes (LITE y ENROLLMENT)

MétodoDescripción
create(config)Inicializa el SDK con la configuración. Debe llamarse antes de renderizar componentes o llamar a otros métodos.
reset()Reinicia el estado del SDK a sus valores iniciales y libera recursos. Útil para reinicializar el flujo tras una transacción.

create(config) acepta:

ParámetroTipoDescripción
config.secureTokenStringSecure token obtenido de tu backend (requerido para operaciones con tarjetas).
config.paymentDataObjectInformación del pago (para el modo LITE).
config.customerObjectInformación del cliente (para el modo ENROLLMENT).
config.callbacksObjectFunciones de callback opcionales (p. ej. onFinishPayment, onFinishSave).
config.customizationObjectOpciones de personalización de UI opcionales.
config.eventsObjectManejadores de eventos opcionales para los campos del formulario de tarjeta.
// Modo LITE
const { create } = useTonder<SDKType.LITE>();

const paymentData = {
  customer: { email: 'test@example.com', firstName: 'John', lastName: 'Doe' },
  cart: {
    total: 399,
    items: [{ name: 'Product', amount_total: 399, description: 'Description', price_unit: 399, quantity: 1 }]
  },
};

const initializePayment = async () => {
  const { error } = await create({
    secureToken: 'your-secure-token',
    paymentData,
    callbacks: { onFinishPayment: handlePaymentFinish }
  });
};

Métodos del modo LITE

Disponibles cuando type es SDKType.LITE, dan control total sobre el flujo de pago con componentes personalizados.

MétodoDescripción
payment()Procesa un pago usando los datos configurados y los valores de los componentes de entrada LITE.
saveCustomerCard()Tokeniza y guarda la tarjeta actual a partir de los componentes de entrada LITE.
getCustomerCards()Recupera la lista de tarjetas guardadas del cliente.
getCardSummary(skyflowId)Recupera información detallada de una tarjeta guardada usando su Skyflow ID.
removeCustomerCard(skyflowId)Elimina una tarjeta guardada.
getPaymentMethods()Recupera los métodos de pago disponibles.
const { payment, saveCustomerCard, getCustomerCards, getCardSummary, removeCustomerCard, getPaymentMethods } = useTonder<SDKType.LITE>();

const { response, error } = await payment();

getCardSummary(skyflowId) devuelve:

interface ICardsSummaryResponse {
  user_id: number;
  card: ICardSkyflowFields;
}

interface ICardSkyflowFields {
  card_number: string;      // enmascarado
  expiration_month: string;
  expiration_year: string;
  skyflow_id: string;
  card_scheme: string;
  cardholder_name: string;
}

Enrollment (guardado de tarjetas)

Configura SDKType.ENROLLMENT en el TonderProvider para flujos de guardado de tarjetas. Puedes construir tu propia UI con los componentes de entrada seguros, o usar el componente prediseñado TonderEnrollment.

import { TonderProvider, SDKType, Environment } from '@tonder.io/rn-sdk';

<TonderProvider
  config={{
    type: SDKType.ENROLLMENT,
    mode: Environment.stage,
    apiKey: 'your-api-key',
  }}
>
  <YourApp />
</TonderProvider>

TonderEnrollment (prediseñado)

Componente con UI de enrolamiento lista para usar. No recibe props.

import { TonderEnrollment } from '@tonder.io/rn-sdk';

export default function EnrollmentScreen() {
  return (
    <SafeAreaView>
      <TonderEnrollment />
    </SafeAreaView>
  );
}

Métodos del modo ENROLLMENT

MétodoDescripción
saveCustomerCard()Tokeniza y guarda la tarjeta actual. Solo necesario si construyes un formulario de enrolamiento personalizado o un botón de guardado propio.
getCardSummary(skyflowId)Recupera información detallada de una tarjeta guardada usando su Skyflow ID.
const { saveCustomerCard, getCardSummary } = useTonder<SDKType.ENROLLMENT>();

const { response, error } = await saveCustomerCard();

Siguientes pasos

¿Te resultó útil esta página?

En esta página