New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

pt-card-sdk

Package Overview
Dependencies
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pt-card-sdk

SDK para embeber formulario de tarjeta via iframe y comunicar token por postMessage

latest
npmnpm
Version
1.1.1
Version published
Maintainers
1
Created
Source

CardSDK - Payment Gateway SDK

Descripción

CardSDK es un SDK de JavaScript para integrar formularios de pago de manera segura en aplicaciones web. Utiliza iframes para mantener la seguridad de los datos de tarjetas de crédito.

Instalación

Via NPM

npm install pt-card-sdk

Via Script Tag

<script src="./dist/card-sdk.js"></script>

Uso Básico

1. Importar el SDK (si usas bundlers)

// ES6 Modules
import CardSDK from 'pt-card-sdk';

// CommonJS
const CardSDK = require('pt-card-sdk');

// AMD
define(['pt-card-sdk'], function(CardSDK) {
    // usar CardSDK
});

2. Inicializar el SDK

const sdk = new CardSDK({
    mountId: 'card-form',
    frameUrl: 'https://tu-servidor.com/sdk/demo-events',
    
    // Eventos automáticamente registrados
    onSuccess: function(data) {
        console.log('Pago exitoso:', data);
    },
    
    onError: function(error) {
        console.error('Error en el pago:', error);
    },
    
    onReady: function() {
        console.log('SDK listo');
    },
    
    onValidation: function(validation) {
        console.log('Validación:', validation);
    }
});

// Inicializar
sdk.init();

3. HTML Requerido

<div id="card-form"></div>

API del SDK

Constructor

new CardSDK(options)

Opciones

OpciónTipoRequeridoDescripción
mountIdstringID del elemento donde se montará el iframe
frameUrlstringURL del iframe de pago
onSuccessfunctionCallback para pagos exitosos
onErrorfunctionCallback para errores
onReadyfunctionCallback cuando el SDK está listo
onValidationfunctionCallback para validaciones
onCancelfunctionCallback cuando el usuario cancela
onTimeoutfunctionCallback para timeouts
onLoadfunctionCallback cuando el iframe se carga
onResizefunctionCallback cuando el iframe cambia de tamaño
*anyCualquier otra propiedad se inyectará como query parameter en la URL

Métodos

init()

Inicializa el SDK y monta el iframe en el contenedor especificado.

sdk.init();

on(eventType, callback)

Registra un listener para un evento específico.

sdk.on('customEvent', function(data) {
    console.log('Evento personalizado:', data);
});

emit(eventType, payload)

Emite un evento (principalmente para uso interno).

sdk.emit('customEvent', { message: 'Hola' });

Eventos Disponibles

Eventos Estándar

  • onSuccess: Se dispara cuando el pago se procesa exitosamente
  • onError: Se dispara cuando ocurre un error
  • onReady: Se dispara cuando el SDK está completamente inicializado
  • onValidation: Se dispara durante validaciones de formulario

Eventos Personalizados

Puedes escuchar eventos personalizados usando el método on():

sdk.on('customEvent', function(data) {
    // Manejar evento personalizado
});

Ejemplos

Ejemplo Completo

Ver examples/complete-example.html para un ejemplo completo con:

  • Inicialización del SDK
  • Manejo de eventos
  • Sistema de logs
  • Controles de destrucción

Ejemplo con AngularJS

Ver examples/angularjs-example.html para integración con AngularJS.

Ejemplo con Parámetros

const sdk = new CardSDK({
    mountId: 'card-form',
    frameUrl: 'https://tu-servidor.com/sdk/demo-events',
    
    // Parámetros que se inyectarán automáticamente en la URL
    userId: '12345',
    sessionId: 'abc-def-ghi-jkl',
    theme: 'dark',
    language: 'es',
    customData: 'valor-personalizado',
    
    onSuccess: function(data) {
        console.log('Pago exitoso:', data);
    },
    
    onError: function(error) {
        console.error('Error:', error);
    }
});

sdk.init();
// La URL final será: https://tu-servidor.com/sdk/demo-events?userId=12345&sessionId=abc-def-ghi-jkl&theme=dark&language=es&customData=valor-personalizado

Ejemplo con Webpack

import CardSDK from 'pt-card-sdk';

class PaymentComponent {
    constructor() {
        this.sdk = null;
    }
    
    initPayment() {
        this.sdk = new CardSDK({
            mountId: 'payment-container',
            frameUrl: process.env.PAYMENT_IFRAME_URL,
            onSuccess: (data) => this.handleSuccess(data),
            onError: (error) => this.handleError(error)
        });
        
        this.sdk.init();
    }
    
    handleSuccess(data) {
        // Redirigir o mostrar mensaje de éxito
    }
    
    handleError(error) {
        // Mostrar mensaje de error
    }
}

Desarrollo

Estructura del Proyecto

sdk/
├── src/
│   └── index.js          # Código fuente principal
├── dist/
│   └── card-sdk.js       # Build compilado
├── examples/
│   ├── complete-example.html
│   └── angularjs-example.html
├── package.json
├── webpack.config.js
└── README.md

Comandos de Desarrollo

# Instalar dependencias
npm install

# Compilar el SDK
npm run build

# Publicar a NPM
npm publish

Build

El SDK se compila usando Webpack con configuración UMD, lo que permite su uso en:

  • Navegadores (script tag)
  • Node.js (CommonJS)
  • Bundlers (ES6 modules)
  • AMD (RequireJS)

Seguridad

  • El SDK utiliza iframes para mantener los datos de pago aislados
  • Toda comunicación se realiza via postMessage
  • Los datos sensibles nunca tocan el DOM principal
  • Validación de origen en todos los mensajes

Compatibilidad

  • ✅ Chrome 60+
  • ✅ Firefox 55+
  • ✅ Safari 12+
  • ✅ Edge 79+
  • ✅ IE 11 (con polyfills)

Troubleshooting

Error: "No se encontró el contenedor"

Asegúrate de que el elemento con el mountId especificado existe en el DOM antes de llamar init().

Error: "CardSDK is not a constructor"

Si usas bundlers, asegúrate de importar correctamente:

// ✅ Correcto
import CardSDK from 'pt-card-sdk';

// ❌ Incorrecto
import { CardSDK } from 'pt-card-sdk';

El iframe no se carga

Verifica que:

  • La frameUrl sea correcta y accesible
  • No haya problemas de CORS
  • El servidor esté ejecutándose

Changelog

v0.1.2

  • ✅ Corregido problema de exportación con bundlers
  • ✅ Mejorado sistema de eventos
  • ✅ Agregado soporte para eventos automáticos en constructor
  • ✅ Documentación actualizada

v0.1.1

  • ✅ Versión inicial
  • ✅ Soporte básico para iframes
  • ✅ Sistema de eventos simple

Licencia

MIT License

Soporte

Para reportar bugs o solicitar features, por favor crea un issue en el repositorio del proyecto.

Keywords

card

FAQs

Package last updated on 22 Sep 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts