NAiOS Wallet
walletv0.2.0Pagos como servicio (Connect-as-a-service): cuentas conectadas Stripe, cobro con reparto (comisión + neto), payouts y ledger. Motor de cobros del marketplace de NAiOS Academy.
Descripción
NAiOS Wallet es el motor de cobros de la plataforma: un servicio de pagos tipo Stripe Connect-as-a-service que otros plugins consumen en proceso (hoy NAiOS Academy). Qué hace: • Cuentas conectadas (Stripe Connect Express): onboarding por AccountLink y estado real sincronizado desde Stripe (charges/payouts habilitados → activa). • Cobro con reparto: cada venta apunta la comisión de la plataforma y el neto del beneficiario; soporta reparto multi-actor (co-teachers de un curso, ponentes de un evento). • Payouts: el vendedor retira su saldo disponible mediante transfer al connected account. • Ledger en céntimos: saldo ganado / disponible / pagado, con comisión por defecto configurable. • Trazabilidad: cada pago guarda un origen legible y una URL al recurso de origen (el panel enlaza a la venta). • Costura de proveedor: 'simulated' en dev (funciona sin claves, onboarding instantáneo) ↔ 'stripe-connect' real; si no tiene clave propia, reutiliza la del plugin billing. Seguridad: las claves nunca llegan al navegador y los payouts exigen una cuenta de cobros activa. API in-process: recordSale / recordSaleSplit / payeeBalance / onboard / accountStatus. TPV web/QR y Tap to Pay quedan para fases posteriores.
Funcionalidades (8)
Onboarding por AccountLink y estado real sincronizado desde Stripe: la cuenta pasa a activa cuando se habilitan cobros y payouts.
Cada venta separa la comisión de la plataforma del neto del beneficiario; soporta reparto multi-actor entre varios payees.
El vendedor retira su saldo disponible mediante transfer al connected account; en dev se liquida al instante.
Saldo ganado / disponible / pagado por beneficiario, con comisión por defecto configurable.
Cada pago guarda un origen legible (p. ej. «Curso: …») y una URL al recurso de origen; el panel enlaza a la venta.
'simulated' en dev (sin claves) ↔ 'stripe-connect' real. Si no tiene clave propia, reutiliza la de billing.
Otros plugins consumen recordSale / recordSaleSplit / payeeBalance / onboard / accountStatus sin HTTP.
Las claves nunca llegan al navegador; los payouts exigen una cuenta de cobros activa.
Changelog
- Proveedor 'stripe-connect' REAL: onboarding Express (accounts.create + AccountLink), accountStatus por accounts.retrieve y payout por transfer al connected account
- Fallback de clave: si el wallet no tiene stripe_secret_key, reutiliza la del plugin billing (misma cuenta sandbox/producción, sin duplicar)
- Sincronización de estado de cuenta al volver del onboarding (pending → active) y redirección real a Stripe desde la UI
- Trazabilidad: nueva columna ref_url en el ledger; la columna Origen del panel enlaza al recurso de origen de cada venta
- Smoke tests del proveedor + resolución de clave (mock del SDK, sin red)
- F1 lean: Connect-as-a-service en modo 'simulated' — cuentas conectadas, cobro con split (comisión + neto) y ledger de payouts
- API de servicio in-process consumida por NAiOS Academy
- Panel del vendedor: estado de cuenta, saldo (ganado/disponible/pagado), payout y ventas