Pagos y clientes
Tokenización
Tokeniza tarjetas de forma segura directamente desde tu frontend usando recaudo.js v2. La librería carga automáticamente el SDK del procesador de pagos (Conekta, Stripe) configurado en tu cuenta y tokeniza la tarjeta de manera transparente.
Checkout con tu marca: Este sistema te permite crear tu propia página de checkout sin necesidad de redirigir a páginas externas. Los datos de tarjeta nunca pasan por tu servidor.
Integración en 4 pasos
1
Incluir la librería JavaScript
HTML
<script src="https://recaudo.app/js/recaudo.min.js"></script>
2
Inicializar la librería
Inicializa recaudo.js con tu Publishable Key. El método init() carga el SDK del procesador configurado.
JavaScript
// Crear instancia con tu Publishable Key
const recaudo = new Recaudo('pk_live_tu_publishable_key');
// Inicializar (carga el SDK del procesador automáticamente)
await recaudo.init();
// Verificar que está listo
console.log('Gateway:', recaudo.getGateway()); // 'conekta' o 'stripe'
3
Tokenizar la tarjeta
Los datos de la tarjeta se tokenizan directamente con el procesador de pagos. Nunca pasan por tu servidor.
JavaScript
async function handlePayment() {
try {
const token = await recaudo.createToken({
number: '4242424242424242',
exp_month: 12,
exp_year: 2027,
cvv: '123',
name: 'Juan Pérez',
email: 'juan@example.com',
// Campos opcionales (requeridos para AMEX)
address: 'Av. Reforma 123',
city: 'CDMX',
state: 'CDMX',
postal_code: '06600',
country: 'MX'
});
// token contiene:
// - id: Token del procesador (tok_xxx para Conekta, pm_xxx para Stripe)
// - gateway: 'conekta' o 'stripe'
// - card: { brand, last4, exp_month, exp_year }
// Enviar al backend para procesar
await fetch('/tu-backend/procesar-pago', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
token: token.id,
card: token.card, // Incluir info de tarjeta para mejor tracking
amount: 100.00
})
});
} catch (error) {
// error.type: 'validation_error', 'gateway_error', 'sdk_error'
console.error('Error:', error.message);
}
}
4
Procesar el cobro desde tu backend
Usa el token para crear un cargo o una suscripción. Incluye el objeto card para mejor tracking.
cURL - Cargo directo
curl -X POST https://recaudo.app/api/v1/charges \
-H "Authorization: Bearer sk_live_tu_secret_key" \
-H "Content-Type: application/json" \
-d '{
"amount": 100.00,
"currency": "MXN",
"token": "tok_abc123...",
"card": {
"brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027
},
"description": "Compra en tienda",
"receipt_email": "cliente@example.com"
}'
cURL - Crear suscripción
curl -X POST https://recaudo.app/api/v1/subscriptions \
-H "Authorization: Bearer sk_live_tu_secret_key" \
-H "Content-Type: application/json" \
-d '{
"plan": "5f1c7b3e-2a94-4d18-b6c0-9e3f8a1d7c25",
"customer": "8e250c25-9d84-4892-98ec-d71fc1fcd3c7",
"token": "tok_abc123...",
"card": {
"brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027
}
}'
Objeto Token (respuesta de createToken)
Respuesta de createToken()
{
"id": "tok_2sR5Vx1J5K...", // Token del procesador (tok_xxx Conekta, pm_xxx Stripe)
"gateway": "conekta", // Procesador utilizado
"card": {
"brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027
},
"created_at": "2024-01-15T10:30:00.000Z"
}
Endpoints de la API
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /v1/tokens/config |
Obtener configuración del procesador (usado por recaudo.js para cargar el SDK correcto) |
| GET | /v1/tokens/public-key |
Obtener clave pública para encriptación (legacy v1) |
| POST | /v1/tokens |
Crear token desde datos encriptados (legacy v1) |
| GET | /v1/tokens/:token |
Obtener información de un token |
| DELETE | /v1/tokens/:token |
Eliminar un token |
Métodos de recaudo.js
| Método | Descripción |
|---|---|
new Recaudo(publishableKey) |
Constructor. Crea una instancia con tu Publishable Key. |
init() |
Carga el SDK del procesador configurado. Debe llamarse antes de createToken(). |
createToken(cardData) |
Tokeniza los datos de la tarjeta con el procesador. |
getGateway() |
Regresa el nombre del procesador ('conekta', 'stripe'). |
isInitialized() |
Regresa true si init() ya se llamó. |
detectCardBrand(number) |
Detecta la marca de la tarjeta (visa, mastercard, amex, etc). |
Seguridad: Los tokens son generados directamente por el procesador de pagos (Conekta/Stripe). Los datos de tarjeta nunca pasan por los servidores de Recaudo ni por tu servidor, facilitando el cumplimiento de PCI DSS.
Manejo de errores
Los errores de recaudo.js incluyen un tipo para facilitar su manejo:
Ejemplo de manejo de errores
try {
await recaudo.init();
const token = await recaudo.createToken(cardData);
} catch (error) {
switch (error.type) {
case 'validation_error':
// Datos de tarjeta inválidos
showError(error.message);
break;
case 'gateway_error':
// Error del procesador (tarjeta rechazada, etc)
showError(error.message);
break;
case 'sdk_error':
// Error cargando el SDK del procesador
showError('Error de conexión. Intenta de nuevo.');
break;
case 'configuration_error':
// Procesador no configurado
showError('Error de configuración.');
break;
default:
showError('Error inesperado.');
}
}
¿Te sirvió esta página?
Gracias por avisarnos.