Passer au contenu principal
Les ventes représentent les transactions d’achat dans votre boutique, qu’elles soient terminées, en attente, abandonnées, échouées ou réglées. Chaque vente contient des informations complètes sur le produit, le client, les détails de paiement, les remises appliquées, les informations d’expédition et l’accès post-achat.

Comprendre les ventes

L’API Ventes de Chariow fournit un accès programmatique à toutes les données de transaction de votre boutique. Vous pouvez :
  • Récupérer une liste de toutes les ventes avec des options de filtrage
  • Obtenir des informations détaillées sur des ventes spécifiques
  • Suivre le statut de paiement et les détails de règlement
  • Accéder à l’historique d’achat des clients
  • Surveiller les statistiques de téléchargement
  • Consulter les remises appliquées et les campagnes marketing

Objet Vente

Une vente contient des informations complètes sur l’achat avec la structure suivante :
{
  "id": "sal_abc123xyz",
  "status": "completed",
  "channel": {
    "value": "store",
    "label": "Store",
    "description": "Sale made through the store checkout"
  },
  "original_amount": {
    "amount": 9900,
    "currency": "USD",
    "formatted": "$99.00"
  },
  "amount": {
    "amount": 7920,
    "currency": "USD",
    "formatted": "$79.20"
  },
  "discount_amount": {
    "amount": 1980,
    "currency": "USD",
    "formatted": "$19.80"
  },
  "settlement": {
    "amount": {
      "amount": 7524,
      "currency": "USD",
      "formatted": "$75.24"
    },
    "due_at": "2025-02-01T00:00:00+00:00",
    "done_at": "2025-02-01T10:15:00+00:00",
    "service_fee": {
      "amount": 396,
      "currency": "USD",
      "formatted": "$3.96"
    }
  },
  "download": {
    "total": 3,
    "last_at": "2025-01-20T14:30:00+00:00"
  },
  "payment": {
    "status": "success",
    "transaction_id": "txn_moneroo_xyz789",
    "gateway": "moneroo",
    "method": {
      "id": "card",
      "name": "Credit/Debit Card"
    },
    "amount": {
      "amount": 7920,
      "currency": "USD",
      "formatted": "$79.20"
    },
    "fee": {
      "amount": 237,
      "currency": "USD",
      "formatted": "$2.37"
    },
    "exchange_rate": {
      "amount": 1.0,
      "currency": "USD",
      "formatted": "$1.00"
    }
  },
  "shipping": {
    "address": "123 Main Street",
    "city": "New York",
    "state": "NY",
    "country": {
      "code": "US",
      "name": "United States"
    },
    "zip": "10001"
  },
  "context": {
    "ip_address": "203.0.113.42",
    "country": {
      "code": "US",
      "name": "United States"
    },
    "device_type": "desktop",
    "locale": "en_US"
  },
  "store": {
    "id": "str_xyz789",
    "name": "My Digital Store",
    "slug": "my-digital-store"
  },
  "product": {
    "id": "prd_def456",
    "name": "Premium Course",
    "type": "course"
  },
  "customer": {
    "id": "cus_ghi789",
    "email": "[email protected]",
    "name": "John Doe"
  },
  "discount": {
    "id": "dis_jkl012",
    "code": "SAVE20",
    "type": "percentage"
  },
  "rate": {
    "id": "rat_mno345",
    "value": 5,
    "comment": "Excellent product!"
  },
  "campaign": {
    "id": "cmp_pqr678",
    "name": "Black Friday Campaign"
  },
  "post_purchase": {
    "files": [
      {
        "id": "fil_stu901",
        "name": "course-materials.zip",
        "download_url": "https://cdn.chariow.com/..."
      }
    ],
    "licences": [],
    "instructions": "Thank you for your purchase!"
  },
  "created_at": "2025-01-15T10:30:00+00:00",
  "completed_at": "2025-01-15T10:32:00+00:00"
}

Statuts des ventes

Les ventes peuvent avoir les statuts suivants tout au long de leur cycle de vie :
StatutDescription
awaiting_paymentPaiement initié, en attente de confirmation du paiement
completedPaiement réussi, accès au produit accordé au client
failedPaiement échoué ou refusé
abandonedClient a abandonné le processus de paiement
settledFonds réglés sur le compte du marchand

Statuts de paiement

Le statut de paiement suit la transaction de la passerelle de paiement séparément du statut de vente :
Statut de paiementDescription
initiatedLe processus de paiement a démarré
pendingLe paiement est en cours de traitement par la passerelle
successLe paiement a été traité avec succès
failedLe paiement a échoué ou a été refusé
cancelledLe paiement a été annulé par le client ou le système

Canaux de vente

