Introducción
Crea sesiones de pago y rastrea transacciones a través de las pasarelas configuradas en tu proyecto.
Más información sobre pagos en el panel de administración de OneEntry: https://doc.oneentry.cloud/docs/category/payments
🎯 ¿Qué hace este módulo?
El módulo de Payments te permite crear sesiones de pago y rastrear transacciones para tu tienda. Configuras cuentas de pago en el panel de administración (Payments > Accounts) — Stripe o personalizadas — y este módulo crea una sesión de pago para un pedido, devuelve el enlace de pago de la pasarela y te permite leer el historial y el estado de la sesión.
El SDK obtiene cuentas de pago y crea sesiones de pago; las cuentas y los estados se configuran en el panel de administración.
🚀 Inicio Rápido
Inicializa el módulo desde defineOneEntry:
const { Payments } = defineOneEntry( "your-project-url", { "token": "your-app-token" });
Crea una sesión de pago para un pedido y redirige al cliente a la pasarela (se requiere autenticación):
// Create a Stripe Checkout session for order #179.
const session = await Payments.createSession(179, "session");
console.log(session.id, session.status, session.paymentUrl);
// Send the customer to the gateway checkout page.
window.location.href = session.paymentUrl;
✨ Conceptos Clave
¿Qué es una sesión de pago?
Una sesión de pago (ISessionEntity) es un registro que contiene:
type—'session'o'intent'status— cadena de estado de pago de forma libre (por ejemplo,"waiting","completed")paymentAccountId— la cuenta configurada utilizadaorderId— el pedido asociadopaymentUrl— enlace de pago de la pasarela (onull)createdDate/updatedDate— marcas de tiempo
Tipos de sesión
| Tipo | Descripción |
|---|---|
| session | Crea una página de Stripe Checkout con un enlace de pago redirigido |
| intent | Crea una intención de pago para procesamiento de pago directo/personalizado |
Tipos de cuenta
| Tipo | Cuándo Usar | Configuración Requerida |
|---|---|---|
| Stripe | Conectar el sistema de pago de Stripe | Cuenta de Stripe, URLs |
| Custom | Sistemas de pago alternativos o pagos en efectivo | Configuración personalizada |
Estados de pago
El status de una sesión es una cadena de forma libre establecida a partir del resultado de la pasarela, no un enum fijo. Valores comunes:
| Estado | Significado |
|---|---|
| waiting | Sesión creada, esperando pago |
| completed | Pago confirmado por la pasarela |
No puedes crear o modificar estados de pago en el panel de administración. Sin embargo, puedes mapear los estados de pago a los estados de almacenamiento de pedidos para que el estado del pedido se actualice automáticamente cuando cambie el estado de pago.
Ciclo de vida del pago
1. Configure a payment account in the admin panel (Stripe or custom)
↓
2. Customer places an order (Orders module)
↓
3. Create a payment session → Payments.createSession(orderId, type)
↓
4. Redirect the customer to session.paymentUrl
↓
5. Customer completes payment at the gateway
↓
6. Session status reflects the gateway result (e.g. "waiting" → "completed")
↓
7. Mapped order status is updated automatically
📋 Lo Que Necesitas Saber
Las cuentas de pago se crean en el panel de administración
No puedes crear cuentas de pago a través del SDK — créalas y edítalas en el panel de administración de OneEntry (Payments > Accounts), proporcionando Nombre, Tipo (Stripe o Personalizado) y Token. Para cuentas de Stripe también configuras Success URL, Cancel URL y Session lifetime. El SDK es para obtener cuentas y crear sesiones.
Sincronización de estados
Los estados de pago están mapeados a los estados de almacenamiento de pedidos en el panel de administración (Payments > Statuses → seleccionar almacenamiento de pedidos → mapear estados → guardar). Esto permite actualizaciones automáticas del estado del pedido cuando cambia el estado de pago.
Nunca almacenes datos de tarjeta en bruto
Nunca almacenes números de tarjetas de crédito, CVV o fechas de caducidad completas. El pago es manejado por la pasarela (Stripe), lo que te mantiene fuera del alcance para almacenar datos de tarjetas; OneEntry nunca almacena detalles de tarjetas en bruto.
Los reembolsos viven en el módulo de Orders
El módulo de Payments no tiene métodos de reembolso. Los reembolsos son manejados por el módulo de Orders a través de createRefundRequest(), cancelRefundRequest() y getRefunds().
📊 Tabla de Referencia Rápida
| Método | Descripción | Caso de Uso |
|---|---|---|
| getAccounts() 🔐 | Obtener todas las cuentas de pago | Listar cuentas de pago configuradas |
| getAccountById() 🔐 | Obtener cuenta de pago por ID | Obtener detalles de cuenta específica |
| createSession() 🔐 | Crear sesión de pago | Generar enlace de pago para pedido |
| getSessions() 🔐 | Obtener todas las sesiones de pago (paginadas) | Ver historial de sesiones de pago |
| getSessionById() 🔐 | Obtener sesión de pago por ID | Verificar estado de sesión específica |
| getSessionByOrderId() 🔐 | Obtener sesión de pago por ID de pedido | Encontrar pago para pedido específico |
🔐 = Requiere autorización
❓ Preguntas Comunes (FAQ)
¿Cómo configuro los pagos de Stripe?
Crea una cuenta de pago en el panel de administración con tipo "Stripe", luego configura Success URL, Cancel URL y Session lifetime. Usa createSession() con tipo "session" para generar un enlace que redirija a los clientes a Stripe Checkout.
¿Cuál es la diferencia entre los tipos de pago de sesión e intención?
Una sesión crea una página de Stripe Checkout con una URL de redirección, ideal para páginas de pago alojadas. Una intención crea una intención de pago para la integración de formularios de pago personalizados directamente en tu aplicación.
¿Puedo soportar múltiples cuentas de pago?
Sí. Crea múltiples cuentas de pago (Stripe o personalizadas) en el panel de administración. Cada pedido puede usar una cuenta diferente a través de su paymentAccountIdentifier.
¿Cómo vinculo los estados de pago a los estados de pedido?
En el panel de administración, ve a Payments > Statuses, selecciona tu almacenamiento de pedidos y mapea los estados de pago a los estados de pedido. Esto permite la sincronización automática.
¿Cómo emito un reembolso?
Los reembolsos no son parte del módulo de Payments. Usa el módulo de Orders: createRefundRequest() para solicitar un reembolso, cancelRefundRequest() para cancelar una solicitud y getRefunds() para listarlos.
🎓 Mejores Prácticas
- Autentica primero — cada método de Payments requiere un usuario autorizado (ver AuthProvider).
- Redirige a
paymentUrldespués de crear una sesión, y maneja las URL de retorno de la pasarela en tu aplicación. - Lee el estado de la sesión, no del cliente — verifica el
statusde la sesión (ogetSessionByOrderId()) para confirmar el pago. - Mapea los estados de pago a los estados de pedido para que el estado del pedido se mantenga sincronizado automáticamente.
- Prueba con claves de prueba de Stripe antes de pasar a producción.
🔗 Documentación Relacionada
- Panel de Administración de OneEntry - Payments - Documentación oficial del panel de administración
- Panel de Administración de OneEntry - Cuentas de Pago - Configurar cuentas de pago
- Panel de Administración de OneEntry - Estados de Pago - Sincronización de estados
- Panel de Administración de OneEntry - Integración de Stripe - Conectar Stripe
- Módulo de Orders - Gestión de pedidos, pago y reembolsos
- Módulo de AuthProvider - Requerido para la autorización de sesiones
- Documentación de Stripe - Integración de pasarela de pago