|
| 1 | +# eBay — configuration OAuth et mise en ligne (GoupixDex) |
| 2 | + |
| 3 | +Ce document décrit comment préparer un compte [eBay Developers Program](https://developer.ebay.com/), configurer l’écran **Your eBay Sign-in Settings** (RuName / URLs de redirection), renseigner les variables d’environnement de l’API GoupixDex, puis connecter un vendeur depuis l’interface **Paramètres → Places de marché**. |
| 4 | + |
| 5 | +## 1. Compte développeur et clés |
| 6 | + |
| 7 | +1. Créez un compte sur [developer.ebay.com](https://developer.ebay.com/) et une **Application Keyset** (sandbox pour les tests, production quand vous êtes prêt). |
| 8 | +2. Notez l’**App ID (Client ID)** et le **Cert ID (Client Secret)** — ce ne sont pas les jetons d’accès API ; ils servent uniquement à l’échange OAuth côté serveur. |
| 9 | + |
| 10 | +## 2. « Your eBay Sign-in Settings » (RuName) |
| 11 | + |
| 12 | +Dans le portail développeur, configurez la page OAuth : |
| 13 | + |
| 14 | +| Champ | Rôle | |
| 15 | +|--------|------| |
| 16 | +| **Display Title** | Nom affiché sur la page de consentement (ex. `GoupixDex`). | |
| 17 | +| **Your privacy policy URL** | URL accessible d’une politique de confidentialité (exigence programme développeur). | |
| 18 | +| **Your auth accepted URL** | **URL de callback OAuth** : eBay y redirige avec `?code=...&state=...` après accord. Elle doit être **identique** à la valeur `EBAY_REDIRECT_URI` / à l’URL utilisée dans l’app. Exemple : `https://votre-domaine.fr/settings/marketplaces` ou en local `http://localhost:3000/settings/marketplaces` (sandbox accepte souvent l’HTTP en dev). | |
| 19 | +| **Your auth declined URL** | Page si l’utilisateur refuse (ex. retour dashboard ou message simple). | |
| 20 | + |
| 21 | +**Important :** pas de différence de slash final, de `http` vs `https`, ou de host (`localhost` vs `127.0.0.1`) entre le portail eBay, `EBAY_REDIRECT_URI` et l’URL réellement ouverte dans le navigateur. |
| 22 | + |
| 23 | +## 3. Scopes utilisés par GoupixDex |
| 24 | + |
| 25 | +L’API demande les scopes suivants (déjà codés côté backend) : |
| 26 | + |
| 27 | +- `https://api.ebay.com/oauth/api_scope/sell.inventory` — création d’annonces (Inventory API). |
| 28 | +- `https://api.ebay.com/oauth/api_scope/sell.account` — lecture des politiques d’expédition, paiement et retours. |
| 29 | + |
| 30 | +## 4. Variables d’environnement (API) |
| 31 | + |
| 32 | +Ajoutez dans `api/.env` (voir `api/.env.example`) : |
| 33 | + |
| 34 | +| Variable | Description | |
| 35 | +|----------|-------------| |
| 36 | +| `EBAY_CLIENT_ID` | App ID (Client ID) — **sandbox ou prod** selon `EBAY_USE_SANDBOX`. | |
| 37 | +| `EBAY_CLIENT_SECRET` | Cert ID (Client Secret). | |
| 38 | +| `EBAY_REDIRECT_URI` | **Exactement** la même URL que *Your auth accepted URL* (ex. `https://.../settings/marketplaces`). | |
| 39 | +| `EBAY_USE_SANDBOX` | `true` pour `auth.sandbox.ebay.com` / `api.sandbox.ebay.com`, `false` pour la production. | |
| 40 | + |
| 41 | +Redémarrez l’API après modification. |
| 42 | + |
| 43 | +## 5. Flux dans l’application web |
| 44 | + |
| 45 | +1. **Paramètres → Places de marché** : activez **eBay**, enregistrez si besoin. |
| 46 | +2. Cliquez **Se connecter à eBay** : redirection vers la page de consentement eBay. |
| 47 | +3. Après acceptation, eBay renvoie vers `/settings/marketplaces?code=...&state=...` : le front envoie le `code` au backend (`POST /ebay/oauth/exchange`), qui stocke les jetons (chiffrés) sur l’utilisateur. |
| 48 | +4. Renseignez **l’ID de catégorie** eBay, la **clé d’emplacement** (`merchantLocationKey`) et les **trois politiques** (expédition, paiement, retours). Vous pouvez utiliser **Importer emplacement & politiques** si votre compte n’en a qu’une de chaque (sinon copiez les IDs depuis la réponse API ou l’interface eBay). |
| 49 | + |
| 50 | +Sans ces champs, la publication est ignorée avec un message explicite. |
| 51 | + |
| 52 | +## 6. Images et sandbox |
| 53 | + |
| 54 | +- Les images d’annonce doivent être en **HTTPS** (ex. URLs Supabase) — exigence eBay Inventory API. |
| 55 | +- En **sandbox**, utilisez des comptes / annonces de test ; les IDs de catégories et politiques doivent exister pour le marketplace choisi (ex. `EBAY_FR`). |
| 56 | + |
| 57 | +## 7. Références officielles |
| 58 | + |
| 59 | +- [Authorization code grant](https://developer.ebay.com/api-docs/static/oauth-authorization-code-grant.html) |
| 60 | +- [Getting user consent](https://developer.ebay.com/api-docs/static/oauth-consent-request.html) |
| 61 | +- [Exchanging the authorization code](https://developer.ebay.com/api-docs/static/oauth-auth-code-grant-request.html) |
| 62 | +- [Inventory API — createOrReplaceInventoryItem](https://developer.ebay.com/api-docs/sell/inventory/resources/inventory_item/methods/createOrReplaceInventoryItem) |
| 63 | +- [createOffer / publishOffer](https://developer.ebay.com/api-docs/sell/inventory/resources/offer/methods/createOffer) |
| 64 | + |
| 65 | +## 8. Dépannage rapide |
| 66 | + |
| 67 | +- **Erreur à l’échange de code** : `redirect_uri` différent de celui enregistré chez eBay, ou `code` déjà consommé / expiré (les codes sont à usage unique et très courts). |
| 68 | +- **Erreur à la publication** : catégorie incorrecte, politiques incompatibles avec le marketplace, ou **descripteurs d’état** obligatoires pour certaines catégories cartes — consultez les messages d’erreur dans les logs API (`ebay_body`). |
0 commit comments