88API88API
User GuideAI ApplicationsAPI ReferenceHelp & Support

Module de gestion des codes de remboursement

Description des fonctionnalités

Le préfixe de l'API est uniformément http(s)://<your-domain>

HTTPS doit être utilisé dans les environnements de production pour sécuriser les jetons d'authentification. HTTP n'est recommandé que pour les environnements de développement.

Un système de code de remboursement exclusif à l'administrateur. Prend en charge des fonctionnalités telles que la génération par lots, la gestion des statuts et le filtrage de recherche. Inclut une fonctionnalité de maintenance pour nettoyer automatiquement les codes de remboursement invalides. Principalement utilisé pour les activités promotionnelles et les incitations des utilisateurs.

🔐 Authentification de l'administrateur

Obtenez la liste des codes de remboursement

  • Nom de l'interface: Obtenez la liste des codes de remboursement
  • Méthode HTTP: GET
  • Chemin: /api/redemption/
  • Exigence d'authentification: Administrateur
  • Description de la fonction: Récupération paginée des informations de liste pour tous les codes de remboursement du système

💡 Exemple de demande:

const response = await fetch('/api/redemption/?p=1&page_size=20', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Exemple de réponse réussie:

{
  "success": true,
  "message": "",
  "data": {
    "items": [
      {
        "id": 1,
        "name": "New Year event redemption code",
        "key": "abc123def456",
        "status": 1,
        "quota": 100000,
        "created_time": 1640908800,
        "redeemed_time": 0,
        "expired_time": 1640995200,
        "used_user_id": 0
      }
    ],
    "total": 50,
    "page": 1,
    "page_size": 20
  }
}

❗ Exemple de réponse échouée:

{
  "success": false,
  "message": "Failed to retrieve redemption code list"
}

🧾 Description du champ:

  • p (Numéro): Numéro de page, par défaut 1
  • page_size (Nombre) : éléments par page, par défaut 20
  • items (Array): Liste des informations sur le code de remboursement
  • total (Nombre): Nombre total de codes de remboursement
  • page (Numéro): Numéro de la page actuelle
  • page_size (Nombre) : Articles par page

Rechercher des codes de remboursement

  • Nom de l'interface: Rechercher des codes de remboursement
  • Méthode HTTP: GET
  • Chemin: /api/redemption/search
  • Exigence d'authentification: Administrateur
  • Description de la fonction: recherche de codes de remboursement en fonction de mots-clés, prend en charge la recherche par identifiant et par nom

💡 Exemple de demande:

const response = await fetch('/api/redemption/search?keyword=new year&p=1&page_size=20', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Exemple de réponse réussie:

{
  "success": true,
  "message": "",
  "data": {
    "items": [
      {
        "id": 1,
        "name": "New Year event redemption code",
        "key": "abc123def456",
        "status": 1,
        "quota": 100000
      }
    ],
    "total": 1,
    "page": 1,
    "page_size": 20
  }
}

❗ Exemple de réponse échouée:

{
  "success": false,
  "message": "Failed to search for redemption codes"
}

🧾 Description du champ:

  • keyword (Chaîne): mot-clé de recherche, peut correspondre au nom du code de remboursement ou à l'ID
  • p (Numéro): Numéro de page, par défaut 1
  • page_size (Nombre) : éléments par page, par défaut 20

Obtenez un code de remboursement unique

  • Nom de l'interface: Obtenez un code de remboursement unique
  • Méthode HTTP: GET
  • Chemin: /api/redemption/:id
  • Exigence d'authentification: Administrateur
  • Description de la fonction: récupère des informations détaillées pour un code de remboursement spécifié

💡 Exemple de demande:

const response = await fetch('/api/redemption/123', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Exemple de réponse réussie:

{
  "success": true,
  "message": "",
  "data": {
    "id": 123,
    "name": "New Year event redemption code",
    "key": "abc123def456",
    "status": 1,
    "quota": 100000,
    "created_time": 1640908800,
    "redeemed_time": 0,
    "expired_time": 1640995200,
    "used_user_id": 0,
    "user_id": 1
  }
}

❗ Exemple de réponse échouée:

{
  "success": false,
  "message": "Redemption code does not exist"
}

🧾 Description du champ:

id (Numéro): ID du code de remboursement, transmis via le chemin URL

Créer un code de remboursement

  • Nom de l'interface: Créer un code de remboursement
  • Méthode HTTP: POST
  • Chemin: /api/redemption/
  • Exigence d'authentification: Administrateur
  • Description de la fonction: création par lots de codes de remboursement, prend en charge la création de plusieurs codes à la fois

💡 Exemple de demande:

const response = await fetch('/api/redemption/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    name: "Spring Festival event redemption code",
    count: 10,
    quota: 100000,
    expired_time: 1640995200
  })
});
const data = await response.json();

