Integra Battlepay con SumUp (órdenes battlepay_orders)
- pagos_sumup.py: crear_checkout_battlepay(reference,...) y obtener_checkout() - battlepay_view: lista las órdenes PENDING de la cuenta de juego - battlepay_pay_view: crea checkout SumUp para una orden concreta (checkout_reference=reference) - sumup_webhook: marca la orden PAID (valida estado contra la API de SumUp si falta) - plantillas account/battlepay.html y partials/pago_sumup.html - sql/battlepay_sumup.sql (tablas battlepay_orders/battlepay_price) y docs actualizados Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+35
-7
@@ -81,14 +81,42 @@ guardan `bnet_id` y `bnet_email` para cambios de contraseña/email.
|
||||
3. Registrar una cuenta desde la web y comprobar el email de activación.
|
||||
4. Activar y **probar login en el cliente 3.4.3** (ver nota de verificación).
|
||||
|
||||
## Battlepay / SumUp (tienda del cliente)
|
||||
|
||||
Integración de la tienda nativa del cliente (Battlepay) con la pasarela SumUp,
|
||||
usando las tablas `battlepay_orders` / `battlepay_price` del source
|
||||
(`sql/battlepay_sumup.sql`, aplicar sobre la BD `auth`).
|
||||
|
||||
**Flujo:**
|
||||
1. En el juego, el jugador pulsa *Comprar*; si el producto tiene precio en
|
||||
`battlepay_price`, el worldserver crea una orden `PENDING` en
|
||||
`battlepay_orders` (con `account_id` = id de cuenta de juego y una
|
||||
`reference` única).
|
||||
2. En la web, `/es/battlepay/` lista las órdenes `PENDING` de la cuenta de juego
|
||||
seleccionada y permite pagarlas.
|
||||
3. `/es/battlepay/pay/` crea un checkout de SumUp usando la `reference` de la
|
||||
orden como `checkout_reference`.
|
||||
4. El webhook `/es/sumup-webhook/` marca la orden como `PAID`
|
||||
(`paid_at = UNIX_TIMESTAMP()`), validando el estado contra la API de SumUp si
|
||||
hace falta.
|
||||
5. El worldserver entrega el producto y marca la orden `DELIVERED`.
|
||||
|
||||
**Código:** `home/pagos_sumup.py` (`crear_checkout_battlepay`, `obtener_checkout`),
|
||||
vistas `battlepay_view` / `battlepay_pay_view` / `sumup_webhook` en `home/views.py`,
|
||||
plantillas `account/battlepay.html` y `partials/pago_sumup.html`.
|
||||
|
||||
> Nota: `battlepay_orders.account_id` es el **id de cuenta de juego**
|
||||
> (`account.id`), mientras que `battlePayCredits` (créditos del sistema clásico
|
||||
> de puntos) vive en la **cuenta bnet** (`battlenet_accounts.id`); se unen por
|
||||
> `account.battlenet_account`. Esta pasarela usa las órdenes en €, no los créditos.
|
||||
|
||||
**Configuración necesaria:**
|
||||
- Aplicar `sql/battlepay_sumup.sql` en la BD `auth` y rellenar `battlepay_price`
|
||||
con tus `product_id` reales.
|
||||
- Configurar el webhook de SumUp apuntando a `https://<tu-dominio>/es/sumup-webhook/`.
|
||||
- Enlazar `/es/battlepay/` desde el menú de «Mi cuenta» (opcional).
|
||||
|
||||
## Pendiente / opcional
|
||||
|
||||
- **Battlepay/SumUp**: el source trae `battlePayCredits` (en `battlenet_accounts`)
|
||||
y las tablas `battlepay_orders` / `battlepay_price` (`sql/custom/battlepay_sumup.sql`).
|
||||
Ojo: `battlepay_orders.account_id` es el **id de cuenta de juego**
|
||||
(`account.id`), mientras que `battlePayCredits` está en la **cuenta bnet**
|
||||
(`battlenet_accounts.id`); se unen por `account.battlenet_account`. La
|
||||
integración de la pasarela con estas tablas se puede abordar como paso
|
||||
siguiente.
|
||||
- Mostrar el email (en lugar de `<bnetId>#1`) como nombre visible en
|
||||
«Mi cuenta» es un retoque cosmético opcional.
|
||||
|
||||
Reference in New Issue
Block a user