web-next: /transfer-character (transferir personaje por SumUp con todas las condiciones)

- Nueva ruta /transfer-character (10€ SumUp); borra /transfer (Stripe) y actualiza
  el link del panel.
- lib/transfer-character.ts: precheck con todas las condiciones — personaje offline,
  contraseña, token de seguridad, 2FA activo, cuenta destino válida (≠ propia) y,
  para Caballeros de la Muerte, la cuenta destino debe tener un personaje nivel >=55
  y no tener ya un DK; + bloqueo de 5s tras transferencia reciente.
- El hook precheck de PaidServiceConfig ahora recibe {accountId,email,character,body}.
- TransferForm: contraseña + token (con ojos), provider sumup, confirm.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-14 12:52:25 +00:00
parent eaae16e33a
commit d95fa932f9
7 changed files with 229 additions and 51 deletions
@@ -27,9 +27,9 @@ export async function POST(request: Request, { params }: { params: Promise<{ ser
return Response.json({ success: false, error: 'invalidCharacter' })
}
// Comprobación previa al pago (condiciones del servicio, p.ej. cambio de facción).
// Comprobación previa al pago (condiciones del servicio, p.ej. cambio de facción / transferencia).
if (cfg.precheck) {
const pc = await cfg.precheck(session.accountId, character)
const pc = await cfg.precheck({ accountId: session.accountId, email: session.bnetEmail || '', character, body })
if (!pc.ok) return Response.json({ success: false, error: 'ineligible', message: pc.message })
}