store: el concepto del cobro incluye también la IP
Tienda · BNet inna@inna.cl · Cuenta 15#1 · Innadin · IP 213.94.48.99 · Grito de la sirena (45327) x2 La IP ya se capturaba, pero solo se guardaba en home_stripelog.acore_ip. OJO: meterla en el concepto SÍ se la manda a la pasarela, cosa que antes no pasaba (ni Stripe ni SumUp la recibían). Va a propósito, para identificar al pagador en su panel si hay fraude o una devolución a mano. Se omite si no se conoce y también el 0.0.0.0 de relleno, que no aporta nada. Verificado contra checkouts reales de Stripe (test): IPv4 con 1 ítem = 100 chars; IPv6 (39 chars) con 1 ítem = 124; IPv6 con 30 ítems = 172, recortando los ítems. Todos por debajo del límite de 200. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -62,6 +62,7 @@ export async function POST(request: Request) {
|
||||
bnetEmail: session.bnetEmail,
|
||||
account: session.username,
|
||||
character,
|
||||
ip,
|
||||
})
|
||||
const metadata = { service: 'store', order_ref: ref }
|
||||
|
||||
|
||||
@@ -208,7 +208,12 @@ export interface PricedCart {
|
||||
* su panel, así que es lo único que tendrán Stripe/SumUp para identificar un
|
||||
* pago si hay que reclamar o devolver algo a mano.
|
||||
*
|
||||
* Formato: `Tienda · BNet <email> · Cuenta <cuenta> · <personaje> · Nombre (id) x2, …`
|
||||
* Formato: `Tienda · BNet <email> · Cuenta <cuenta> · <personaje> · IP <ip> · Nombre (id) x2, …`
|
||||
*
|
||||
* OJO: la IP va aquí a propósito (identificar al pagador si hay fraude o una
|
||||
* devolución a mano), pero esto se la manda a la pasarela; hasta ahora solo se
|
||||
* guardaba en `home_stripelog.acore_ip`. Se omite si no se conoce, y también el
|
||||
* 0.0.0.0 de relleno, que no dice nada.
|
||||
*
|
||||
* Se recorta a `MAX_CONCEPT`: Stripe y SumUp limitan el campo (~250-255), y un
|
||||
* carrito de 100 líneas se pasaría de largo. Se recortan solo los ÍTEMS, nunca
|
||||
@@ -219,13 +224,15 @@ const MAX_CONCEPT = 200
|
||||
|
||||
export function storeConcept(
|
||||
cart: PricedCart,
|
||||
opts: { bnetEmail?: string; account?: string; character: string },
|
||||
opts: { bnetEmail?: string; account?: string; character: string; ip?: string },
|
||||
): string {
|
||||
const ip = opts.ip && opts.ip !== '0.0.0.0' ? opts.ip : ''
|
||||
const head = [
|
||||
'Tienda',
|
||||
opts.bnetEmail ? `BNet ${opts.bnetEmail}` : null,
|
||||
opts.account ? `Cuenta ${opts.account}` : null,
|
||||
opts.character,
|
||||
ip ? `IP ${ip}` : null,
|
||||
]
|
||||
.filter(Boolean)
|
||||
.join(' · ')
|
||||
|
||||
Reference in New Issue
Block a user