Files
NightSpire/web-next/sql/home_store_order.sql
T
Inna f0b006404c store: pagar también con Stripe y SumUp (tarjeta), además del saldo PD/PV
Selector de forma de pago en el carrito (Saldo PD/PV · Stripe · SumUp), como el
resto de servicios. Con tarjeta, el carrito se convierte a euros (100 PD = 1 €,
200 PV = 1 €), se guarda como pedido y se entrega tras confirmarse el pago.

- BD: tabla home_store_order (ref, cuenta, personaje, items, importe) para no
  depender del límite de metadata de la pasarela (sql/home_store_order.sql).
- lib/store: storeEuroTotal, createStoreOrder, fulfillStoreOrder.
- paid-services: servicio 'store' (fulfill = enviar el pedido por order_ref);
  la entrega la dispara service-success/reconciliación/webhook como los demás.
- /api/store/send: rama provider stripe/sumup (crea pedido + checkout, mínimo
  1 €/0,50 €) además del pago con saldo.
- StoreBrowser: selector Saldo/Stripe/SumUp; con tarjeta redirige a la pasarela.
- i18n Store (payMethod/payBalance/payStripe/paySumUp/confirmCard/amountTooLow)
  y Paid.store (title/success). Verificado: euros 200PD+28PV=2,14 €, pedido y
  fulfill por order_ref (SOAP real pendiente, worldserver caído).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 00:14:01 +00:00

12 lines
539 B
SQL

-- Pedido de tienda pagado con tarjeta (Stripe/SumUp): guarda el carrito para
-- entregarlo tras confirmarse el pago (evita el límite de metadata de la pasarela).
CREATE TABLE IF NOT EXISTS home_store_order (
ref VARCHAR(64) PRIMARY KEY,
account_id INT NOT NULL,
character_name VARCHAR(12) NOT NULL,
items TEXT NOT NULL, -- "itemId:qty,itemId:qty,..."
amount DECIMAL(10,2) NOT NULL, -- euros
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY k_acc (account_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;