
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
pt-card-sdk
Advanced tools
SDK para embeber formulario de tarjeta via iframe y comunicar token por postMessage
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.
npm install pt-card-sdk
<script src="./dist/card-sdk.js"></script>
// ES6 Modules
import CardSDK from 'pt-card-sdk';
// CommonJS
const CardSDK = require('pt-card-sdk');
// AMD
define(['pt-card-sdk'], function(CardSDK) {
// usar CardSDK
});
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();
<div id="card-form"></div>
new CardSDK(options)
| Opción | Tipo | Requerido | Descripción |
|---|---|---|---|
mountId | string | ✅ | ID del elemento donde se montará el iframe |
frameUrl | string | ✅ | URL del iframe de pago |
onSuccess | function | ❌ | Callback para pagos exitosos |
onError | function | ❌ | Callback para errores |
onReady | function | ❌ | Callback cuando el SDK está listo |
onValidation | function | ❌ | Callback para validaciones |
onCancel | function | ❌ | Callback cuando el usuario cancela |
onTimeout | function | ❌ | Callback para timeouts |
onLoad | function | ❌ | Callback cuando el iframe se carga |
onResize | function | ❌ | Callback cuando el iframe cambia de tamaño |
* | any | ❌ | Cualquier otra propiedad se inyectará como query parameter en la URL |
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' });
onSuccess: Se dispara cuando el pago se procesa exitosamenteonError: Se dispara cuando ocurre un erroronReady: Se dispara cuando el SDK está completamente inicializadoonValidation: Se dispara durante validaciones de formularioPuedes escuchar eventos personalizados usando el método on():
sdk.on('customEvent', function(data) {
// Manejar evento personalizado
});
Ver examples/complete-example.html para un ejemplo completo con:
Ver examples/angularjs-example.html para integración con AngularJS.
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
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
}
}
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
# Instalar dependencias
npm install
# Compilar el SDK
npm run build
# Publicar a NPM
npm publish
El SDK se compila usando Webpack con configuración UMD, lo que permite su uso en:
postMessageAsegúrate de que el elemento con el mountId especificado existe en el DOM antes de llamar init().
Si usas bundlers, asegúrate de importar correctamente:
// ✅ Correcto
import CardSDK from 'pt-card-sdk';
// ❌ Incorrecto
import { CardSDK } from 'pt-card-sdk';
Verifica que:
frameUrl sea correcta y accesibleMIT License
Para reportar bugs o solicitar features, por favor crea un issue en el repositorio del proyecto.
FAQs
SDK para embeber formulario de tarjeta via iframe y comunicar token por postMessage
We found that pt-card-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.