d-points: dejar sólo Stripe y SumUp con compra de PD funcional

Elimina las pestañas de PayPal/dLocal/Crypto/Skrill y por país; deja
Información + Stripe + SumUp (las dos únicas pasarelas que se usarán).

- Stripe: totalmente funcional reutilizando createCheckoutSession + webhook
  + página de éxito. Nueva ruta /api/dpoints/checkout crea la sesión con
  importe elegido por el usuario (1 unidad = 100 PD).
- SumUp: integración real (lib/sumup.ts) mediante checkout hospedado,
  habilitada al definir SUMUP_API_KEY/SUMUP_MERCHANT_CODE; si no, avisa.
- Nuevo servicio de entrega `dpoints` (lib/paid-services.ts) que acredita
  PD en home_api_points; entrega idempotente vía reclamo atómico.
- Página /d-points-success entrega ambos proveedores (session_id/ref).
- Iconos SVG generados para cada pasarela (stripe/sumup, marca + wordmark).
- Moneda configurable con DP_CURRENCY (por defecto EUR).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 17:14:29 +00:00
parent 44fcedbe62
commit 89f6e5689f
13 changed files with 453 additions and 693 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 46" role="img" aria-label="Stripe">
<rect x="0" y="0" width="150" height="46" rx="9" fill="#635BFF"/>
<text x="75" y="31" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-weight="700" font-size="24" letter-spacing="-1" fill="#ffffff">stripe</text>
</svg>

After

Width:  |  Height:  |  Size: 336 B

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" aria-label="Stripe">
<rect x="0" y="0" width="32" height="32" rx="7" fill="#635BFF"/>
<text x="16" y="23" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-weight="700" font-size="20" fill="#ffffff">S</text>
</svg>

After

Width:  |  Height:  |  Size: 309 B

@@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 170 46" role="img" aria-label="SumUp">
<rect x="0" y="0" width="46" height="46" rx="9" fill="#1E64FF"/>
<path d="M13 13 H33 V26 L26 33 H13 Z" fill="#ffffff"/>
<text x="105" y="31" text-anchor="middle" font-family="Arial, Helvetica, sans-serif" font-weight="700" font-size="24" letter-spacing="-1" fill="#1E64FF">SumUp</text>
</svg>

After

Width:  |  Height:  |  Size: 391 B

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" role="img" aria-label="SumUp">
<rect x="0" y="0" width="32" height="32" rx="7" fill="#1E64FF"/>
<path d="M9 9 H23 V18 L18 23 H9 Z" fill="#ffffff"/>
</svg>

After

Width:  |  Height:  |  Size: 219 B