Les ventes peuvent provenir de différents canaux :
CanalDescription
storeVente directe via le paiement de votre boutique
affiliateVente effectuée via un lien d’affiliation
discoverVente provenant de la marketplace Chariow Discover
widgetVente via un widget de paiement intégré
apiVente créée via l’API publique

Lister les ventes

Récupérez toutes les ventes de votre boutique :
curl -X GET "https://api.chariow.com/v1/sales" \
  -H "Authorization: Bearer sk_live_your_api_key"

Paramètres de requête

Vous pouvez filtrer et paginer les ventes en utilisant les paramètres suivants :
ParamètreTypeDescription
per_pageintegerNombre de ventes par page (max 100, défaut 15)
cursorstringCurseur pour la pagination (depuis next_cursor ou prev_cursor)
statusstringFiltrer par statut de vente (awaiting_payment, completed, failed, abandoned, settled)
customer_idstringFiltrer par ID public du client (ex : cus_abc123xyz)
searchstringRechercher par référence de vente ou email du client
start_datestringFiltrer les ventes à partir de cette date (format : Y-m-d, ex : 2025-01-01)
end_datestringFiltrer les ventes jusqu’à cette date (format : Y-m-d, ex : 2025-01-31)

Filtrer par statut

# Obtenir uniquement les ventes terminées
curl -X GET "https://api.chariow.com/v1/sales?status=completed" \
  -H "Authorization: Bearer sk_live_your_api_key"

Filtrer par client

# Obtenir les ventes d'un client spécifique
curl -X GET "https://api.chariow.com/v1/sales?customer_id=cus_abc123" \
  -H "Authorization: Bearer sk_live_your_api_key"

Filtrer par plage de dates

# Obtenir les ventes de janvier 2025
curl -X GET "https://api.chariow.com/v1/sales?start_date=2025-01-01&end_date=2025-01-31" \
  -H "Authorization: Bearer sk_live_your_api_key"

Rechercher des ventes

# Rechercher par email du client ou référence de vente
curl -X GET "https://api.chariow.com/v1/[email protected]" \
  -H "Authorization: Bearer sk_live_your_api_key"

Pagination

L’API utilise une pagination basée sur les curseurs. Utilisez le next_cursor de la réponse pour récupérer la page suivante :
let cursor = null;
let allSales = [];

do {
  const url = cursor
    ? `https://api.chariow.com/v1/sales?cursor=${cursor}`
    : 'https://api.chariow.com/v1/sales';

  const response = await fetch(url, {
    headers: { 'Authorization': 'Bearer sk_live_your_api_key' }
  });

  const result = await response.json();
  allSales = [...allSales, ...result.data];
  cursor = result.pagination.next_cursor;
} while (cursor);

Exemple de réponse

{
  "data": [
    {
      "id": "sal_abc123xyz",
      "status": "completed",
      "original_amount": {
        "amount": 9900,
        "currency": "USD",
        "formatted": "$99.00"
      },
      "amount": {
        "amount": 7920,
        "currency": "USD",
        "formatted": "$79.20"
      },
      "discount_amount": {
        "amount": 1980,
        "currency": "USD",
        "formatted": "$19.80"
      },
      "payment": {
        "status": "success",
        "amount": {
          "amount": 7920,
          "currency": "USD",
          "formatted": "$79.20"
        }
      },
      "customer": {
        "id": "cus_xyz789",
        "email": "[email protected]",
        "name": "John Doe"
      },
      "product": {
        "id": "prd_def456",
        "name": "Premium Course",
        "type": "course"
      },
      "store": {
        "id": "str_ghi789",
        "name": "My Digital Store"
      },
      "discount": {
        "id": "dis_jkl012",
        "code": "SAVE20"
      }
    }
  ],
  "pagination": {
    "next_cursor": "eyJpZCI6NTB9",
    "prev_cursor": null,
    "has_more": true
  }
}

Obtenir une vente spécifique

Récupérez une vente spécifique par son ID public :
curl -X GET "https://api.chariow.com/v1/sales/sal_abc123" \
  -H "Authorization: Bearer sk_live_your_api_key"

Accès post-achat

Les ventes terminées incluent des données d’accès post-achat contenant les éléments livrables en fonction du type de produit :
{
  "post_purchase": {
    "files": [
      {
        "id": "fil_abc123",
        "name": "course-materials.zip",
        "size": 15728640,
        "type": "application/zip",
        "download_url": "https://cdn.chariow.com/downloads/...",
        "expires_at": "2025-01-20T10:30:00+00:00"
      }
    ],
    "licences": [
      {
        "id": "lic_def456",
        "licence_key": "ABC-123-XYZ-789",
        "status": "active",
        "activations": 2,
        "max_activations": 5,
        "expires_at": null
      }
    ],
    "instructions": "Merci pour votre achat ! Voici comment démarrer avec vos supports de cours..."
  }
}

