> For the complete documentation index, see [llms.txt](https://lunaris-1.gitbook.io/untitled/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lunaris-1.gitbook.io/untitled/script/ls-vipshop/lier-a-tebex.md).

# Lier à Tebex

Tu peux vendre des **coins** (ou autres packs) sur **Tebex** : quand un joueur achète, Tebex envoie une commande à ton serveur FiveM, et le script crédite les coins sur le **portefeuille** du joueur. Le script utilise l’**ID boutique** de chaque joueur (ex. `OC-12345`), affiché dans la boutique en jeu. Tebex ne connaît pas ce champ par défaut : il faut créer une **variable personnalisée** et l’utiliser dans la commande.

#### Commande console

Une seule commande est fournie :

```
ls_vipshop_tebex_addcoins <shop_id> <amount> <transaction>
```

| Paramètre       | Description                                                                                   |
| --------------- | --------------------------------------------------------------------------------------------- |
| **shop\_id**    | ID boutique du joueur (ex. `OC-12345`), tel qu’affiché dans la boutique en jeu (F10).         |
| **amount**      | Nombre de coins à créditer.                                                                   |
| **transaction** | ID unique du paiement (pour éviter les doublons). Tebex fournit une variable `{transaction}`. |

Aucune modification du script n’est nécessaire : la commande est enregistrée côté serveur. Il faut seulement configurer Tebex et ton **server.cfg**.

#### 1. Créer une variable personnalisée sur Tebex

1. **Panneau Tebex** → **Paramètres (Settings)** → **Variables (Custom Variables)**.
2. **Créer une variable** :
   * **Type** : **Username** (recommandé), pour accepter lettres, chiffres et **tiret** (ex. `OC-12345`). Éviter « Alphanumerique » qui peut refuser le tiret.
   * **Identifiant** : par ex. `shop_id`. Ce nom sera utilisé dans la commande sous la forme `{shop_id}`.
   * **Description** : texte affiché au checkout, ex. *« Ton ID boutique (ouvre la boutique en jeu avec F10 et recopie l’ID affiché, ex. OC-12345) »*.
3. Enregistrer.

#### 2. Configurer le package (ex. « 500 coins »)

1. **Packages** (ou **Boutique**) → ouvrir ou créer le package (ex. 500 coins).
2. Dans **Commande(s)** (commandes exécutées à l’achat), ajouter par exemple :

   ```
   ls_vipshop_tebex_addcoins {shop_id} 500 {transaction}
   ```

   * `{shop_id}` = valeur saisie par le joueur (son ID boutique).
   * `500` = nombre de coins à créditer (adapter par package).
   * `{transaction}` = ID unique du paiement (variable Tebex).
3. Dans **Variables** du package, **cocher la variable** créée (ex. `shop_id`) pour qu’elle soit demandée au checkout.
4. Enregistrer.

Répéter pour chaque montant (ex. 1000 coins → `ls_vipshop_tebex_addcoins {shop_id} 1000 {transaction}`).

#### 3. Côté serveur (server.cfg)

Ajouter la clé secrète Tebex pour ton serveur FiveM :

```cfg
sv_tebexSecret "TA_CLE_SECRETE"
```

La clé se récupère dans le **Panneau Tebex** → **Game Servers** → ton serveur. Sans cette ligne, Tebex ne peut pas envoyer les commandes au serveur.

#### 4. Côté joueur

Indiquer aux joueurs :

1. En jeu, ouvrir la **boutique** (touche **F10**).
2. Noter l’**ID boutique** affiché (ex. **OC-12345**).
3. Lors de l’achat sur la boutique Tebex, quand on demande l’**ID boutique**, saisir exactement cet ID (sans espace).

Si le joueur n’a jamais ouvert la boutique (F10), aucun portefeuille n’existe pour lui : la commande ne pourra pas créditer. Il doit ouvrir la boutique au moins une fois avant d’acheter.

#### 5. Webhook Discord (optionnel)

Les exécutions de la commande Tebex peuvent être loguées sur Discord. Dans **config.lua**, renseigner `Config.Webhooks.tebex` avec l’URL du webhook. Les messages utiliseront les textes définis dans **locales.lua** (ex. « Tebex: ajout de coins »).

#### 6. Dépannage Tebex

| Problème                                                               | Vérification                                                                                                                                                                                                      |
| ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Aucune ligne dans la console après un achat**                        | Vérifier `sv_tebexSecret` dans **server.cfg**, redémarrer le serveur. Vérifier que le package a bien une **commande** avec `ls_vipshop_tebex_addcoins` et que la variable **shop\_id** est cochée sur le package. |
| **Console affiche `shop_id={shop_id}` ou `transaction={transaction}`** | Les variables Tebex ne sont pas remplacées : vérifier les noms exacts `{shop_id}` et `{transaction}` dans la commande et que la variable personnalisée est bien attachée au package.                              |
| **« Shop ID introuvable »**                                            | Le joueur n’a jamais ouvert la boutique (F10) avec ce personnage, ou faute de frappe sur l’ID. L’ID doit être strictement celui affiché en jeu.                                                                   |
| **« Transaction déjà traitée »**                                       | Normal : la même vente ne crédite qu’une fois. Si le joueur n’a rien reçu, vérifier les logs (montant, shop\_id) pour un premier crédit réussi.                                                                   |

**Test manuel** (console serveur FiveM) :

```
ls_vipshop_tebex_addcoins OC-12345 100 test_manual_123
```

Remplacer `OC-12345` par un **shop\_id** réel (présent en base dans `ls_vipshop_wallet`). Si les coins s’ajoutent et sont visibles en jeu après avoir rouvert la boutique (F10), le script fonctionne ; le blocage vient alors de Tebex (commande non envoyée ou variables non remplacées).

***
