api-referencePOST
Seguimiento automatico disponible
Si usa Stripe, LemonSqueezy o Polar, no necesita este endpoint. Los pagos se rastrean automaticamente cuando su proveedor de pagos esta conectado.POST
https://analytics.flowsery.com/analytics/api/v1/paymentsRegistra un pago y atribuye los ingresos. amount es obligatorio; envía transactionId y visitorUid o sessionUid cuando los tengas.
Token Bearer (token de workspace o clave API de sitio web)
Los tokens de espacio de trabajo necesitan un selector de sitio web
Los tokens de API del espacio de trabajo pueden acceder a todos los sitios web del espacio de trabajo. Pase <code>websiteId</code> o <code>domain</code> para que Flowsery sepa qué sitio web consultar o mutar. Las claves API del sitio web ya están destinadas a un sitio web, por lo que se puede omitir el selector.Selector de sitios web
| Parametro | Tipo | Descripcion |
|---|---|---|
websiteId | string | ID del sitio web para usar con un token de API del espacio de trabajo. Incluya este campo en el cuerpo JSON a menos que proporcione domain. Omitir al autenticarse con una clave API de sitio web. |
domain | string | Sitio web domain para usar con un token API de espacio de trabajo cuando no se proporciona websiteId. Incluya este campo en el cuerpo JSON. Omitir al autenticarse con una clave API de sitio web. |
Cuerpo de solicitud
| Parametro | Tipo | Descripcion |
|---|---|---|
amountOBLIGATORIO | number | Obligatorio. Importe en unidades principales de la moneda, p. ej. 29.99. Con isRefund, el importe reembolsado. 0 registra un objetivo free_trial en lugar de payment. |
currency | string | Código ISO 4217 como "USD", "EUR" o "GBP". Si se omite, se usa "USD", no la moneda del sitio. |
transactionId | string | Tu propio ID de pago. Debe ser único: un ID repetido se rechaza con 409 Conflict, no se deduplica. Vuelve a enviarlo con isRefund para marcar ese pago como reembolsado y úsalo después para borrarlo. |
visitorUid | string | ID de visitante Flowsery opcional, que generalmente se obtiene de la cookie _fs_vid en su propio backend. |
sessionUid | string | ID de sesión Flowsery opcional, normalmente procedente de la cookie _fs_sid. |
email | string | Direccion de correo electronico del cliente. |
name | string | Nombre del cliente. |
customerId | string | ID del cliente de su proveedor de pagos. |
isRenewal | boolean | Pon true para pagos recurrentes. Las renovaciones cuentan como ingresos pero no registran el objetivo payment automático. false por defecto. |
isRefund | boolean | Pon true para registrar un reembolso. Con un transactionId existente, actualiza el importe reembolsado de ese pago en lugar de añadir un registro. false por defecto. |
timestamp | string | Fecha ISO 8601 del pago, para cargar historial. Por defecto, ahora. |
La carga útil de éxito contiene únicamente un mensaje de confirmación.
Errores
Una solicitud sin amount devuelve 400 Bad Request. Un transactionId ya registrado para este sitio devuelve 409 Conflict, salvo que isRefund sea true.Solicitud de ejemplo (Node.js)
const handler = async (req, res) => {
const _fs_vid = req.cookies._fs_vid;
const _fs_sid = req.cookies._fs_sid;
const response = await fetch(
"https://analytics.flowsery.com/analytics/api/v1/payments",
{
method: "POST",
headers: {
Authorization: `Bearer ${FLOWSERY_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
websiteId: process.env.FLOWSERY_WEBSITE_ID,
amount: 29.99,
currency: "USD",
transactionId: "payment_456",
visitorUid: _fs_vid,
sessionUid: _fs_sid,
email: "buyer@example.com",
}),
}
);
res.status(200).send("Payment tracked");
};200
{
"status": "success",
"data": [{
"message": "Payment recorded successfully"
}]
}