Téléchargements de fichiers

Pour les produits avec des fichiers téléchargeables, le tableau files contient :
  • id - Identifiant unique du fichier
  • name - Nom du fichier original
  • size - Taille du fichier en octets
  • type - Type MIME
  • download_url - URL de téléchargement signée temporaire
  • expires_at - Date d’expiration du lien de téléchargement

Licences

Pour les produits avec des clés de licence, le tableau licences contient :
  • id - Identifiant unique de la licence
  • licence_key - La chaîne de la clé de licence
  • status - Statut de la licence (active, inactive, expired)
  • activations - Nombre actuel d’activations
  • max_activations - Nombre maximum d’activations autorisées
  • expires_at - Date d’expiration (null pour les licences à vie)

Instructions personnalisées

Le champ instructions contient les instructions post-achat personnalisées configurées pour le produit.

Cas d’utilisation courants

Calculez le revenu total pour une période spécifique :
const response = await fetch(
  'https://api.chariow.com/v1/sales?status=completed&start_date=2025-01-01&end_date=2025-01-31',
  { headers: { 'Authorization': 'Bearer sk_live_your_api_key' }}
);

const result = await response.json();
const totalRevenue = result.data.reduce(
  (sum, sale) => sum + sale.amount.amount,
  0
);

console.log(`Revenu total : ${totalRevenue / 100}`); // Convertir depuis la plus petite unité
Traitez les commandes nécessitant une expédition physique :
// Obtenir les ventes terminées avec adresses d'expédition
const response = await fetch(
  'https://api.chariow.com/v1/sales?status=completed',
  { headers: { 'Authorization': 'Bearer sk_live_your_api_key' }}
);

const result = await response.json();
const ordersToShip = result.data.filter(
  sale => sale.shipping && sale.shipping.address
);

// Traiter chaque commande
ordersToShip.forEach(sale => {
  console.log(`Expédier à : ${sale.shipping.address}, ${sale.shipping.city}`);
});
Consultez l’historique d’achat complet d’un client :
curl -X GET "https://api.chariow.com/v1/sales?customer_id=cus_abc123xyz" \
  -H "Authorization: Bearer sk_live_your_api_key"
Cela renvoie toutes les ventes pour le client spécifié, incluant :
  • Dates et montants d’achat
  • Produits achetés
  • Remises appliquées
  • Statut d’accès actuel
Identifiez et traitez les paiements échoués :
const response = await fetch(
  'https://api.chariow.com/v1/sales?status=failed',
  { headers: { 'Authorization': 'Bearer sk_live_your_api_key' }}
);

const result = await response.json();

// Examiner les ventes échouées et les détails d'erreur de paiement
result.data.forEach(sale => {
  if (sale.payment.failure_error) {
    console.log(`Vente échouée ${sale.id} : ${sale.payment.failure_error.message}`);
    // Agir en fonction du code d'erreur
  }
});
Analysez l’utilisation et l’efficacité des codes de remise :
const response = await fetch(
  'https://api.chariow.com/v1/sales?status=completed&start_date=2025-01-01',
  { headers: { 'Authorization': 'Bearer sk_live_your_api_key' }}
);

const result = await response.json();

// Regrouper par code de remise
const discountStats = result.data
  .filter(sale => sale.discount)
  .reduce((acc, sale) => {
    const code = sale.discount.code;
    if (!acc[code]) {
      acc[code] = { uses: 0, revenue: 0, discountGiven: 0 };
    }
    acc[code].uses++;
    acc[code].revenue += sale.amount.amount;
    acc[code].discountGiven += sale.discount_amount.amount;
    return acc;
  }, {});

console.log(discountStats);

Informations de règlement

Pour les ventes terminées, l’objet settlement fournit des détails sur les paiements au marchand :
{
  "settlement": {
    "amount": {
      "amount": 7524,
      "currency": "USD",
      "formatted": "$75.24"
    },
    "due_at": "2025-02-01T00:00:00+00:00",
    "done_at": "2025-02-01T10:15:00+00:00",
    "service_fee": {
      "amount": 396,
      "currency": "USD",
      "formatted": "$3.96"
    }
  }
}
  • amount - Montant net à payer au marchand (après frais)
  • due_at - Date prévue du règlement
  • done_at - Date de réalisation du règlement (null si en attente)
  • service_fee - Frais de service de la plateforme Chariow

Suivi des téléchargements

Surveillez l’activité de téléchargement des clients :
{
  "download": {
    "total": 3,
    "last_at": "2025-01-20T14:30:00+00:00"
  }
}
Cela vous permet de :
  • Suivre l’engagement avec le produit
  • Identifier les clients qui n’ont pas accédé à leur achat
  • Surveiller les modèles de téléchargement inhabituels

Ressources associées