✅ Exemple de réponse réussie:

{
  "success": true,
  "message": "",
  "data": [
    "abc123def456",
    "def456ghi789",
    "ghi789jkl012"
  ]
}

❗ Exemple de réponse échouée:

{
  "success": false,
  "message": "Redemption code name length must be between 1 and 20"
}

🧾 Description du champ:

  • name (String) : Nom du code de remboursement, la longueur doit être comprise entre 1 et 20 caractères
  • count (Nombre): Nombre de codes de réduction à créer, doit être supérieur à 0 et ne pas dépasser 100
  • quota (Nombre): Montant du quota pour chaque code de remboursement
  • expired_time (Nombre): horodatage d'expiration, 0 signifie n'expire jamais
  • data (Array): Liste des codes de remboursement créés avec succès

Mettre à jour le code de remboursement

  • Nom de l'interface: mettre à jour le code de remboursement
  • Méthode HTTP: PUT
  • Chemin: /api/redemption/
  • Exigence d'authentification: Administrateur
  • Description de la fonction: met à jour les informations du code d'échange, prend en charge la mise à jour du statut uniquement ou une mise à jour complète

💡 Exemple de demande (mise à jour complète):

const response = await fetch('/api/redemption/', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    id: 123,
    name: "Updated redemption code name",
    quota: 200000,
    expired_time: 1672531200
  })
});
const data = await response.json();

💡 Exemple de demande (mise à jour du statut uniquement):

const response = await fetch('/api/redemption/?status_only=true', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    id: 123,
    status: 2
  })
});
const data = await response.json();

✅ Exemple de réponse réussie:

{
  "success": true,
  "message": "",
  "data": {
    "id": 123,
    "name": "Updated redemption code name",
    "status": 1,
    "quota": 200000,
    "expired_time": 1672531200
  }
}

❗ Exemple de réponse échouée:

{
  "success": false,
  "message": "Expiration time cannot be earlier than the current time"
}

🧾 Description du champ:

  • id (Numéro): ID du code de remboursement, obligatoire
  • status_only (Paramètre de requête) : s'il faut mettre à jour uniquement l'état
  • name (String): nom du code de remboursement, facultatif
  • quota (Nombre) : Montant du quota, optionnel
  • expired_time (Numéro): Horodatage d'expiration, en option
  • status (Numéro): Statut du code de remboursement, facultatif

Supprimer les codes de remboursement invalides

  • Nom de l'interface: Supprimer les codes de remboursement invalides
  • Méthode HTTP: SUPPRIMER
  • Chemin: /api/redemption/invalid
  • Exigence d'authentification: Administrateur
  • Description de la fonction: suppression par lots des codes de remboursement utilisés, désactivés ou expirés

💡 Exemple de demande:

const response = await fetch('/api/redemption/invalid', {
  method: 'DELETE',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Exemple de réponse réussie:

{
  "success": true,
  "message": "",
  "data": 15
}

❗ Exemple de réponse échouée:

{
  "success": false,
  "message": "Deletion failed"
}

🧾 Description du champ:

  • Aucun paramètre de requête
  • data (Numéro): Nombre de codes de remboursement supprimés

Supprimer le code de remboursement

  • Nom de l'interface: Supprimer le code de remboursement
  • Méthode HTTP: SUPPRIMER
  • Chemin: /api/redemption/:id
  • Exigence d'authentification: Administrateur
  • Description de la fonction: Supprime le code de remboursement spécifié

💡 Exemple de demande:

const response = await fetch('/api/redemption/123', {
  method: 'DELETE',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Exemple de réponse réussie:

{
  "success": true,
  "message": ""
}

❗ Exemple de réponse échouée:

{
  "success": false,
  "message": "Redemption code does not exist"
}

🧾 Description du champ:

id (Numéro): ID du code de remboursement, transmis via le chemin URL