f0b006404c
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>
12 lines
539 B
SQL
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;
|