import { defineWebhook } from 'plz/workers'
export default defineWebhook({
name: 'webhook-stripe-payments',
reference: 'Recibe eventos de pago de Stripe y actualiza contactos',
method: 'POST',
async run(payload, plz) {
const event = payload
if (event.type !== 'checkout.session.completed') {
return { ignored: true, reason: `Evento ${event.type} ignorado` }
}
const session = event.data.object
const email = session.customer_details.email
// Buscar contacto por email y actualizar
const matches = await plz.contacts.search({ email })
if (matches.length > 0) {
const contactId = matches[0].id
// Actualizar variables custom del contacto
await plz.contacts.setVariable(contactId, 'ctc_ultimo_pago', `$${session.amount_total / 100}`)
await plz.contacts.setVariable(contactId, 'ctc_fecha_pago', new Date().toISOString())
await plz.contacts.setVariable(contactId, 'ctc_stripe_customer', session.customer)
// Agregar tag
await plz.contacts.addTag(contactId, 'cliente-pagado')
}
return {
success: true,
email,
amount: session.amount_total / 100,
currency: session.currency
}
}
})