API Reference

Achats

Enregistrer et suivre les achats liés aux participations au concours

Achats

Suivez les achats effectués par les participants au concours. Les achats peuvent attribuer des points aux participations selon la configuration de suivi des achats de votre concours.


Enregistrer un achat

POST/api/v1/contests/:contestId/purchases
Private API Key Required

Enregistrez un achat pour un participant au concours. Le participant se verra attribuer des points selon les paramètres de suivi des achats du concours. Les achats en double (même orderId) sont détectés et ne rapporteront pas de points deux fois.

Paramètres de chemin

contestIdstring required

L'identifiant unique du concours

Corps de la requête

emailstring required

Adresse email de l'acheteur (doit correspondre à une participation existante)

orderIdstring required

Identifiant unique de la commande dans votre système

amountnumber required

Montant de l'achat (doit être supérieur à 0)

currencystring

Code de la devise (par défaut : 'USD')

Requête

bash
curl -X POST https://blitzrocket.com/api/v1/contests/clx1abc123/purchases \
  -H "x-api-key: your_private_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "jane@example.com",
    "orderId": "order-12345",
    "amount": 49.99,
    "currency": "USD"
  }'

Réponse (201 Créé)

json
{
  "success": true,
  "data": {
    "purchaseId": "purchase_xyz789",
    "entryId": "entry_abc123",
    "pointsAwarded": 50,
    "alreadyExists": false,
    "message": "Achat enregistré avec succès"
  }
}

Réponse (200 - Doublon)

Si un achat avec le même orderId existe déjà, l'API retourne un statut 200 pour indiquer qu'il a déjà été traité :

json
{
  "success": true,
  "data": {
    "purchaseId": "purchase_xyz789",
    "entryId": "entry_abc123",
    "pointsAwarded": 0,
    "alreadyExists": true,
    "message": "Achat déjà enregistré"
  }
}

Champs de réponse

purchaseIdstring

Identifiant unique de l'enregistrement de l'achat

entryIdstring

La participation à laquelle l'achat est associé

pointsAwardednumber

Points attribués pour cet achat (0 si doublon)

alreadyExistsboolean

Indique si cet achat a déjà été enregistré

messagestring

Message d'état lisible par un humain

Réponses d'erreur

StatutErreurDescription
400Corps de requête invalideEmail, orderId ou montant manquant ou invalide
400Le montant doit être positifLa valeur du montant doit être supérieure à 0
403Clé privée requiseCe point de terminaison nécessite une clé API privée
404Concours non trouvéAucun concours n'existe avec l'ID donné

Exemple d'intégration

Voici un exemple complet d'intégration du suivi des achats avec un webhook Shopify :

javascript
app.post("/webhooks/shopify/order-created", async (req, res) => {
  const order = req.body;

  try {
    const response = await fetch(
      `https://blitzrocket.com/api/v1/contests/${CONTEST_ID}/purchases`,
      {
        method: "POST",
        headers: {
          "x-api-key": process.env.BLITZROCKET_PRIVATE_KEY,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          email: order.email,
          orderId: order.id.toString(),
          amount: parseFloat(order.total_price),
          currency: order.currency,
        }),
      }
    );

    const data = await response.json();
    console.log("Achat suivi :", data);
    res.status(200).send("OK");
  } catch (error) {
    console.error("Échec du suivi de l'achat :", error);
    res.status(500).send("Erreur");
  }
});