api-referencePOST
Suivi automatique disponible
Si vous utilisez Stripe, LemonSqueezy ou Polar, vous n'avez pas besoin de ce point de terminaison. Les paiements sont suivis automatiquement lorsque votre fournisseur de paiement est connecte.POST
https://analytics.flowsery.com/analytics/api/v1/paymentsEnregistre un paiement et attribue le revenu. amount est obligatoire ; envoyez transactionId et visitorUid ou sessionUid lorsque vous les avez.
Jeton Bearer (jeton workspace ou clé API de site)
Les jetons d'espace de travail nécessitent un sélecteur de site Web
Les jetons de l'API Workspace peuvent accéder à tous les sites Web de l'espace de travail. Transmettez <code>websiteId</code> ou <code>domain</code> pour que Flowsery sache quel site Web interroger ou muter. Les clés API de site Web sont déjà limitées à un seul site Web, le sélecteur peut donc être omis.Sélecteur de site Web
| Parametre | Taper | Description |
|---|---|---|
websiteId | string | ID de site Web à utiliser avec un jeton API d'espace de travail. Incluez ce champ dans le corps JSON, sauf si vous fournissez domain. Omettre lors de l'authentification avec une clé API de site Web. |
domain | string | Site Web domain à utiliser avec un jeton API d'espace de travail lorsque websiteId n'est pas fourni. Incluez ce champ dans le corps JSON. Omettre lors de l'authentification avec une clé API de site Web. |
Corps de la requete
| Parametre | Taper | Description |
|---|---|---|
amountREQUIS | number | Obligatoire. Montant en unités monétaires principales, par ex. 29.99. Avec isRefund, le montant remboursé. 0 enregistre un objectif free_trial au lieu de payment. |
currency | string | Code ISO 4217 comme "USD", "EUR" ou "GBP". Vaut "USD" par défaut s'il est omis, et non la devise du site. |
transactionId | string | Votre propre identifiant de paiement. Il doit être unique : un identifiant répété est rejeté avec 409 Conflict, pas dédupliqué. Renvoyez-le avec isRefund pour marquer ce paiement comme remboursé, et utilisez-le plus tard pour le supprimer. |
visitorUid | string | ID de visiteur Flowsery facultatif, provenant généralement du cookie _fs_vid sur votre propre backend. |
sessionUid | string | ID de session Flowsery facultatif, provenant généralement du cookie _fs_sid. |
email | string | Adresse e-mail du client. |
name | string | Nom du client. |
customerId | string | Identifiant client provenant de votre fournisseur de paiement. |
isRenewal | boolean | À true pour les paiements récurrents. Les renouvellements comptent dans le revenu mais n'enregistrent pas l'objectif payment automatique. false par défaut. |
isRefund | boolean | À true pour enregistrer un remboursement. Avec un transactionId existant, met à jour le montant remboursé de ce paiement au lieu d'ajouter une ligne. false par défaut. |
timestamp | string | Date ISO 8601 du paiement, pour un import d'historique. Maintenant par défaut. |
La charge utile de réussite contient uniquement un message de confirmation.
Erreurs
Une requête sans amount renvoie 400 Bad Request. Un transactionId déjà enregistré pour ce site renvoie 409 Conflict, sauf si isRefund vaut true.Exemple de requete (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"
}]
}